/* wochenplaner.css - ausgelagert aus wochenplaner.html am 2026-04-20 */

*{box-sizing:border-box;margin:0;padding:0}
:root{
  /* v9.0 Redesign - GitHub Dark als Default. Light-Variante unter [data-theme="light"]. */
  /* Legacy-Variablen (Alt-Code nutzt diese weiter - sind jetzt auf GitHub-Palette gemappt) */
  --navy:#58A6FF;
  --accent:#58A6FF;
  --gold:#D29922;
  --success:#3FB950;
  --warn:#D29922;
  --error:#F85149;
  --bg:#0D1117;
  --card:#161B22;
  --text:#F0F6FC;
  --muted:#8B949E;
  --border:#30363D;
  --header-h:52px;
  --surface-0:#0D1117;
  --surface-1:#161B22;
  --surface-tag:#161B22;
  --surface-2:#1C2128;
  --surface-3:#21262D;
  --line:rgba(240,246,252,.08);
  --line-strong:rgba(240,246,252,.16);
  --t-primary:#F0F6FC;
  --t-secondary:#8B949E;
  --t-link:#58A6FF;
  /* Neue GitHub-Palette (v9) */
  --gh-bg:#0D1117;
  --gh-panel:#161B22;
  --gh-card:#1C2128;
  --gh-card-hover:#262C36;
  --gh-border:#30363D;
  --gh-border-subtle:#21262D;
  --gh-text:#F0F6FC;
  --gh-muted:#8B949E;
  --gh-hover:#1C2128;
  --gh-accent:#58A6FF;
  --gh-accent-hover:#79B8FF;
  --gh-accent-soft:rgba(88,166,255,.18);
  --gh-accent-fg:#FFFFFF;
  --gh-success:#3FB950;
  --gh-success-bg:rgba(63,185,80,.12);
  --gh-success-border:rgba(63,185,80,.35);
  --gh-warn:#D29922;
  --gh-warn-bg:rgba(210,153,34,.12);
  --gh-warn-border:rgba(210,153,34,.35);
  --gh-danger:#F85149;
  --gh-danger-bg:rgba(248,81,73,.12);
  --gh-danger-border:rgba(248,81,73,.35);
  --gh-input-bg:#0D1117;
  --gh-btn-hover:#21262D;
  --gh-badge-neutral-bg:#21262D;
  --gh-badge-neutral-fg:#C9D1D9;
  --gh-note-bg:rgba(210,153,34,.10);
  --gh-note-fg:#E3B341;
  --gh-note-accent:#D29922;
}

:root[data-theme="light"]{
  /* v9.2: Soft Gray — deutlich gedaempft. "Dimmed" (v9.1) war zu subtil.
     Jetzt: BG `#DDE2E8` (spuerbar grau, nie strahlend),
     Panel `#CFD5DC` (Header/Sidebar dunkler — klar abgegrenzt),
     Card `#E9EDF2` (heller als BG — Cards heben sich ab). */
  --navy:#0969DA;
  --accent:#0969DA;
  --gold:#9A6700;
  --success:#1A7F37;
  --warn:#9A6700;
  --error:#CF222E;
  --bg:#DDE2E8;
  --card:#E9EDF2;
  --text:#1F2328;
  --muted:#5A6069;
  --border:#B5BEC7;
  --surface-0:#DDE2E8;
  --surface-1:#CFD5DC;
  --surface-tag:#E9EDF2;
  --surface-2:#E9EDF2;
  --surface-3:#C5CCD4;
  --line:rgba(31,35,40,.12);
  --line-strong:rgba(31,35,40,.22);
  --t-primary:#1F2328;
  --t-secondary:#5A6069;
  --t-link:#0969DA;
  --gh-bg:#DDE2E8;
  --gh-panel:#CFD5DC;
  --gh-card:#E9EDF2;
  --gh-card-hover:#DFE4EB;
  --gh-border:#B5BEC7;
  --gh-border-subtle:#C0C8D0;
  --gh-text:#1F2328;
  --gh-muted:#5A6069;
  --gh-hover:#D3D9E0;
  --gh-accent:#0969DA;
  --gh-accent-hover:#218BFF;
  --gh-accent-soft:rgba(9,105,218,.18);
  --gh-accent-fg:#FFFFFF;
  --gh-success:#1A7F37;
  --gh-success-bg:rgba(26,127,55,.14);
  --gh-success-border:rgba(26,127,55,.40);
  --gh-warn:#9A6700;
  --gh-warn-bg:rgba(154,103,0,.14);
  --gh-warn-border:rgba(154,103,0,.40);
  --gh-danger:#CF222E;
  --gh-danger-bg:rgba(207,34,46,.14);
  --gh-danger-border:rgba(207,34,46,.40);
  --gh-input-bg:#E9EDF2;
  --gh-btn-hover:#C5CCD4;
  --gh-badge-neutral-bg:#C5CCD4;
  --gh-badge-neutral-fg:#1F2328;
  --gh-note-bg:rgba(154,103,0,.14);
  --gh-note-fg:#7A5200;
  --gh-note-accent:#9A6700;
}
html,body{font-family:"Segoe UI Variable Text","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,sans-serif;
  background:var(--gh-bg);color:var(--gh-text);overflow-x:hidden;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* Header */
/* v7.5.3: Slim Header - minimal padding, kleine Schrift, dichte Buttons */
#header{background:linear-gradient(135deg,#1F3864 0%,#162d52 100%);color:#fff;
  padding:3px 10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  position:sticky;top:0;z-index:100;box-shadow:0 1px 6px rgba(31,56,100,.3)}
#header-logo{background:rgba(255,255,255,.95);border-radius:4px;padding:1px 4px;display:flex;align-items:center}
#header-logo img{height:22px;display:block}
#header h1{font-size:11px;letter-spacing:1.2px;white-space:nowrap}
#kw-nav{display:flex;align-items:center;gap:3px}
#kw-nav button{background:rgba(255,255,255,.15);border:none;color:#fff;padding:2px 7px;border-radius:3px;cursor:pointer;font-size:11px;font-weight:bold}
#kw-nav button:hover{background:rgba(255,255,255,.3)}
#kw-label{font-size:12px;font-weight:bold;min-width:65px;text-align:center}
/* v7.5.3: Toolbar-Layout 3-spaltig - sehr dicht */
.header-left-tools{display:flex;gap:3px;align-items:center}
.header-actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* Header-Gruppen: visuell abgegrenzt mit subtiler vertikaler Trennlinie zwischen Gruppen */
.hdr-grp{display:flex;gap:3px;align-items:center;position:relative}
.hdr-grp+.hdr-grp{padding-left:10px}
.hdr-grp+.hdr-grp::before{
  content:"";position:absolute;left:0;top:20%;bottom:20%;width:1px;
  background:linear-gradient(180deg, transparent 0%, rgba(255,255,255,.18) 50%, transparent 100%);
}
/* Admin-Gruppe: dezenter visueller Unterschied (leicht abgesetzt) */
.hdr-grp-admin{background:rgba(255,255,255,.03);border-radius:9px;padding:3px 6px 3px 10px}

/* Mehr-Dropdown */
.hdr-grp-more{position:relative}
#hdr-more-btn .hdr-more-caret{font-size:9px;opacity:.7;margin-left:2px;transition:transform .15s}
#hdr-more-wrap.open #hdr-more-btn .hdr-more-caret{transform:rotate(180deg)}
#hdr-more-wrap.open #hdr-more-btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.24)}
.hdr-more-menu{
  display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:900;
  min-width:220px;
  /* Perf: backdrop-filter raus - Background ist ohnehin opak. */
  background:rgba(28,36,58,.97);
  border:1px solid rgba(255,255,255,.16);
  border-radius:12px;
  padding:6px;
  box-shadow:0 18px 48px rgba(0,0,0,.55), 0 1px 0 rgba(255,255,255,.08) inset;
}
#hdr-more-wrap.open .hdr-more-menu{display:block}
.hdr-more-item{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:9px 12px;background:transparent;color:var(--t-primary);
  border:none;border-radius:8px;cursor:pointer;text-align:left;
  transition:background .12s;
}
.hdr-more-item:hover{background:rgba(255,255,255,.10)}
.hdr-more-item .hmi-ic{font-size:16px;flex-shrink:0;width:22px;text-align:center}
.hdr-more-item .hmi-lbl{font-size:13px;font-weight:600;color:var(--t-primary);flex:1}
.hdr-more-item .hmi-sub{font-size:10.5px;color:var(--t-secondary);letter-spacing:.2px}
/* v8.0.4: Logout/Backup sind jetzt direkt in .header-actions - kein eigener Wrapper mehr noetig */
.hbtn{background:var(--accent);border:none;color:#fff;padding:3px 8px;border-radius:4px;cursor:pointer;font-size:10.5px;font-weight:bold;white-space:nowrap;letter-spacing:.15px;line-height:1.3}
.hbtn:hover{opacity:.85}
.hbtn.green{background:var(--success)}.hbtn.orange{background:var(--warn)}.hbtn.red{background:var(--error)}.hbtn.gold{background:var(--gold)}
/* Tool-Buttons - identische Maße wie .hbtn, dezenter Look */
.hbtn-tool{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);color:#fff;
  padding:3px 8px;border-radius:4px;cursor:pointer;font-size:10.5px;font-weight:bold;white-space:nowrap;letter-spacing:.15px;line-height:1.3}
.hbtn-tool:hover{background:rgba(255,255,255,.22)}
.hbtn-tool.danger{background:rgba(198,40,40,.85);border-color:rgba(198,40,40,1)}
.hbtn-tool.danger:hover{background:#C62828}
/* v8.0.4: .hbtn-stack (vertikaler Eck-Stapel) entfernt - Logout/Backup nutzen jetzt die normale .hbtn-Klasse */
#stat-bar{font-size:11px;opacity:.8;display:flex;gap:12px}

/* Layout */
#main-wrap{display:flex;min-height:calc(100vh - var(--header-h))}

/* Sidebar */
#hallen-sidebar{width:215px;min-width:215px;border-right:1px solid var(--border);
  background:var(--card);display:none;flex-direction:column;
  position:sticky;top:var(--header-h);align-self:flex-start;
  max-height:calc(100vh - var(--header-h));overflow-y:auto}
#sidebar-top{padding:8px;border-bottom:1px solid var(--border);background:var(--navy);
  font-size:11px;font-weight:bold;color:#fff;letter-spacing:.5px}
#sidebar-search{width:100%;padding:7px 8px;border:none;border-bottom:1px solid var(--border);
  font-size:12px;outline:none;background:#fafaf8}
#sidebar-search:focus{background:#fff}
#sidebar-frei-btn{margin:6px;padding:6px;width:calc(100% - 12px);background:var(--gold);
  color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:11px;font-weight:bold}
#sidebar-frei-btn:hover{opacity:.85}
#sidebar-list{flex:1;overflow-y:auto;contain:layout paint}
.sb-halle{padding:5px 8px;border-bottom:1px solid var(--border);cursor:grab;
  font-size:10px;display:flex;align-items:center;gap:5px;user-select:none;flex-wrap:wrap}
.sb-halle:hover{background:#f5f3ef}.sb-halle:active{cursor:grabbing}
.sb-halle.sb-geplant{opacity:.4}
.sb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sb-id{font-weight:bold;color:var(--navy);font-size:10px;min-width:32px}
.sb-name{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.sb-kunde{font-size:9px;color:#888;width:100%;padding-left:21px;margin-top:-2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Asset-Marker in Sidebar (Datenblatt/Fotos/Docs Zaehler) */
.sb-assets{display:inline-flex;gap:3px;margin-left:auto;flex-shrink:0}
.sb-asset{font-size:9px;background:#546E7A;color:#fff;padding:1px 4px;border-radius:3px;white-space:nowrap}
#sidebar-controls{border-bottom:1px solid var(--border);background:#fafaf8}
#sidebar-controls select{width:100%;padding:3px 5px;font-size:11px;border:none;border-bottom:1px solid var(--border);background:#fafaf8;outline:none;cursor:pointer}
#sidebar-controls select:focus{background:#fff}
/* v7.4: Wartungs-Chips (Multi-Select statt Dropdown) */
.ws-chips{display:flex;gap:3px;padding:5px 5px;border-bottom:1px solid var(--border);background:#fafaf8;flex-wrap:wrap}
.ws-chip{flex:1;min-width:0;padding:4px 6px;font-size:10px;font-weight:bold;border-radius:12px;
  border:1.5px solid #bbb;background:#fff;color:#555;cursor:pointer;transition:all .1s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-chip:hover{border-color:#666}
/* Allgemeiner Active-Style als Fallback (falls Attribut-Selektor scheitert) */
.ws-chip.active{background:#1F3864;color:#fff;border-color:#1F3864;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}
/* Status-spezifische Farben (Umlaute direkt, damit CSS sie matcht) */
.ws-chip.active[data-ws="Überfällig"]{background:#C62828;color:#fff;border-color:#C62828}
.ws-chip.active[data-ws="Bald fällig"]{background:#F57C00;color:#fff;border-color:#F57C00}
.ws-chip.active[data-ws="Aktuell"]{background:#2E7D32;color:#fff;border-color:#2E7D32}

/* Grid: Trupps nebeneinander, feste Breite, horizontaler Scroll */
#grid-wrap{flex:1;overflow:auto;display:flex;align-items:flex-start;background:var(--bg)}
.trupp-col{flex:0 0 var(--trupp-w,400px);width:var(--trupp-w,400px);
  border-right:1px solid var(--border);display:flex;flex-direction:column;
  background:rgba(255,255,255,.35);align-self:flex-start}
.trupp-col:last-child{border-right:none}
.trupp-header{position:sticky;top:0;z-index:4;
  background:linear-gradient(135deg,#1F3864 0%,#253e6b 100%);color:#fff;
  padding:4px 8px;text-align:left;font-size:11px;font-weight:bold;
  cursor:pointer;letter-spacing:.3px}
.trupp-header .trupp-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.trupp-header .trupp-name{font-size:12px;font-weight:bold;letter-spacing:.4px}
.trupp-header small{display:block;font-weight:normal;opacity:.75;font-size:9px;margin:0;line-height:1.2}
.trupp-header:hover{background:#2a4a80}
/* Legacy-Wrapper (wird nicht mehr ausgegeben, aber CSS fuer eventuelle Altzustaende) */
.trupp-header .trupp-btns{display:flex;gap:4px;justify-content:center;margin-top:1px}
.trupp-route-btn{background:rgba(255,255,255,.2);border:none;color:#fff;font-size:10px;
  padding:2px 8px;border-radius:4px;cursor:pointer;font-weight:bold;white-space:nowrap}
.trupp-route-btn:hover{background:rgba(255,255,255,.35)}

/* Monteur-Namen im Trupp-Header: draggable */
.trupp-bes .bes-mitarbeiter{
  display:inline-block;cursor:grab;padding:1px 6px;border-radius:3px;
  transition:background .12s,transform .08s;
}
.trupp-bes .bes-mitarbeiter:hover{background:rgba(255,255,255,.14)}
.trupp-bes .bes-mitarbeiter:active{cursor:grabbing}
.trupp-bes .bes-mitarbeiter.dragging{opacity:.35;transform:scale(.95)}
.trupp-bes .bes-mitarbeiter.abwesend{text-decoration:line-through;opacity:.55}
.trupp-header.drag-over{box-shadow:inset 0 0 0 2px #8DE08D;background:rgba(141,224,141,.12)}

.day-urlaub-badges{display:flex;flex-wrap:wrap;gap:3px;padding:2px 6px 0;font-size:10px}
.day-url-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:8px;
  font-weight:bold;line-height:1.3;cursor:pointer;white-space:nowrap}
.day-url-badge.art-urlaub{background:rgba(141,224,141,.22);color:#8DE08D;border:1px solid rgba(141,224,141,.4)}
.day-url-badge.art-krank{background:rgba(229,115,115,.22);color:#E57373;border:1px solid rgba(229,115,115,.4)}
.day-url-badge.art-sonder{background:rgba(179,157,219,.22);color:#B39DDB;border:1px solid rgba(179,157,219,.4)}
.day-url-badge.art-fortbildung{background:rgba(255,176,116,.22);color:#FFB074;border:1px solid rgba(255,176,116,.4)}
.day-url-badge:hover{filter:brightness(1.2)}

/* Tage (pro Trupp) */
.day-section{border-bottom:1px solid var(--border);margin-bottom:0}
.day-header{background:linear-gradient(90deg,#F5E8D2 0%,#F8EFDE 100%);
  padding:3px 8px;font-size:10.5px;font-weight:bold;line-height:1.2;
  color:var(--navy);border-top:2px solid var(--gold);border-bottom:1px solid rgba(200,120,10,.55);
  display:flex;justify-content:space-between;align-items:center;letter-spacing:.3px}
/* v8.0.7: Feiertag-Hinweis im Wochenplaner day-header */
.day-header.is-feiertag{background:linear-gradient(90deg,#FFD2D2 0%,#FFE6E0 100%);border-top-color:#C62828}
.day-feiertag-badge{display:inline-block;background:#C62828;color:#fff;font-size:9.5px;font-weight:bold;
  padding:1px 6px;border-radius:9px;margin-left:6px;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap}
.day-feiertag-name{display:block;font-size:9.5px;font-weight:normal;color:#C62828;margin-top:1px;letter-spacing:0}
.day-header .day-actions{display:flex;gap:4px}
.day-header .day-btn{background:none;border:none;cursor:pointer;font-size:12px;color:var(--accent);font-weight:bold;padding:1px 5px;border-radius:3px}
.day-header .day-btn:hover{background:rgba(68,114,196,.15)}
.day-slots{min-height:38px;padding:4px 6px;display:flex;flex-direction:column;gap:2px}
.day-slots.drag-over{background:rgba(68,114,196,.08);border-radius:6px;outline:2px dashed var(--accent)}
.slot-card.drop-before{box-shadow:0 -3px 0 0 var(--accent) inset,0 1px 3px rgba(44,62,80,.07)}
.slot-card.drop-after{box-shadow:0 3px 0 0 var(--accent) inset,0 1px 3px rgba(44,62,80,.07)}
/* v8.0.4: Slot mit archiviertem Lead - dezent ausgegraut + Archiv-Badge */
.slot-card .badge.lead-archiv{background:#9E9E9E;color:#fff;font-size:10px;padding:2px 7px;border-radius:4px;cursor:pointer}
.slot-card .badge.lead-archiv:hover{background:#757575}
/* Lead-Stage-Badge im Slot: zeigt welche Pipeline-Stage der verknuepfte Lead hat. Klick oeffnet Lead in Pipeline. */
.slot-card .badge.lead-stage{font-size:9px;padding:1px 5px 1px 4px;border-radius:3px;cursor:pointer;
  display:inline-flex;align-items:center;gap:3px;color:#fff;letter-spacing:.2px;background:#607D8B}
.slot-card .badge.lead-stage::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75;flex-shrink:0}
.slot-card .badge.lead-stage:hover{filter:brightness(1.12)}
.slot-card .badge.lead-stage--wiedervorlage{background:#78909C}
.slot-card .badge.lead-stage--neu{background:#42A5F5}
.slot-card .badge.lead-stage--qualifiziert{background:#1E88E5}
.slot-card .badge.lead-stage--angebot{background:#FB8C00}
.slot-card .badge.lead-stage--beauftragt{background:#7B1FA2}
.slot-card .badge.lead-stage--geplant{background:#455A64}
.slot-card .badge.lead-stage--ausgefuehrt{background:#2E7D32}
.slot-card .badge.lead-stage--abgerechnet{background:#1B5E20}
.slot-card .badge.lead-stage--beobachten{background:#6D4C41}
.slot-card .badge.lead-stage--kalkulieren{background:#EF6C00}
.slot-card .badge.lead-stage--abgegeben{background:#00838F}
.slot-card .badge.lead-stage--entschieden{background:#AD1457}
/* v8.0.7: Co-Trupp-Badge - dieselbe Halle am gleichen Tag bei anderem Trupp */
.slot-card .badge.co-trupp{background:#7030A0;color:#fff;font-size:10px;padding:2px 7px;border-radius:4px;cursor:pointer;font-weight:bold}
.slot-card .badge.co-trupp:hover{background:#5a2680}
.slot-fortsetzung.drop-before{box-shadow:0 -3px 0 0 var(--accent) inset}
.slot-fortsetzung.drop-after{box-shadow:0 3px 0 0 var(--accent) inset}
.day-slots .abwesend{background:#f5f5f5;border:1px dashed #bbb;border-radius:6px;padding:4px 8px;font-size:10px;color:#888;text-align:center;font-style:italic}
.day-slots .km-total{font-size:9px;color:var(--muted);text-align:right;padding:2px 4px}

/* Minimap pro Trupp (am Fuss der Spalte) */
.trupp-minimap{height:110px;border-top:1px solid var(--border);background:#f0ede8;flex-shrink:0}
.trupp-minimap-km{text-align:center;font-size:9px;font-weight:bold;color:var(--navy);
  padding:2px 8px;background:var(--bg);border-top:1px solid var(--border);flex-shrink:0}
.trupp-minimap-empty{display:flex;height:100%;align-items:center;justify-content:center;
  font-size:10px;color:#bbb;font-style:italic}

/* Slot-Karten: horizontales Layout */
.slot-card{background:var(--card);border-radius:8px;padding:4px 8px;
  box-shadow:0 1px 3px rgba(44,62,80,.07),0 2px 8px rgba(44,62,80,.05);
  cursor:grab;font-size:10px;border:1px solid var(--border);border-left:6px solid #ccc;
  position:relative;transition:transform .15s,box-shadow .15s;
  display:grid;grid-template-columns:1fr 1fr;gap:1px 10px;align-items:start}
.slot-card:hover{box-shadow:0 4px 14px rgba(44,62,80,.13);transform:translateY(-1px)}
.slot-card:active{cursor:grabbing;transform:scale(1.01);box-shadow:0 3px 10px rgba(0,0,0,.15)}
.slot-card .s-top{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;gap:6px;padding-right:14px}
.slot-card .s-top-left{display:flex;align-items:center;gap:6px;min-width:0;flex:1}
.slot-card .s-top-right{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.slot-card .s-id{font-weight:bold;color:var(--navy);font-size:11px;flex-shrink:0}
.slot-card .s-name{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:600;flex:1;min-width:0}
.slot-card .s-zeit{color:var(--accent);font-weight:bold;font-size:10px}
.slot-card .s-art{font-size:9px;padding:1px 5px;border-radius:3px;color:#fff;font-weight:bold;white-space:nowrap}
.slot-card .s-col-left{display:flex;flex-direction:column;gap:1px;min-width:0}
.slot-card .s-col-right{display:flex;flex-direction:column;gap:1px;min-width:0}
.slot-card .s-addr{color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slot-card .s-hm{color:#555;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slot-card .s-hm a{color:var(--accent);text-decoration:none;font-weight:bold}
.slot-card .s-anlagen{color:var(--muted);font-size:9px}
.slot-card .s-badges{display:flex;gap:3px;flex-wrap:wrap;align-items:center}
.slot-card .badge{font-size:8px;padding:1px 4px;border-radius:3px;color:#fff;font-weight:bold;white-space:nowrap}
.slot-card .badge.rep{background:var(--error)}.slot-card .badge.stoer{background:#E65100}
/* Wartungs-Badge staerker hervorheben - muss immer sofort erkennbar sein */
.slot-card .badge.ws{font-size:10px;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:.3px;
  box-shadow:0 1px 2px rgba(0,0,0,.25);order:-1;flex-shrink:0}
/* Vertragsstatus-Badges - immer sichtbar wenn gepflegt */
.slot-card .badge.vertrag-aktiv{background:#2E7D32;color:#fff;font-size:10px;padding:2px 7px;border-radius:4px;
  letter-spacing:.2px;box-shadow:0 1px 2px rgba(0,0,0,.25);order:0;flex-shrink:0}
.slot-card .badge.vertrag-auftrag{background:#616161;color:#fff;font-size:10px;padding:2px 7px;border-radius:4px;
  letter-spacing:.2px;order:0;flex-shrink:0}
.slot-card .badge.vertrag-inaktiv{background:#C62828;color:#fff;font-size:10px;padding:2px 7px;border-radius:4px;
  letter-spacing:.2px;order:0;flex-shrink:0}
/* Asset-Badges: Datenblatt/Fotos/Docs Zaehler direkt auf der Karte */
.slot-card .badge.asset{background:#546E7A;color:#fff;font-size:9px;padding:1px 5px}
.slot-card .s-km{color:var(--accent);font-size:9px;font-weight:bold;text-align:right}
.slot-card .s-del{position:absolute;top:2px;right:4px;color:#bbb;cursor:pointer;font-size:14px;line-height:1;z-index:2}
.slot-card .s-del:hover{color:var(--error)}
.slot-card .s-notiz{grid-column:1 / -1;color:#5C4A1E;font-size:10px;margin-top:2px;background:#FFF8E1;
  border-radius:4px;padding:2px 6px;font-style:italic;border-left:2px solid var(--gold);cursor:pointer;
  word-break:break-word;white-space:normal;overflow-wrap:break-word}
.slot-card .s-notiz:hover{background:#FFF3CD}
.slot-card .s-range{grid-column:1 / -1;font-size:9px;color:var(--accent);font-weight:bold;padding:1px 0}
.slot-card.dup{box-shadow:0 0 0 2px #FFD600}
.slot-frei{background:#FFFBF0!important;border:1px dashed var(--border)!important;border-left:4px dashed var(--gold)!important}
.slot-frei .s-name{white-space:pre-wrap!important;overflow:visible!important;text-overflow:unset!important;
  font-weight:normal;font-size:11px;line-height:1.4;word-break:break-word;overflow-wrap:break-word}
.slot-frei.slot-notizkarte{grid-template-columns:1fr!important;background:#FFF8E1!important;
  border:1px solid var(--gold)!important;border-left:4px solid var(--gold)!important}
.slot-frei.slot-notizkarte .s-notiz-body{grid-column:1 / -1;white-space:pre-wrap;word-break:break-word;
  overflow-wrap:break-word;line-height:1.45;color:#5C4A1E;font-size:11px;padding:3px 0 0 0;
  font-style:normal}
.slot-frei.slot-notizkarte .s-name{display:none}

/* Fortsetzungs-Zeile fuer mehrtaegige Slots (nicht im Starttag) */
.slot-fortsetzung{background:rgba(68,114,196,.08);border:1px dashed var(--accent);border-radius:5px;
  border-left:3px solid var(--accent);padding:3px 8px;font-size:10px;color:var(--accent);
  font-weight:bold;cursor:pointer;display:flex;align-items:center;gap:6px;opacity:.85}
.slot-fortsetzung:hover{background:rgba(68,114,196,.15);opacity:1}
.slot-fortsetzung .sf-id{color:var(--navy)}
.slot-fortsetzung .sf-name{color:var(--text);font-weight:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}

/* Art-Toggle-Buttons */
.art-picker{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.art-btn{padding:3px 8px;font-size:11px;border-radius:12px;border:1.5px solid var(--c,#888);
  color:var(--c,#888);background:#fff;cursor:pointer;font-weight:bold;transition:background .1s,color .1s}
.art-btn.active{background:var(--c,#888);color:#fff}
.art-btn:hover:not(.active){opacity:.75}

/* Folge-Auftrag-Dialog: Grid mit grossen Art-Buttons */
.folge-art-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 16px}
.folge-art-grid .art-btn{padding:10px 8px;font-size:13px;font-weight:600;text-align:center;cursor:pointer}
@media (max-width:520px){.folge-art-grid{grid-template-columns:repeat(2,1fr)}}

/* Dialoge */
.overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}
.overlay.open{display:flex}
#pipe-einzel-dialog{z-index:2600;background:rgba(0,0,0,.65)}
.dialog{background:#fff;border-radius:14px;padding:18px;width:440px;max-width:95vw;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(31,56,100,.18)}
.dialog h3{color:var(--navy);margin-bottom:10px;font-size:15px}
.dialog .field{margin:6px 0;display:flex;flex-direction:column;gap:2px}
.dialog label{font-size:11px;color:var(--muted);font-weight:bold}
.dialog input,.dialog select,.dialog textarea{padding:7px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fafaf8}
.dialog textarea{min-height:36px;resize:vertical}
.dialog .info{font-size:11px;color:#666;margin-bottom:8px;line-height:1.4}
.dialog .warn{background:#FFF3C4;color:#8B6F00;padding:4px 8px;border-radius:4px;font-size:11px;margin:6px 0}
.dactions{display:flex;gap:8px;margin-top:12px;justify-content:flex-end}
.dactions button{padding:7px 16px;border:none;border-radius:6px;cursor:pointer;font-weight:bold;font-size:12px}
.btn-ok{background:var(--navy);color:#fff}.btn-no{background:#e0e0e0;color:#333}

/* Stammdaten-Overlay */
.stammdaten-shell{background:#fff;border-radius:14px;width:92vw;height:86vh;max-width:1400px;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(31,56,100,.25);overflow:hidden;position:relative}

/* Easter-Egg: tanzender Clown der "Rene!" ruft */
.rene-clown{
  position:absolute;bottom:14px;right:18px;z-index:50;
  pointer-events:auto;cursor:pointer;user-select:none;
  width:54px;height:54px;text-align:center;
}
.rene-clown .rene-emoji{
  font-size:38px;line-height:1;display:inline-block;
  transform-origin:center bottom;
  animation:rene-dance 1.4s ease-in-out infinite;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.25));
}
.rene-clown:hover .rene-emoji{animation-duration:.5s}
.rene-clown.crazy .rene-emoji{animation:rene-spin 1.2s ease-in-out 3}
.rene-bubble{
  position:absolute;bottom:50px;right:0;
  background:#fff;color:#C62828;font-weight:bold;
  padding:4px 10px;border-radius:14px;font-size:11px;
  letter-spacing:.5px;white-space:nowrap;
  border:2px solid #C62828;
  box-shadow:0 4px 12px rgba(0,0,0,.25);
  opacity:0;transform:translateY(6px) scale(.85);
  animation:rene-bubble 4s ease-in-out infinite;
  transform-origin:right bottom;
}
.rene-bubble::after{
  content:"";position:absolute;bottom:-7px;right:14px;
  width:10px;height:10px;background:#fff;
  border-right:2px solid #C62828;border-bottom:2px solid #C62828;
  transform:rotate(45deg);
}
.rene-clown.crazy .rene-bubble{animation:rene-bubble-crazy .8s ease-in-out 4}

@keyframes rene-dance{
  0%,100%{transform:translateY(0) rotate(-8deg)}
  25%   {transform:translateY(-6px) rotate(8deg)}
  50%   {transform:translateY(0) rotate(-6deg)}
  75%   {transform:translateY(-4px) rotate(10deg)}
}
@keyframes rene-spin{
  0%  {transform:translateY(0) rotate(0deg) scale(1)}
  25% {transform:translateY(-14px) rotate(180deg) scale(1.2)}
  50% {transform:translateY(0) rotate(360deg) scale(1)}
  75% {transform:translateY(-10px) rotate(540deg) scale(1.15)}
  100%{transform:translateY(0) rotate(720deg) scale(1)}
}
@keyframes rene-bubble{
  0%,70%,100%{opacity:0;transform:translateY(6px) scale(.85)}
  78%       {opacity:1;transform:translateY(0) scale(1.1)}
  82%       {opacity:1;transform:translateY(0) scale(1)}
  92%       {opacity:1;transform:translateY(0) scale(1)}
}
@keyframes rene-bubble-crazy{
  0%,100%{opacity:1;transform:translateY(0) scale(1.2) rotate(-5deg)}
  50%   {opacity:1;transform:translateY(-4px) scale(1.4) rotate(5deg)}
}

/* JUMPSCARE - vollbild beim Clown-Klick */
.jumpscare-overlay{
  position:fixed;top:0;left:0;right:0;bottom:0;
  background:#000;z-index:99999;display:none;
  align-items:center;justify-content:center;
  cursor:pointer;overflow:hidden;
}
.jumpscare-overlay.active{display:flex}
.jumpscare-overlay::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at center,#8B0000 0%,#000 70%);
  opacity:0;animation:js-flash 1.6s ease-out forwards;
}
.jumpscare-emoji{
  font-size:min(70vw,70vh);line-height:1;
  filter:drop-shadow(0 0 60px #ff0000) drop-shadow(0 0 120px #ff0000);
  animation:js-zoom 1.6s cubic-bezier(.2,.7,.4,1) forwards,js-shake .07s linear infinite;
  position:relative;z-index:2;text-shadow:0 0 40px rgba(255,0,0,.9);
  transform:scale(0);
}
.jumpscare-text{
  position:absolute;bottom:8%;left:0;right:0;text-align:center;
  font-size:min(14vw,120px);font-weight:900;color:#ff1a1a;
  letter-spacing:8px;text-shadow:0 0 30px #ff0000,0 0 60px #ff0000,0 4px 0 #000;
  font-family:Impact,"Arial Black",sans-serif;z-index:3;
  animation:js-text 1.6s ease-out .15s forwards;
  opacity:0;transform:scale(.5);
}
@keyframes js-flash{
  0%  {opacity:0}
  6%  {opacity:1;background:#fff}
  10% {opacity:1;background:radial-gradient(circle at center,#8B0000 0%,#000 70%)}
  100%{opacity:1}
}
@keyframes js-zoom{
  0%  {transform:scale(0) rotate(-30deg)}
  18% {transform:scale(2.2) rotate(15deg)}
  28% {transform:scale(1.6) rotate(-8deg)}
  100%{transform:scale(1.7) rotate(0deg)}
}
@keyframes js-shake{
  0%,100%{margin-left:0;margin-top:0}
  25%   {margin-left:-6px;margin-top:4px}
  50%   {margin-left:6px;margin-top:-4px}
  75%   {margin-left:-4px;margin-top:-2px}
}
@keyframes js-text{
  0% {opacity:0;transform:scale(.4) rotate(-5deg)}
  40%{opacity:1;transform:scale(1.3) rotate(3deg)}
  60%{opacity:1;transform:scale(1) rotate(-2deg)}
  100%{opacity:1;transform:scale(1.05) rotate(0deg)}
}
.sd-head{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--navy);color:#fff}
.sd-head h3{color:#fff;margin:0;font-size:15px}
.sd-head-actions{display:flex;gap:8px}
.sd-head-actions .hbtn{background:rgba(255,255,255,.15)}
.sd-body{flex:1;display:flex;min-height:0}
.sd-tabs{width:170px;background:#F5F5F5;border-right:1px solid var(--border);display:flex;flex-direction:column;padding:8px 0}
.sd-tab{padding:10px 14px;cursor:pointer;font-size:13px;font-weight:bold;color:#555;border-left:3px solid transparent}
.sd-tab:hover{background:#EEE}
.sd-tab.active{background:#fff;color:var(--navy);border-left-color:var(--accent)}
.sd-content{flex:1;display:flex;flex-direction:column;min-width:0}
.sd-toolbar{display:flex;gap:8px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);background:#fafafa}
.sd-toolbar input[type=text]{flex:1;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff}
.sd-toolbar .btn-ok{padding:6px 14px;font-size:12px;border:none;border-radius:6px;cursor:pointer;font-weight:bold}
.sd-check{display:flex;align-items:center;gap:4px;font-size:12px;color:#555;cursor:pointer}
.sd-list-wrap{flex:1;overflow:auto}
.sd-table{width:100%;border-collapse:collapse;font-size:12px}
.sd-table thead th{position:sticky;top:0;background:#f0f4ff;color:var(--navy);padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);z-index:1}
.sd-table tbody td{padding:6px 10px;border-bottom:1px solid #eee;vertical-align:middle}
.sd-table tbody tr:hover{background:#f5f8ff;cursor:pointer}
.sd-table tbody tr.inaktiv{opacity:.45}
.sd-table td.sd-id{font-weight:bold;color:var(--navy);width:70px}
.sd-table td.sd-actions{width:110px;text-align:right;white-space:nowrap}
.sd-table td.sd-actions button{font-size:11px;padding:3px 8px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;margin-left:4px}
.sd-table td.sd-actions button:hover{background:#eef2ff}
.sd-badge-aktiv{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;background:#E8F5E9;color:#2E7D32;font-weight:bold}
.sd-badge-inaktiv{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;background:#FFEBEE;color:#C62828;font-weight:bold}
.sd-footer{padding:6px 12px;border-top:1px solid var(--border);font-size:11px;color:#666;background:#fafafa}

/* v8.0.4: Singleton-Form (Firmen-Stammdaten) - Raster-Layout statt Tabelle */
.sd-singleton-form{padding:18px 22px;max-width:920px;margin:0 auto}
.sd-singleton-form h3.sf-title{margin:0 0 4px;color:var(--navy);font-size:16px}
.sd-singleton-form .sf-help{font-size:12px;color:#666;margin-bottom:14px;line-height:1.45}
.firma-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.ff-section{background:#FAFAF8;border:1px solid var(--border);border-radius:8px;padding:14px 16px}
.ff-section-title{font-weight:bold;color:var(--accent);font-size:11px;letter-spacing:.6px;
  text-transform:uppercase;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.ff-section label{display:block;font-size:11px;color:#666;margin-top:8px;margin-bottom:2px;font-weight:bold}
.ff-section label:first-of-type{margin-top:0}
.ff-section input{width:100%;padding:7px 9px;background:#fff;color:var(--text);
  border:1px solid var(--border);border-radius:5px;font-size:13px;font-family:inherit;box-sizing:border-box}
.ff-section input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(200,120,10,.18)}
.firma-form-actions{margin-top:16px;display:flex;gap:8px;justify-content:flex-end;align-items:center}
.firma-form-actions .ff-status{font-size:12px;color:#666;margin-right:auto}
.ff-section.full{grid-column:1 / -1}
@media (max-width:900px){.firma-form-grid{grid-template-columns:1fr}}

/* Stammdaten-Edit-Dialog */
.sd-edit-dialog{width:720px;max-width:95vw}
.sd-group{margin:8px 0 2px;padding-top:8px;border-top:1px solid var(--border);font-size:11px;color:var(--accent);font-weight:bold;text-transform:uppercase;letter-spacing:.4px}
.sd-group:first-child{border-top:none;padding-top:0}
.sd-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px}
.sd-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px 10px}

/* Pflichtfelder + Input-Augmentations */
.sd-edit-dialog label .req{color:#C62828;font-weight:bold;margin-left:2px}
.sd-edit-dialog .field.missing input,
.sd-edit-dialog .field.missing select{border-color:#C62828;background:#FFF0F0}
.sd-edit-dialog input[readonly]{background:#eee;color:#666;cursor:not-allowed}
.date-wrap{display:flex;gap:4px;align-items:center}
.date-wrap input[type=date]{flex:1}
.date-wrap .heute-btn{padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:#fafafa;cursor:pointer;font-size:11px;font-weight:bold;color:var(--navy);white-space:nowrap}
.date-wrap .heute-btn:hover{background:#eef2ff}
.geo-row{display:flex;gap:6px;align-items:center;margin-top:6px}
.geo-row input{flex:1}
.geo-btn{padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:#fafafa;cursor:pointer;font-size:11px;font-weight:bold;color:var(--navy);white-space:nowrap}
.geo-btn:hover{background:#eef2ff}
.geo-btn:disabled{opacity:.5;cursor:wait}

/* Kunden-Autocomplete */
.kunde-wrap{position:relative}
.kunde-wrap input{width:100%}
.kunde-sug{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--border);border-top:none;border-radius:0 0 6px 6px;max-height:220px;overflow-y:auto;z-index:10;box-shadow:0 6px 20px rgba(0,0,0,.1);display:none}
.kunde-sug.open{display:block}
.kunde-sug-item{padding:6px 10px;cursor:pointer;font-size:12px;border-bottom:1px solid #eee}
.kunde-sug-item:hover,.kunde-sug-item.active{background:#f0f4ff}
.kunde-sug-item .k-id{font-weight:bold;color:var(--navy);margin-right:6px}
.kunde-sug-item small{color:#999;margin-left:6px}

/* Datenblatt-Tab (im Edit-Dialog) */
.db-wrap{display:flex;flex-direction:column;gap:2px}
.db-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin-top:4px}
.db-field{display:flex;flex-direction:column;gap:2px}
.db-field label{font-size:11px;color:#555}
.db-input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:12px;background:#fafaf8}
.db-input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 2px rgba(31,56,100,.12)}

/* Toast-Notifications */
#toast-stack{position:fixed;bottom:20px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{pointer-events:auto;background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);font-size:13px;min-width:260px;max-width:380px;animation:toast-in .2s ease-out;cursor:pointer;display:flex;align-items:center;gap:8px}
.toast.ok{background:#2E7D32}
.toast.err{background:#C62828}
.toast.warn{background:#F57C00}
.toast .t-close{opacity:.7;font-size:16px;margin-left:auto}
@keyframes toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.toast.leaving{animation:toast-out .25s ease-in forwards}
@keyframes toast-out{to{opacity:0;transform:translateY(-8px)}}

/* Suche */
#search-box .dialog{width:520px}
#search-input{width:100%;padding:10px;border:2px solid var(--accent);border-radius:8px;font-size:14px;outline:none;background:#fafaf8}
#search-results{max-height:350px;overflow-y:auto;margin-top:6px}
.sr{padding:6px 8px;border-bottom:1px solid #eee;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:12px}
.sr:hover{background:#f0f4ff}
.sr .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.sr .sr-id{font-weight:bold;color:var(--navy);min-width:44px}
.sr .sr-warn{color:var(--error);font-size:10px}

/* Karte */
#map-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:900;background:rgba(0,0,0,.4)}
#map-overlay.open{display:block}
#map-box{position:absolute;top:16px;left:16px;right:16px;bottom:16px;border-radius:12px;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.3)}
#map{width:100%;height:100%}
#map-close{position:absolute;top:26px;right:26px;z-index:1001;background:#fff;border:none;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:bold;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.2)}
#map-toolbar{position:absolute;top:10px;left:10px;right:70px;z-index:1000;background:#fff;color:#333;border-radius:8px;padding:6px 10px;box-shadow:0 2px 8px rgba(0,0,0,.25);display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:11px}
#map-toolbar label,#map-toolbar span{color:#333}
.mt-group{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.mt-group+.mt-group{border-left:1px solid #ddd;padding-left:8px}
.mt-seg{display:inline-flex;border:1px solid #bbb;border-radius:4px;overflow:hidden}
.mt-btn{padding:4px 8px;border:none;background:#f5f5f5;color:#333;font-size:10px;font-weight:bold;cursor:pointer;border-right:1px solid #bbb}
.mt-btn:last-child{border-right:none}.mt-btn:hover{background:#e0e0e0}
.mt-btn.mt-active{background:var(--navy);color:#fff}
#map-search{padding:3px 6px;border:1px solid #ccc;border-radius:3px;font-size:11px;width:120px}
#map-bl-filter,#map-datepicker{padding:3px;border:1px solid #ccc;border-radius:3px;font-size:10px}
.mt-cb{font-size:10px;display:inline-flex;align-items:center;gap:3px;cursor:pointer;color:#333;white-space:nowrap}
.mt-cb input{accent-color:#1F3864;cursor:pointer}
.mt-sm-btn{padding:3px 8px;border:1px solid #ccc;border-radius:3px;font-size:10px;font-weight:bold;cursor:pointer;background:#fff}
.mt-sm-btn.mt-lasso{background:#F57C00;color:#fff;border-color:#E65100}
.mt-sm-btn.mt-lasso:hover{background:#E65100}
.mt-sm-btn.mt-lasso.active{background:#E65100;box-shadow:0 0 0 2px #FFC107}
.mt-lasso{background:var(--warn);color:#fff;border-color:var(--warn)}
.mt-lasso.active{background:#E65100;box-shadow:0 0 0 2px #FFD600}
.leaflet-lasso-poly{stroke:#7030A0;stroke-width:3;fill:#7030A0;fill-opacity:.2}

/* v8.1: Grosser Toggle-Button "Eingeplante ausblenden" */
.mt-big-toggle{padding:8px 14px;border-radius:6px;font-size:12px;font-weight:bold;cursor:pointer;
  border:2px solid #1F3864;background:#1F3864;color:#fff;letter-spacing:.2px;white-space:nowrap;
  display:inline-flex;align-items:center;gap:7px;transition:all .15s;
  box-shadow:0 2px 6px rgba(31,56,100,.35)}
.mt-big-toggle:hover{filter:brightness(1.12)}
.mt-big-toggle.is-off{background:#fff;color:#666;border-color:#bbb;box-shadow:none}
.mt-big-toggle.is-off:hover{background:#f0f0f0}
.mt-big-toggle .mt-bt-dot{width:9px;height:9px;border-radius:50%;background:#FFD600;
  box-shadow:0 0 6px rgba(255,214,0,.9)}
.mt-big-toggle.is-off .mt-bt-dot{background:#bbb;box-shadow:none}

/* =====================================================================
   Dark Kanban Theme (v7.4) - flaches Dark Mode im Kanban-Stil.
   Keine teuren Blur-Effekte auf dem Grid (schnell!).
   @media print unten setzt alles auf Weiss zurueck.
   ===================================================================== */

html,body{
  background:var(--gh-bg);
  color:var(--gh-text);
  min-height:100vh;
  scrollbar-color:rgba(240,246,252,.14) transparent;
  scrollbar-width:thin;
}

/* Custom Scrollbars (Chrome/Edge/Safari) - neutral auf Dark & Light */
html{scrollbar-color:rgba(240,246,252,.14) transparent;scrollbar-width:thin}
::-webkit-scrollbar{width:10px;height:10px;background:transparent}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{
  background:rgba(240,246,252,.12);
  border-radius:5px;
  transition:background .15s;
}
::-webkit-scrollbar-thumb:hover{background:rgba(240,246,252,.25)}
::-webkit-scrollbar-thumb:active{background:rgba(240,246,252,.35)}
:root[data-theme="light"] ::-webkit-scrollbar-thumb{background:rgba(31,35,40,.18)}
:root[data-theme="light"] ::-webkit-scrollbar-thumb:hover{background:rgba(31,35,40,.30)}
::-webkit-scrollbar-corner{background:transparent}
::-webkit-scrollbar-button{display:none}

/* Header - flach, GitHub-Stil */
#header{
  background:var(--gh-panel);
  border-bottom:1px solid var(--gh-border);
  box-shadow:none;
}
#header-logo{background:var(--gh-accent-soft);border:1px solid var(--gh-border-subtle)}
#header h1{color:var(--gh-text)}
#kw-nav button{background:transparent;color:var(--gh-text);border:1px solid transparent;border-radius:6px}
#kw-nav button:hover{background:var(--gh-btn-hover)}
.hbtn{
  background:transparent;
  color:var(--gh-text);
  border:1px solid var(--gh-border);
  border-radius:6px;
  box-shadow:none;
  transition:background .12s,border-color .12s;
}
.hbtn:hover{background:var(--gh-btn-hover);border-color:var(--gh-border);opacity:1}
.hbtn.green{background:var(--gh-success-bg);border-color:var(--gh-success-border);color:var(--gh-success)}
.hbtn.green:hover{background:var(--gh-success-bg);filter:brightness(1.15)}
.hbtn.orange{background:var(--gh-warn-bg);border-color:var(--gh-warn-border);color:var(--gh-warn)}
.hbtn.orange:hover{background:var(--gh-warn-bg);filter:brightness(1.15)}
.hbtn.red,.hbtn.danger{background:var(--gh-danger-bg);border-color:var(--gh-danger-border);color:var(--gh-danger)}
.hbtn.red:hover,.hbtn.danger:hover{background:var(--gh-danger-bg);filter:brightness(1.15)}
.hbtn.gold{background:var(--gh-warn-bg);border-color:var(--gh-warn-border);color:var(--gh-warn)}
.hbtn.gold:hover{background:var(--gh-warn-bg);filter:brightness(1.15)}

/* Grid-Hintergrund */
#grid-wrap{background:transparent;gap:10px;padding:10px}

/* Sidebar - flach, GitHub-Stil */
#hallen-sidebar{
  background:var(--gh-panel);
  border-right:1px solid var(--gh-border);
  box-shadow:none;
}
#sidebar-top{background:var(--gh-panel);color:var(--gh-muted);border-bottom:1px solid var(--gh-border);
  text-transform:uppercase;letter-spacing:.6px;font-size:11px;font-weight:600}
#sidebar-search{background:var(--gh-input-bg);color:var(--gh-text);border:1px solid var(--gh-border);
  border-radius:6px;margin:8px 10px;padding:6px 10px;width:calc(100% - 20px);font-size:12px;outline:none;
  transition:border-color .12s,box-shadow .12s}
#sidebar-search:focus{background:var(--gh-input-bg);border-color:var(--gh-accent);box-shadow:0 0 0 3px var(--gh-accent-soft)}
#sidebar-search::placeholder{color:var(--gh-muted)}
#sidebar-controls{background:transparent;border-bottom:1px solid var(--gh-border)}
.ws-chips{background:transparent!important;border-bottom:1px solid var(--gh-border);padding:6px 8px}
.ws-chip{background:transparent;color:var(--gh-muted);border:1px solid var(--gh-border);border-radius:12px;font-size:10.5px;font-weight:500}
.ws-chip:hover{background:var(--gh-hover);color:var(--gh-text)}

#sidebar-controls select{
  background:var(--gh-input-bg);color:var(--gh-text);
  border:1px solid var(--gh-border);border-radius:6px;margin:4px 8px;padding:5px 8px;width:calc(100% - 16px);
}
#sidebar-controls select:focus{border-color:var(--gh-accent);box-shadow:0 0 0 3px var(--gh-accent-soft)}
#sidebar-controls select option{background:var(--gh-panel);color:var(--gh-text)}
.sb-halle{border-bottom:1px solid var(--gh-border-subtle);color:var(--gh-text)}
.sb-halle:hover{background:var(--gh-hover)}
.sb-id{color:var(--gh-accent)}
.sb-name{color:var(--gh-text)}
.sb-kunde{color:var(--gh-muted)}

/* Trupp-Spalten - flach, klare Borders */
.trupp-col{
  background:var(--gh-panel);
  border:1px solid var(--gh-border);
  border-radius:8px;
  margin:0 2px;
  overflow:hidden;
  contain:layout paint;
  box-shadow:none;
}
.trupp-col:last-child{border:1px solid var(--gh-border)}

/* Trupp-Header - flach, unauffaellig */
.trupp-header{
  background:var(--gh-panel);
  color:var(--gh-text);
  border-bottom:1px solid var(--gh-border);
  text-shadow:none;
  box-shadow:none;
}
.trupp-header:hover{background:var(--gh-hover)}
.trupp-header small{color:var(--gh-muted);opacity:1}
.trupp-route-btn{background:var(--gh-btn-hover);color:var(--gh-text);border:1px solid var(--gh-border);border-radius:6px}
.trupp-route-btn:hover{background:var(--gh-card-hover);border-color:var(--gh-muted)}

/* Tag-Sektionen - flach, subtil */
.day-section{border-bottom:1px solid var(--gh-border-subtle);margin-bottom:0;background:transparent}
.day-header{
  background:var(--gh-bg);
  color:var(--gh-text);
  border-top:1px solid var(--gh-border-subtle);
  border-bottom:1px solid var(--gh-border-subtle);
  font-weight:600;
  box-shadow:none;
}
.day-header .day-btn{color:var(--gh-accent)}
.day-header .day-btn:hover{background:var(--gh-accent-soft)}
/* Feiertag-Hinweis */
.day-header.is-feiertag{background:var(--gh-danger-bg);border-top-color:var(--gh-danger-border);border-bottom-color:var(--gh-danger-border)}
.day-header.is-feiertag .day-feiertag-badge{background:var(--gh-danger);color:#fff}
.day-header.is-feiertag .day-feiertag-name{color:var(--gh-danger)}
.day-slots{padding:6px 8px}
.day-slots.drag-over{background:var(--gh-accent-soft);outline:1px dashed var(--gh-accent);border-radius:6px}
.day-slots .abwesend{background:var(--gh-card);border:1px dashed var(--gh-border);color:var(--gh-muted);border-radius:6px}
.day-slots .km-total{color:var(--gh-muted)}

/* Slot-Karten - abgehoben vom Trupp-Panel durch helleren BG + leichten Shadow */
.slot-card{
  background:var(--gh-card);
  color:var(--gh-text);
  border:1px solid var(--gh-border);
  border-left:3px solid var(--gh-accent);
  border-radius:6px;
  transition:background .12s,border-color .12s,box-shadow .12s,transform .12s;
  box-shadow:0 2px 4px rgba(0,0,0,.35), 0 0 0 1px rgba(240,246,252,.02) inset;
}
.slot-card:hover{
  background:var(--gh-card-hover);
  border-color:var(--gh-muted);
  box-shadow:0 6px 14px rgba(0,0,0,.50), 0 0 0 1px rgba(240,246,252,.04) inset;
  transform:translateY(-1px);
}
.slot-card:active{box-shadow:0 1px 2px rgba(0,0,0,.3);transform:translateY(0)}
.slot-card .s-id{color:var(--gh-accent);font-variant-numeric:tabular-nums}
.slot-card .s-name{color:var(--gh-text)}
.slot-card .s-zeit{color:var(--gh-accent);font-weight:500}
.slot-card .s-addr{color:var(--gh-muted)}
.slot-card .s-hm{color:var(--gh-muted)}
.slot-card .s-hm a{color:var(--gh-accent)}
.slot-card .s-anlagen{color:var(--gh-muted)}
.slot-card .s-km{color:var(--gh-muted);font-variant-numeric:tabular-nums}
.slot-card .s-del{color:var(--gh-muted)}
.slot-card .s-del:hover{color:var(--gh-danger)}
.slot-card .s-notiz{
  background:var(--gh-note-bg);
  color:var(--gh-note-fg);
  border-left:2px solid var(--gh-note-accent);
  border-radius:4px;
}
.slot-card .s-notiz:hover{background:var(--gh-note-bg);filter:brightness(1.2)}
.slot-card .s-range{color:var(--gh-accent)}
.slot-card.dup{box-shadow:0 0 0 2px var(--gh-warn)}

/* Freie Slots + Notiz-Karten */
.slot-frei{background:var(--gh-note-bg)!important;border:1px dashed var(--gh-warn-border)!important;border-left:3px dashed var(--gh-warn)!important}
.slot-frei .s-name{color:var(--gh-text)}
.slot-frei.slot-notizkarte{background:var(--gh-note-bg)!important;border:1px solid var(--gh-warn-border)!important;border-left:3px solid var(--gh-warn)!important}
.slot-frei.slot-notizkarte .s-notiz-body{color:var(--gh-note-fg)}

/* Minimap-Bereiche */
.trupp-minimap{background:var(--gh-bg);border-top:1px solid var(--gh-border)}
.trupp-minimap-km{
  background:var(--gh-bg);
  color:var(--gh-text);
  border-top:1px solid var(--gh-border);
}
.trupp-minimap-empty{color:var(--gh-muted)}

/* Fortsetzungs-Zeilen */
.slot-fortsetzung{
  background:var(--gh-accent-soft);
  border:1px dashed var(--gh-accent);
  border-left:3px solid var(--gh-accent);
  color:var(--gh-accent);
  border-radius:6px;
}
.slot-fortsetzung:hover{background:var(--gh-accent-soft);filter:brightness(1.2)}
.slot-fortsetzung .sf-id{color:var(--gh-accent)}
.slot-fortsetzung .sf-name{color:var(--gh-text)}

/* Art-Toggle-Buttons */
.art-btn{background:var(--surface-2);color:var(--c,#8A8F99);border-color:var(--c,#4A4E58)}
.art-btn.active{background:var(--c,#4A4E58);color:#fff}

/* ============== KARTE-OVERLAY (eingebettete Leaflet-Karte) ============== */
/* Dark/Glas-Override fuer alle Karten-UI-Elemente (war komplett weiss) */
#map-overlay{background:rgba(11,15,26,.55)}
#map-box{
  background:transparent;
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 24px 60px rgba(0,0,0,.70), 0 1px 0 rgba(255,255,255,.08) inset;
}
#map-close{
  background:var(--gh-panel);
  color:var(--gh-text);
  border:1px solid var(--gh-border);
  border-radius:6px;
  box-shadow:0 6px 20px rgba(0,0,0,.45);
  padding:8px 14px;font-weight:600;letter-spacing:.2px;
  transition:background .12s,border-color .12s;
}
#map-close:hover{background:var(--gh-card-hover);border-color:var(--gh-muted)}

#map-toolbar{
  background:var(--gh-panel);
  color:var(--gh-text);
  border:1px solid var(--gh-border);
  border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.40);
  padding:10px 14px;
}
#map-toolbar label,#map-toolbar span{color:var(--t-primary)}
#map-toolbar span[style*="color:#555"],
#map-toolbar span[style*="color:#333"]{color:var(--t-secondary)!important}

.mt-group+.mt-group{border-left:1px solid rgba(255,255,255,.10);padding-left:10px}

.mt-seg{
  display:inline-flex;border:1px solid rgba(255,255,255,.14);border-radius:8px;overflow:hidden;
  background:rgba(0,0,0,.20);
}
.mt-btn{
  padding:5px 10px;border:none;background:transparent;color:var(--t-secondary);
  font-size:10.5px;font-weight:600;cursor:pointer;
  border-right:1px solid rgba(255,255,255,.08);
  transition:background .12s,color .12s;
}
.mt-btn:last-child{border-right:none}
.mt-btn:hover{background:rgba(255,255,255,.08);color:var(--t-primary)}
.mt-btn.mt-active{background:linear-gradient(180deg, rgba(68,114,196,.55) 0%, rgba(68,114,196,.35) 100%);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}

#map-search,#map-goto{
  padding:6px 10px;background:rgba(0,0,0,.28);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:11px;
  transition:border-color .12s,background .12s;
}
#map-search:hover,#map-goto:hover{border-color:rgba(255,255,255,.20);background:rgba(0,0,0,.34)}
#map-search:focus,#map-goto:focus{outline:none;border-color:#8BA9FF;background:rgba(0,0,0,.38);box-shadow:0 0 0 3px rgba(68,114,196,.22)}
#map-search::placeholder,#map-goto::placeholder{color:var(--t-secondary)}

#map-bl-filter,#map-datepicker{
  padding:5px 8px;background:rgba(0,0,0,.28);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:10.5px;
  cursor:pointer;
}
#map-bl-filter:focus,#map-datepicker:focus{outline:none;border-color:#8BA9FF;box-shadow:0 0 0 3px rgba(68,114,196,.22)}
#map-bl-filter option{background:var(--surface-2);color:var(--t-primary)}

.mt-cb{color:var(--t-secondary)}
.mt-cb:hover{color:var(--t-primary)}
.mt-cb input{accent-color:#8BA9FF}

.mt-sm-btn{
  padding:5px 10px;background:rgba(255,255,255,.06);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);border-radius:8px;
  font-size:10.5px;font-weight:600;cursor:pointer;
  transition:background .12s,border-color .12s;
}
.mt-sm-btn:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.24)}
.mt-sm-btn.mt-lasso{background:rgba(245,124,0,.35);color:#FFCC80;border-color:rgba(245,124,0,.60)}
.mt-sm-btn.mt-lasso:hover{background:rgba(245,124,0,.50);color:#FFE0B2}
.mt-sm-btn.mt-lasso.active{background:#E65100;color:#fff;box-shadow:0 0 0 2px rgba(255,193,7,.70)}

#map-stats{color:var(--t-secondary)}

/* Dark-Tiles via CSS-Filter: invert + hue-rotate macht jeden Tile-Provider zum Dark-Mode.
   Tuning: niedrigere Saturation killt den Pink-Schimmer der invertierten Gruenflaechen,
   hoeherer contrast bringt Strassen/Schrift besser heraus. */
#map-box.map-dark-tiles .leaflet-tile-pane{
  filter:invert(1) hue-rotate(185deg) brightness(.88) saturate(.55) contrast(1.08);
}
/* Marker + Overlays NICHT invertieren (nur die Tiles) + Glow fuer bessere Sichtbarkeit */
#map-box.map-dark-tiles .leaflet-marker-pane,
#map-box.map-dark-tiles .leaflet-overlay-pane,
#map-box.map-dark-tiles .leaflet-popup-pane,
#map-box.map-dark-tiles .leaflet-tooltip-pane{filter:none}
/* v8.x Perf: Statt drop-shadow auf 1357 Marker (~2714 GPU-Filter-Ops!), nur bei Hover.
   Stattdessen dezenter weisser Stroke und leichte Hintergrund-Opacity via Marker-Options. */
#map-box.map-dark-tiles .leaflet-overlay-pane svg path.halle-map-marker:hover{
  filter:drop-shadow(0 0 6px rgba(0,0,0,.90)) drop-shadow(0 0 2px rgba(255,255,255,.55));
}

/* Dark-Toggle-Button (sitzt in der Toolbar wie die anderen mt-sm-btn) */
#map-dark-toggle-btn.is-on{
  background:linear-gradient(180deg, rgba(68,114,196,.48) 0%, rgba(68,114,196,.28) 100%);
  color:#C6DAFA;border-color:rgba(139,169,255,.55);
  box-shadow:0 0 14px rgba(68,114,196,.30);
}

/* Dark-Theme-Override fuer den grossen "Eingeplante ausgeblendet"-Toggle.
   Light-Theme oben in dieser Datei macht is-off=weiss/grau (unlesbar im Dark). */
.mt-big-toggle{
  background:linear-gradient(180deg, rgba(68,114,196,.48) 0%, rgba(68,114,196,.28) 100%);
  color:#C6DAFA;border-color:rgba(139,169,255,.55);
  box-shadow:0 0 14px rgba(68,114,196,.30);
}
.mt-big-toggle:hover{
  background:linear-gradient(180deg, rgba(68,114,196,.62) 0%, rgba(68,114,196,.38) 100%);
  filter:none;
}
.mt-big-toggle.is-off{
  background:rgba(255,255,255,.06);color:var(--t-secondary);
  border-color:rgba(255,255,255,.18);box-shadow:none;
}
.mt-big-toggle.is-off:hover{
  background:rgba(255,255,255,.14);color:var(--t-primary);
  border-color:rgba(255,255,255,.28);
}
.mt-big-toggle .mt-bt-dot{box-shadow:0 0 6px rgba(255,214,0,.7)}
.mt-big-toggle.is-off .mt-bt-dot{background:rgba(255,255,255,.30);box-shadow:none}

/* Leaflet-Attribution + Controls im Dark-Look */
.leaflet-container{background:#0B0F1A!important}
.leaflet-control-attribution{
  background:rgba(28,36,58,.85)!important;color:var(--t-secondary)!important;
  font-size:10px!important;padding:2px 6px!important;
  border-radius:6px 0 0 0!important;
}
.leaflet-control-attribution a{color:#8BA9FF!important}
.leaflet-control-zoom a{
  background:rgba(28,36,58,.88)!important;color:var(--t-primary)!important;
  border:1px solid rgba(255,255,255,.14)!important;
}
.leaflet-control-zoom a:hover{background:rgba(40,50,78,.95)!important}

/* Leaflet-Popup im Dark */
.leaflet-popup-content-wrapper{
  background:rgba(28,36,58,.95)!important;color:var(--t-primary)!important;
  border:1px solid rgba(255,255,255,.14)!important;
  box-shadow:0 12px 40px rgba(0,0,0,.55)!important;border-radius:10px!important;
}
.leaflet-popup-tip{background:rgba(28,36,58,.95)!important}
.leaflet-popup-close-button{color:var(--t-secondary)!important}
.leaflet-popup-close-button:hover{color:var(--t-primary)!important}

/* =============================
   Overlays, Dialoge, Formulare
   ============================= */
/* v7.5.1: Verdunkelter Hintergrund OHNE backdrop-filter (Performance-Win) */
.overlay{background:rgba(11,15,26,.42)}

.dialog, .stammdaten-shell{
  background:var(--gh-panel);
  border:1px solid var(--gh-border);
  border-radius:8px;
  box-shadow:0 16px 40px rgba(0,0,0,.45);
  color:var(--gh-text);
}
/* Pipeline kriegt eigenes Setup (Vollbild + transparente Flaeche) - bleibt wie es war */
/* v7.5.1: Sub-Dialog ueber Shell -> KEIN zweiter backdrop-filter (Stacking vermeiden!) */
.stammdaten-shell .dialog,
.urlaub-shell .dialog,
.kalender-shell .dialog{
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}
.dialog h3, .sd-head h3{color:var(--t-primary)}
.dialog label{color:var(--t-secondary)}
.dialog .info{color:var(--t-secondary)}
.dialog input,.dialog select,.dialog textarea{
  background:rgba(0,0,0,.25);
  border:1px solid rgba(255,255,255,.10);
  color:var(--t-primary);
  border-radius:6px;
  padding:8px 10px;
  transition:border-color .15s,background .15s,box-shadow .15s;
}
.dialog input:hover,.dialog select:hover,.dialog textarea:hover{border-color:rgba(255,255,255,.18)}
.dialog input:focus,.dialog select:focus,.dialog textarea:focus{
  background:rgba(0,0,0,.35);
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(68,114,196,.18);
  outline:none;
}
.dialog label{font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;font-weight:600}
.dialog input::placeholder{color:var(--t-secondary)}
.dialog input[readonly]{background:rgba(255,255,255,.03);color:var(--t-secondary)}
.dialog select option{background:var(--surface-2);color:var(--t-primary)}
.dialog .warn{background:rgba(245,124,0,.15);color:#FFCC80;border:1px solid rgba(255,183,77,.30)}

/* Stammdaten - flach */
.sd-head{background:var(--gh-panel);border-bottom:1px solid var(--gh-border);padding:14px 20px;box-shadow:none}
.sd-head h3{letter-spacing:.3px;font-size:15px;font-weight:600;text-shadow:none;color:var(--gh-text)}
.sd-tabs{background:var(--gh-bg);border-right:1px solid var(--gh-border);padding:8px 0;box-shadow:none}
.sd-tab{color:var(--gh-muted);border-left:3px solid transparent;padding:10px 14px;font-size:12.5px;font-weight:600;transition:background .12s,color .12s}
.sd-tab:hover{background:var(--gh-hover);color:var(--gh-text)}
.sd-tab.active{background:var(--gh-accent-soft);color:var(--gh-text);border-left-color:var(--gh-accent);box-shadow:none}
.sd-content{background:transparent;padding:14px}
.sd-toolbar{background:transparent;border-bottom:none;padding:0 0 12px;gap:10px}
.sd-toolbar input{background:rgba(0,0,0,.35);color:var(--t-primary);border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:11px 16px;font-size:13px;transition:border-color .12s,background .12s,box-shadow .12s}
.sd-toolbar input:hover{border-color:rgba(255,255,255,.22);background:rgba(0,0,0,.40)}
.sd-toolbar input:focus{outline:none;border-color:#8BA9FF;background:rgba(0,0,0,.45);box-shadow:0 0 0 4px rgba(68,114,196,.22)}
.sd-toolbar input::placeholder{color:var(--t-secondary)}
.sd-check{color:var(--t-secondary)}
.sd-list-wrap{
  background:linear-gradient(180deg, rgba(255,255,255,.07) 0%, rgba(255,255,255,.025) 100%);
  border:1px solid rgba(255,255,255,.14);
  border-radius:14px;
  box-shadow:
    0 8px 32px rgba(0,0,0,.30),
    0 1px 0 rgba(255,255,255,.10) inset;
  overflow:auto;flex:1;
  contain:layout paint;
}
.sd-footer{color:var(--t-secondary);padding:10px 14px;border-top:none;background:transparent;font-size:11px;letter-spacing:.3px}

/* v8.0.4: Singleton-Form Dark-Mode */
.sd-singleton-form h3.sf-title{color:var(--t-primary)}
.sd-singleton-form .sf-help{color:var(--t-secondary)}
.ff-section{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.25), 0 0 0 1px rgba(255,255,255,.02) inset;padding:16px 18px}
.ff-section-title{color:var(--accent);border-bottom-color:rgba(255,255,255,.08)}
.ff-section label{color:var(--t-secondary);font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;font-weight:600}
.ff-section input{background:rgba(0,0,0,.25);color:var(--t-primary);border:1px solid rgba(255,255,255,.10);border-radius:6px;padding:8px 10px;transition:border-color .15s,background .15s,box-shadow .15s}
.ff-section input:hover{border-color:rgba(255,255,255,.18)}
.ff-section input:focus{outline:none;border-color:var(--accent);background:rgba(0,0,0,.35);box-shadow:0 0 0 3px rgba(68,114,196,.18)}
.firma-form-actions .ff-status{color:var(--t-secondary)}

/* Stammdaten-Tabelle */
.sd-table{color:var(--t-primary)}
.sd-table thead th{
  /* v8.x Perf: solid bg statt semi-transparent - spart Composite-Layer bei Sticky-Scroll */
  background:#1a2132;
  color:var(--t-secondary);
  border-bottom:1px solid rgba(139,169,255,.18);
  font-size:10.5px;font-weight:600;letter-spacing:.7px;text-transform:uppercase;
  padding:12px 14px;
}
/* v8.x Perf: contain auf jede Row isoliert Paint/Layout pro Zeile (grosser Scroll-Gewinn) */
.sd-table tbody tr{border-bottom:1px solid rgba(255,255,255,.05);contain:layout paint style}
.sd-table tbody tr:nth-child(even){background:rgba(255,255,255,.018)}
.sd-table tbody tr:hover{background:rgba(139,169,255,.10);cursor:pointer}
.sd-table tbody tr.inaktiv{opacity:.55}
.sd-table tbody td{padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.04)}
.sd-table td.sd-id{color:var(--t-link);font-weight:bold}
.sd-table td.sd-actions button{
  background:rgba(255,255,255,.06);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);
  border-radius:7px;padding:5px 10px;font-size:11px;font-weight:600;
  transition:background .15s,border-color .15s,color .15s;
}
.sd-table td.sd-actions button:hover{background:rgba(139,169,255,.18);border-color:rgba(139,169,255,.45);color:#C6DAFA}

/* Stammdaten-Formular */
.sd-group{color:#9EBFFF;border-top:1px solid rgba(139,169,255,.18);padding:14px 0 4px;margin-top:14px;font-size:11px;letter-spacing:.8px}
.sd-group:first-child{border-top:none;margin-top:4px}
.sd-edit-dialog label .req{color:#EF9A9A}
.sd-edit-dialog .field.missing input,
.sd-edit-dialog .field.missing select{border-color:#EF9A9A;background:rgba(198,40,40,.18);box-shadow:0 0 0 3px rgba(239,154,154,.12)}

.date-wrap .heute-btn,.geo-btn,.mt-sm-btn{
  background:rgba(255,255,255,.06);color:var(--t-primary);
  border:1px solid var(--line-strong);
}
.date-wrap .heute-btn:hover,.geo-btn:hover,.mt-sm-btn:hover{background:rgba(255,255,255,.14)}

/* Kundensuche */
.kunde-sug{
  /* Perf: backdrop-filter raus - Background opaker statt Blur. */
  background:rgba(30,34,48,.97);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);
  border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.04) inset;
  overflow:hidden;
}
.kunde-sug-item{border-bottom:1px solid var(--line);color:var(--t-primary)}
.kunde-sug-item:hover,.kunde-sug-item.active{background:rgba(255,255,255,.06)}
.kunde-sug-item .k-id{color:var(--t-link)}
.kunde-sug-item small{color:var(--t-secondary)}

/* Datenblatt */
.db-input{background:rgba(0,0,0,.25);color:var(--t-primary);border:1px solid rgba(255,255,255,.10);border-radius:6px;padding:8px 10px;transition:border-color .15s,background .15s,box-shadow .15s}
.db-input:hover{border-color:rgba(255,255,255,.18)}
.db-input:focus{outline:none;background:rgba(0,0,0,.35);border-color:var(--accent);box-shadow:0 0 0 3px rgba(68,114,196,.18)}
.db-field label{color:var(--t-secondary)}

/* Badges */
.sd-badge-aktiv{background:rgba(46,125,50,.26);color:#B5E6B5;border:1px solid rgba(165,214,167,.45);border-radius:999px;padding:3px 10px;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;box-shadow:0 0 12px rgba(46,125,50,.15)}
.sd-badge-inaktiv{background:rgba(198,40,40,.26);color:#FFAFAF;border:1px solid rgba(239,154,154,.45);border-radius:999px;padding:3px 10px;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;box-shadow:0 0 12px rgba(198,40,40,.15)}

/* Dialog-Buttons */
.dactions{border-top:1px solid var(--line);padding-top:12px;margin-top:14px}
.btn-ok{background:linear-gradient(180deg, #5a8ad4 0%, var(--accent) 100%);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:8px 16px;font-weight:600;letter-spacing:.3px;box-shadow:0 2px 8px rgba(68,114,196,.35), 0 0 0 1px rgba(255,255,255,.04) inset;transition:all .15s}
.btn-ok:hover{background:linear-gradient(180deg, #6a9ae0 0%, #4472C4 100%);box-shadow:0 4px 14px rgba(68,114,196,.55), 0 0 0 1px rgba(255,255,255,.06) inset;transform:translateY(-1px)}
.btn-no{background:rgba(255,255,255,.06);color:var(--t-primary);border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:8px 14px;font-weight:500;transition:all .15s}
.btn-no:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.24)}

/* Fotos-Tab */
.fotos-wrap{display:flex;flex-direction:column;gap:10px}
.fotos-count{color:var(--t-secondary);font-weight:normal;font-size:11px;text-transform:none;letter-spacing:0}
.fotos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin:4px 0 12px}
.fotos-thumb{
  position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:10px;
  cursor:pointer;background:var(--surface-2);
  border:1px solid var(--line);
  transition:transform .15s,box-shadow .15s,border-color .15s;
}
.fotos-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}
.fotos-thumb:hover{transform:translateY(-1px);border-color:rgba(123,156,255,.55);box-shadow:0 4px 14px rgba(0,0,0,.5)}
.fotos-thumb:hover img{transform:scale(1.06)}

/* Upload: Drop-Zonen + Delete-Icons + Dokumente-Liste */
.fotos-ordner-head{display:flex;align-items:center;gap:8px;margin-top:6px}
.fotos-ordner-head h4{margin:0;font-size:13px;color:var(--t-primary);flex:1}
.fotos-ordner-head .fo-delete{background:none;border:none;color:#E57373;cursor:pointer;
  font-size:14px;opacity:.5;padding:3px 6px;border-radius:4px;transition:opacity .12s,background .12s}
.fotos-ordner-head .fo-delete:hover{opacity:1;background:rgba(229,115,115,.16)}
.fotos-thumb .fi-delete{position:absolute;top:4px;right:4px;
  background:rgba(0,0,0,.6);color:#fff;border:none;border-radius:50%;
  width:22px;height:22px;font-size:12px;cursor:pointer;opacity:0;
  transition:opacity .12s,background .12s;z-index:2}
.fotos-thumb:hover .fi-delete{opacity:1}
.fotos-thumb .fi-delete:hover{background:#E57373}
.fotos-thumb{cursor:grab}
.fotos-thumb:active{cursor:grabbing}
.fotos-thumb.dragging{opacity:.35}
.fotos-ordner-head{transition:background .15s}
.fotos-ordner-head.drag-over{background:rgba(141,224,141,.18);outline:2px dashed #8DE08D;outline-offset:-2px;border-radius:6px;padding:4px 6px}

.upload-zone{
  border:2px dashed var(--line-strong);border-radius:10px;padding:16px;
  background:rgba(255,255,255,.02);color:var(--t-secondary);
  text-align:center;font-size:12px;cursor:pointer;
  transition:background .12s,border-color .12s;margin:6px 0 14px;
}
.upload-zone:hover{border-color:var(--accent);color:var(--t-primary);background:rgba(68,114,196,.08)}
.upload-zone.drag-active{border-color:#8DE08D;background:rgba(141,224,141,.14);color:#8DE08D}
.upload-zone input[type=file]{display:none}
.upload-zone .uz-hint{font-size:11px;opacity:.7;margin-top:4px}
.upload-progress{
  display:none;height:4px;background:rgba(255,255,255,.08);border-radius:2px;margin:6px 0;overflow:hidden;
}
.upload-progress.active{display:block}
.upload-progress-bar{height:100%;background:var(--accent);width:0;transition:width .2s}

/* Neuer Ordner Button */
.fotos-toolbar{display:flex;gap:8px;margin-bottom:4px;align-items:center}
.fotos-toolbar .hbtn{font-size:11px;padding:5px 10px}

/* Dokumente-Tab */
.dok-wrap{display:flex;flex-direction:column;gap:10px}
.dok-list{display:flex;flex-direction:column;gap:6px}
.dok-item{
  display:flex;gap:10px;align-items:center;padding:10px 12px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
}
.dok-icon{font-size:20px;flex-shrink:0}
.dok-info{flex:1;min-width:0}
.dok-name{font-size:13px;font-weight:bold;color:var(--t-primary);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dok-meta{font-size:11px;color:var(--t-secondary);display:flex;gap:10px;margin-top:2px;flex-wrap:wrap}
.dok-kat-input{
  background:var(--surface-1);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:5px;
  padding:3px 7px;font-size:11px;width:160px;
}
.dok-kat-input:focus{outline:none;border-color:var(--accent)}
.dok-actions{display:flex;gap:6px;flex-shrink:0}
.dok-actions a.hbtn{text-decoration:none;display:inline-block}
.dok-empty{padding:28px;text-align:center;color:var(--t-secondary);font-size:12px;font-style:italic}

/* Fotos-Lightbox */
#fotos-lightbox{
  display:none;position:fixed;inset:0;z-index:3000;
  background:rgba(0,0,0,.9);
  align-items:center;justify-content:center;flex-direction:column;gap:12px;
  padding:30px;
}
#fotos-lightbox.open{display:flex}
#fotos-lightbox-img{max-width:min(92vw,1400px);max-height:82vh;border-radius:10px;box-shadow:0 20px 80px rgba(0,0,0,.6);border:1px solid var(--line)}
#fotos-lightbox-caption{color:var(--t-primary);font-size:13px;opacity:.8}

/* "Heute"-Label rechts neben Heute-Button in der KW-Leiste */
#today-label{font-size:11px;color:rgba(255,255,255,.65);margin-left:6px;white-space:nowrap}

/* Kompakte KW-Aktions-Icons neben der KW-Navigation (KW kopieren, Woche leeren) */
.kw-actions{display:inline-flex;gap:4px;margin-left:10px;padding-left:10px;border-left:1px solid rgba(255,255,255,.15)}
.kw-mini-btn{
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);
  color:#fff;padding:3px 8px;border-radius:5px;cursor:pointer;font-size:13px;
  line-height:1;opacity:.75;transition:opacity .12s,background .12s;
}
.kw-mini-btn:hover{opacity:1;background:rgba(255,255,255,.18)}

/* Tag-Header des heutigen Tages: dezenter Akzent */
.day-header.today{color:#A9C4FF;box-shadow:inset 3px 0 0 0 #8BA9FF}
.day-header.today b{color:#CDE0FF}

/* Sub-Tabs im Halle-Edit-Dialog (Stammdaten / Datenblatt / Fotos) */
.sd-subtabs{display:none;gap:4px;margin:4px 0 12px;padding:3px;background:rgba(0,0,0,.24);border-radius:8px;border:1px solid var(--line)}
.sd-subtabs.active{display:flex}
.sd-subtab{
  flex:1;padding:6px 10px;border-radius:6px;cursor:pointer;text-align:center;
  font-size:12px;font-weight:bold;color:var(--t-secondary);
  transition:background .12s,color .12s;user-select:none;
}
.sd-subtab:hover{background:rgba(255,255,255,.05);color:var(--t-primary)}
.sd-subtab.active{background:rgba(255,255,255,.11);color:var(--t-primary);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.sd-subtab.disabled{opacity:.4;cursor:not-allowed}
.sd-subtab .sd-subtab-count{opacity:.65;font-weight:normal;margin-left:4px;font-size:11px}

/* Kalender-Overlay / Superplaner */
.kalender-shell{
  width:95vw;max-width:1700px;height:93vh;
  /* Perf: backdrop-filter raus - Jahresplan ist gross (95vw x 93vh) und voll
     hover-barer Wochen-Zellen. Blur war bei jedem KW-Hover sichtbar laggy. */
  background:var(--gh-panel);
  border:1px solid var(--gh-border);border-radius:8px;
  box-shadow:0 16px 40px rgba(0,0,0,.45);
  color:var(--gh-text);display:flex;flex-direction:column;overflow:hidden;
}

/* v8.1: Termin-Kalender-Shell (analog kalender-shell, eigener Workflow) */
.termine-shell{
  width:92vw;max-width:1400px;height:90vh;
  background:var(--gh-panel);
  border:1px solid var(--gh-border);border-radius:8px;
  box-shadow:0 16px 40px rgba(0,0,0,.45);
  color:var(--gh-text);display:flex;flex-direction:column;overflow:hidden;
}
#term-head{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(0,0,0,.35);border-bottom:1px solid var(--line);flex-wrap:wrap}
#term-head h3{margin:0;font-size:16px;color:var(--t-primary)}
.term-month-nav{display:flex;align-items:center;gap:8px;margin-left:20px}
#term-month-label{font-size:18px;font-weight:bold;min-width:140px;text-align:center}
.term-view-toggle{margin-left:20px;display:flex;gap:2px;background:rgba(0,0,0,.35);padding:2px;border-radius:8px}
.term-view-toggle button{padding:6px 14px;font-size:12px;border:none;background:transparent;color:var(--t-secondary);cursor:pointer;border-radius:6px;font-weight:600}
.term-view-toggle button.active{background:rgba(68,114,196,.35);color:#fff}
.term-head-actions{margin-left:auto}
#term-body{flex:1;overflow:auto;padding:12px}

/* Endlos-Scroll: Monatsbloecke untereinander */
.term-month-block{margin-bottom:24px}
.term-month-head{
  position:sticky;top:-12px;z-index:5;
  margin:0 -4px 8px;padding:10px 12px;
  font-size:20px;font-weight:bold;letter-spacing:.3px;
  background:linear-gradient(180deg, rgba(36,42,62,.98) 70%, rgba(36,42,62,.0) 100%);
  color:var(--t-primary);
  border-bottom:1px solid rgba(255,255,255,.10);
}
/* Monatsraster 7 Spalten, Hoehe dynamisch */
.term-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.term-weekday-head{text-align:center;font-size:11px;font-weight:bold;color:var(--t-secondary);padding:4px 0;text-transform:uppercase;letter-spacing:.5px}
.term-day-cell{
  background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.06);
  border-radius:6px;
  padding:4px 6px;
  min-height:80px;
  display:flex;flex-direction:column;gap:2px;
  cursor:pointer;
  transition:background .12s,border-color .12s;
}
.term-day-cell:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14)}
.term-day-cell.other-month{opacity:.35}
.term-day-cell.is-today{border-color:#8BA9FF;background:rgba(68,114,196,.12)}
.term-day-cell.weekend{background:rgba(0,0,0,.12)}
.term-day-num{font-size:11px;font-weight:bold;color:var(--t-primary);margin-bottom:2px}
.term-day-cell.is-today .term-day-num{color:#8BA9FF}
.term-pill{
  font-size:10px;padding:1px 5px;border-radius:3px;color:#fff;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  border-left:2px solid rgba(255,255,255,.3);
}
.term-pill.is-erledigt{opacity:.55;text-decoration:line-through}
.term-pill.is-abgesagt{opacity:.45;text-decoration:line-through;color:#ddd}
.term-day-more{font-size:10px;color:var(--t-secondary);text-align:center;padding:1px 2px}

/* Tages-Popover */
.term-day-popover{
  position:fixed;z-index:5000;min-width:320px;max-width:420px;max-height:70vh;overflow:auto;
  background:rgba(30,34,48,.97);border:1px solid rgba(255,255,255,.20);
  border-radius:12px;padding:12px;
  box-shadow:0 16px 44px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.04) inset;
}
.term-day-popover h4{margin:0 0 8px;font-size:14px;display:flex;align-items:center;gap:10px}
.term-day-popover h4 .x{margin-left:auto;cursor:pointer;opacity:.7;font-size:18px}
.term-day-popover h4 .x:hover{opacity:1}

/* Listenansicht */
.term-liste{display:flex;flex-direction:column;gap:4px}
.term-liste-filter{display:flex;gap:8px;padding:8px 4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:8px;align-items:center}
.term-liste-filter select,.term-liste-filter input[type=text]{
  background:rgba(0,0,0,.30);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);border-radius:6px;padding:4px 8px;font-size:12px;
}
.term-liste-group{margin-top:6px}
.term-liste-group-head{font-size:13px;font-weight:bold;color:var(--t-primary);padding:6px 4px;border-bottom:1px solid var(--line);margin-bottom:4px}
.term-liste-item{
  display:flex;align-items:center;gap:10px;padding:8px 10px;
  background:rgba(255,255,255,.04);border-radius:6px;cursor:pointer;
  border-left:3px solid transparent;
  transition:background .12s;
}
.term-liste-item:hover{background:rgba(255,255,255,.09)}
.term-liste-time{font-size:12px;font-weight:bold;color:var(--t-secondary);min-width:100px}
.term-liste-titel{flex:1;font-size:13px;color:var(--t-primary)}
.term-liste-meta{font-size:11px;color:var(--t-secondary)}
.term-liste-kat{font-size:10px;padding:1px 6px;border-radius:3px;color:#fff;font-weight:bold}

#kal-head{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(0,0,0,.35);border-bottom:1px solid var(--line);flex-wrap:wrap}
#kal-head h3{margin:0;font-size:16px;color:var(--t-primary)}
.kal-year-nav{display:flex;align-items:center;gap:8px;margin-left:20px}
#kal-year-label{font-size:18px;font-weight:bold;min-width:70px;text-align:center}
.kal-head-actions{margin-left:auto}

/* BL-Dropdown fuer Ferien */
.kal-bl-wrap{position:relative;margin-left:12px}
.kal-bl-btn{
  background:rgba(255,255,255,.08);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;
  padding:6px 10px;font-size:12px;font-weight:bold;cursor:pointer;
  display:flex;align-items:center;gap:6px;white-space:nowrap;
}
.kal-bl-btn:hover{background:rgba(255,255,255,.14)}
.kal-bl-btn .kal-bl-caret{opacity:.6;font-size:10px}
.kal-bl-pop{
  display:none;position:absolute;top:calc(100% + 4px);left:0;z-index:20;
  /* Perf: backdrop-filter raus, Background kompensiert. */
  background:rgba(30,34,48,.97);border:1px solid rgba(255,255,255,.14);border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.04) inset;
  padding:8px;min-width:220px;max-height:360px;overflow-y:auto;
}
.kal-bl-pop.open{display:block}
.kal-bl-item{
  display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:4px;
  cursor:pointer;font-size:12px;color:var(--t-primary);user-select:none;
}
.kal-bl-item:hover{background:rgba(255,255,255,.08)}
.kal-bl-item input{accent-color:var(--accent);cursor:pointer}
.kal-bl-actions{display:flex;gap:6px;padding:6px 4px 2px;border-top:1px solid var(--line);margin-top:6px}
.kal-bl-mini{background:rgba(255,255,255,.06);border:1px solid var(--line-strong);color:var(--t-secondary);border-radius:4px;padding:3px 8px;font-size:10px;cursor:pointer}
.kal-bl-mini:hover{color:var(--t-primary);background:rgba(255,255,255,.12)}

/* v8.2: Forecast/Statistikleiste - jetzt Teil des Wartungsfortschritts, nicht mehr oben */
#kal-forecast{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:0;background:transparent;border-bottom:none}
.kal-fc-card{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:7px 12px;text-align:center;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.kal-fc-num{font-size:20px;font-weight:bold;color:var(--t-primary);line-height:1}
.kal-fc-num.kal-fc-ok{color:#A5D6A7}
.kal-fc-num.kal-fc-warn{color:#FFB074}
.kal-fc-label{font-size:10px;color:var(--t-secondary);margin-top:3px;text-transform:uppercase;letter-spacing:.3px}

/* v8.2: Gemeinsamer Scroll-Bereich fuer Grid + Fortschritt. Min-width max-content,
   damit Chart-Canvas in voller Grid-Breite Platz hat (horizontales Scroll synchron). */
#kal-scroll-area{flex:1;overflow:auto;display:flex;flex-direction:column;contain:layout paint}
#kal-fortschritt{padding:14px 16px 16px;border-top:1px solid var(--line);background:rgba(0,0,0,.12);margin-top:8px;min-width:max-content}
.kal-fort-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.kal-fort-title{font-size:13px;font-weight:bold;color:var(--t-primary,#fff);letter-spacing:.2px}
/* Forecast-Karten auf fixe sichtbare Breite begrenzen (nicht horizontal mitstrecken) */
#kal-forecast{max-width:1100px}

/* Trend-Linie ueber der Heatmap */
#kal-trend{padding:8px 16px 4px;background:rgba(0,0,0,.15);border-bottom:1px solid var(--line)}
#kal-trend-head{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--t-secondary);text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px}
#kal-trend svg{display:block;width:100%;height:46px}
.kal-trend-fill{fill:url(#kal-trend-grad)}
.kal-trend-line{fill:none;stroke:#8BA9FF;stroke-width:1.5;stroke-linejoin:round}
.kal-trend-dot{fill:#FFD600;stroke:#1A2030;stroke-width:1}

/* Monats-Header-Zeile in der Heatmap */
.kal-month-head th{
  text-align:center;color:#B9C7E0;font-size:10px;font-weight:bold;
  background:rgba(139,169,255,.10);border-bottom:1px solid rgba(139,169,255,.25);
  padding:3px 2px;letter-spacing:.3px;text-transform:uppercase;
}

#kal-legend{padding:8px 16px;font-size:11px;color:var(--t-secondary);display:flex;align-items:center;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);background:rgba(0,0,0,.1)}
#kal-legend .kal-cell{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:3px;vertical-align:middle;border:1px solid rgba(255,255,255,.12)}

/* v8.2: Grid kein eigenes Scroll mehr - der kal-scroll-area wrapper uebernimmt */
#kal-grid{padding:12px 16px;position:relative}
.kal-table{border-collapse:separate;border-spacing:3px;font-size:11px;position:relative;width:100%;contain:layout paint}
.kal-table th{font-weight:normal;color:var(--t-secondary);padding:3px;text-align:center}
.kal-table th.kal-kw-head{min-width:34px}
.kal-table th.kal-trupp-head{text-align:left;padding:0 10px 0 4px;color:var(--t-primary);font-weight:bold;font-size:12px;position:sticky;left:0;background:var(--surface-1);z-index:2;white-space:nowrap}
.kal-table td{padding:0;position:relative}
/* v8.x Perf: transform:scale entfernt - 260 Composite-Layer weg. Outline statt shadow = kein GPU-Layer */
.kal-cell{width:34px;height:34px;border-radius:4px;border:1px solid rgba(255,255,255,.08);cursor:pointer;display:block;transition:outline-color .1s,background .1s}
.kal-cell:hover{outline:2px solid rgba(255,255,255,.55);outline-offset:-1px;border-color:rgba(255,255,255,.35)}
.kal-cell.kal-c0{background:#1E2230}
.kal-cell.kal-c1{background:#2F4466}
.kal-cell.kal-c2{background:#3D5F94}
.kal-cell.kal-c3{background:#4F7CC4}
.kal-cell.kal-c4{background:#6A9AE8}
/* v7.5.4: Lead-Planungs-Modus - Heatmap intensiver damit volle KWs auffallen */
body.kal-planung-aktiv .kal-cell.kal-c0{background:#15192A}
body.kal-planung-aktiv .kal-cell.kal-c1{background:#1F3056}
body.kal-planung-aktiv .kal-cell.kal-c2{background:#2D4F8F}
body.kal-planung-aktiv .kal-cell.kal-c3{background:#3F70C8}
body.kal-planung-aktiv .kal-cell.kal-c4{background:#5C8FE5}
/* KWs in denen die Halle bereits geplant ist - gelb umrandet */
.kal-cell.kal-halle-vorhanden{box-shadow:0 0 0 2px #FFD600 inset, 0 0 6px rgba(255,214,0,.4)}
/* Banner fuer Lead-Planungs-Modus */
#kal-planung-banner{padding:10px 16px;background:linear-gradient(90deg,rgba(46,125,50,.4),rgba(31,56,100,.3));
  border-bottom:2px solid #2E7D32;display:flex;align-items:center;gap:14px;color:var(--t-primary);font-size:13px;flex-shrink:0}
#kal-planung-banner.active{display:flex!important}
#kal-planung-banner .kpb-icon{font-size:18px}
#kal-planung-banner .kpb-text{flex:1;line-height:1.4}
#kal-planung-banner .kpb-text strong{color:#fff}
#kal-planung-banner .kpb-hint{opacity:.8;font-size:11px;margin-top:2px;display:block}
#kal-planung-banner .kpb-cancel{background:rgba(198,40,40,.7);border:1px solid #C62828;color:#fff;
  padding:5px 12px;border-radius:5px;cursor:pointer;font-size:12px;font-weight:bold}
#kal-planung-banner .kpb-cancel:hover{background:#C62828}
.kal-cell.kal-today{box-shadow:0 0 0 2px #FFD600 inset}
.kal-cell.kal-ferien::after{content:'F';position:absolute;top:-2px;right:2px;font-size:8px;color:#9EBFFF;font-weight:bold}
.kal-sum-row td{padding-top:8px}
.kal-sum-cell{width:28px;height:20px;border-radius:4px;background:var(--surface-2);color:var(--t-secondary);font-size:10px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.kal-sum-cell:hover{background:var(--surface-3);color:var(--t-primary)}
.kal-sum-cell.kal-sum-today{box-shadow:0 0 0 2px #FFD600 inset}
.kal-badges-row td{text-align:center;padding-top:2px}

/* Feiertags-Zeile: Punkte pro Feiertag, unterschieden bundesweit vs. regional */
.kal-feier-row td{padding-top:3px;text-align:center}
.kal-feier-cell{display:inline-flex;gap:2px;justify-content:center;align-items:center}
.kal-feier-dot{display:inline-block;width:9px;height:9px;border-radius:50%;cursor:help;border:1px solid rgba(255,255,255,.2)}
.kal-feier-dot.kal-feier-bundesweit{background:#EF5350}
.kal-feier-dot.kal-feier-regional{background:#FFB074}
/* v8.0.7: Feiertag-Name unter den Dots */
.kal-feier-label{font-size:9px;line-height:1.15;color:#C62828;font-weight:600;
  margin-top:1px;text-align:center;word-break:break-word;white-space:normal;
  max-height:22px;overflow:hidden}

/* v7.4: Urlaubs-Heatmap-Zeile */
.kal-urlaub-row th,.kal-urlaub-row td{padding-top:2px;padding-bottom:2px}
.kal-url-bar{height:18px;border-radius:3px;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:bold;color:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.1)}
.kal-url-bar.kal-url-few{background:rgba(139,222,139,.35)}
.kal-url-bar.kal-url-mid{background:rgba(255,176,116,.45)}
.kal-url-bar.kal-url-many{background:rgba(239,83,80,.55)}

/* v7.4: Grossprojekt-Zeile mit Balken - Text wraps nach unten, nicht seitlich */
.kal-projekte-row td{padding:2px 0;vertical-align:top}
.kal-projekt-cell{position:relative}
.kal-projekt-bar{padding:6px 10px;border-radius:5px;font-size:11px;font-weight:bold;
  color:#fff;cursor:pointer;
  white-space:normal;word-wrap:break-word;overflow-wrap:anywhere;
  line-height:1.3;
  min-height:26px;
  box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .1s,box-shadow .1s}
.kal-projekt-bar:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.4)}
.kal-projekt-bar .pb-detail{display:block;font-weight:normal;font-size:10px;opacity:.85;margin-top:2px}

/* v7.4: Notiz-Zeile */
.kal-notiz-row td{padding:1px 0}
.kal-notiz-cell{height:22px;display:flex;align-items:center;justify-content:center;
  border-radius:3px;font-size:10px;cursor:pointer;border:1px solid transparent;transition:background .1s}
.kal-notiz-cell.kal-notiz-empty{color:rgba(255,255,255,.25);font-size:14px}
.kal-notiz-cell.kal-notiz-empty:hover{background:rgba(255,255,255,.08);color:var(--t-primary);border-color:var(--line)}
.kal-notiz-cell.kal-notiz-set{background:rgba(200,120,10,.25);color:#FFDAA8;font-style:italic;border-color:rgba(200,120,10,.4)}
.kal-notiz-cell.kal-notiz-set:hover{background:rgba(200,120,10,.4);color:#fff}

/* v7.4: Actions-Zeile unter der Tabelle */
.kal-actions-row{display:flex;align-items:center;gap:8px;padding:12px 0 4px;border-top:1px solid var(--line);margin-top:10px;flex-wrap:wrap}

/* v8.1: Hover-Floater (Mini-Karte rechts unten) */
#kal-hover-floater{position:fixed;bottom:18px;right:18px;width:340px;height:260px;
  background:var(--surface-1,#1F2430);border:1px solid var(--line,#3F475E);
  border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.55);
  z-index:1200;display:none;overflow:hidden;cursor:pointer;
  transition:opacity .25s ease, transform .25s ease;opacity:0;transform:translateY(8px)}
#kal-hover-floater.open{display:block;opacity:1;transform:translateY(0)}
#kal-hover-floater .khf-cap{position:absolute;top:0;left:0;right:0;z-index:10;
  background:linear-gradient(180deg,rgba(0,0,0,.78),rgba(0,0,0,.0));
  color:#fff;font-size:11px;font-weight:bold;padding:7px 10px;letter-spacing:.2px;
  pointer-events:none}
#kal-hover-floater .khf-cap .khf-sub{display:block;font-weight:normal;opacity:.85;font-size:10px;margin-top:1px}
#kal-hover-floater .khf-map{position:absolute;inset:0}
#kal-hover-floater .khf-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--t-secondary,#8a93a8);font-size:12px;font-style:italic;text-align:center;padding:20px}
#kal-hover-floater .khf-hint{position:absolute;bottom:6px;right:8px;z-index:10;
  background:rgba(0,0,0,.55);color:#fff;font-size:9px;padding:2px 6px;border-radius:3px;letter-spacing:.3px}
@keyframes khfPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.7}}
/* Perf: Animation nur bei Hover statt kontinuierlich (zuvor lief infinite auf 100+ Marker = Battery-Killer) */
.khf-marker{border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.6)}
.khf-marker:hover{animation:khfPulse 1.4s ease-in-out infinite}

/* v8.1: Burn-Down Chart unter dem Grid */
/* v8.2: kal-burndown ist jetzt innerhalb #kal-fortschritt - kein eigenes Padding/Background mehr noetig */
/* v8.2: kal-burndown ohne eigenen Rahmen - Canvas darf fuer Grid-Sync in volle Tabellen-Breite gehen */
#kal-burndown{margin-top:12px;padding:0;background:transparent;border:none;border-radius:0}
#kal-burndown .kbd-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:10px}
#kal-burndown .kbd-title{font-size:13px;font-weight:bold;color:var(--t-primary,#fff);letter-spacing:.2px}
#kal-burndown .kbd-legend{display:flex;gap:14px;font-size:11px;color:var(--t-secondary,#8a93a8)}
#kal-burndown .kbd-legend i{display:inline-block;width:14px;height:3px;margin-right:5px;vertical-align:middle;border-radius:2px}
#kal-burndown .kbd-leg-soll i{background:#5B8CFF}
#kal-burndown .kbd-leg-ist i{background:#34C759}
#kal-burndown .kbd-leg-fc i{background:#34C759;background-image:repeating-linear-gradient(90deg,#34C759 0 4px,transparent 4px 7px)}
#kal-burndown canvas{display:block;width:100%;height:230px}
#kal-burndown .kbd-foot{font-size:11px;color:var(--t-secondary,#8a93a8);margin-top:6px;min-height:14px}
#kal-burndown .kbd-foot b{color:var(--t-primary,#fff);font-weight:bold}

/* v7.4: Notizen-Uebersicht unter dem Grid */
.kal-notizen-liste{margin-top:16px;padding:12px;background:rgba(200,120,10,.10);border:1px solid rgba(200,120,10,.35);border-radius:8px}
.kal-notizen-titel{font-size:13px;font-weight:bold;color:#FFDAA8;margin-bottom:8px;letter-spacing:.3px}
.kal-notizen-items{display:flex;flex-direction:column;gap:6px}
.kal-notizen-item{display:flex;gap:12px;padding:8px 10px;background:rgba(255,255,255,.05);border:1px solid rgba(200,120,10,.25);border-radius:6px;cursor:pointer;transition:background .12s;align-items:flex-start}
.kal-notizen-item:hover{background:rgba(200,120,10,.20)}
.kln-kw{font-weight:bold;color:#FFDAA8;font-size:12px;min-width:52px;flex-shrink:0}
.kln-datum{color:var(--t-secondary);font-size:11px;min-width:110px;flex-shrink:0;padding-top:1px}
.kln-text{color:var(--t-primary);font-size:13px;line-height:1.45;flex:1;white-space:pre-wrap;word-break:break-word}

/* Notiz-Icon in der Zelle: groesser und besser erkennbar */
.kal-notiz-cell{font-size:13px!important}

/* v7.4: Monat-Header klickbar */
.kal-month-head th{cursor:pointer;transition:background .12s}
.kal-month-head th:hover{background:rgba(139,169,255,.25)!important}

/* v8.3: Grossprojekt-Zelle - farbig mit Label */
.kal-cell.kal-cell-grossprojekt{
  display:flex;align-items:center;justify-content:center;
  padding:2px;line-height:1;letter-spacing:-.2px;
  border:1px solid rgba(255,255,255,.3);
}
/* v8.3: Einplan-Modus aktiv - alle Grid-Zellen als Klick-Ziele markieren */
body.kal-einplan-active .kal-cell{
  cursor:copy;
  outline:1px dashed rgba(255,214,0,.3);
}
/* v8.0.4: Verschieben-Modus aktiv - alle Zellen sind Klick-Ziele */
body.kal-gp-move-active .kal-cell{
  cursor:crosshair;
  outline:1px dashed rgba(46,125,50,.5);
}
body.kal-gp-move-active .kal-cell:hover{
  outline:2px solid #2E7D32;
}
/* v8.0.4: Drag-States fuer Grossprojekt-Zellen */
.kal-cell.kal-gp-dragging{opacity:.4}
.kal-cell.kal-gp-drop-target{
  outline:3px dashed #2E7D32 !important;
  outline-offset:-1px;
  background-image:linear-gradient(45deg,rgba(46,125,50,.15) 25%,transparent 25%,transparent 50%,rgba(46,125,50,.15) 50%,rgba(46,125,50,.15) 75%,transparent 75%,transparent);
  background-size:8px 8px;
}
/* v8.0.4: Aktions-Popover am Grossprojekt */
.kal-gp-popover{
  position:fixed;width:280px;background:var(--surface-2,#2A3142);
  border:1px solid var(--line-strong,rgba(255,255,255,.18));
  border-radius:8px;padding:8px;z-index:10000;
  box-shadow:0 12px 32px rgba(0,0,0,.5);color:var(--t-primary,#E8EAEF);
  font-size:12px;
}
.kal-gp-popover .gp-pop-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:4px 6px 8px;border-bottom:1px solid var(--line,rgba(255,255,255,.1));
  margin-bottom:6px;font-weight:bold;color:var(--accent,#C8780A);
  letter-spacing:.4px;font-size:11px;text-transform:uppercase;
}
.kal-gp-popover .gp-pop-x{
  background:transparent;border:none;color:var(--t-secondary,#959AA6);
  font-size:18px;cursor:pointer;line-height:1;padding:0 4px;
}
.kal-gp-popover .gp-pop-x:hover{color:var(--t-primary,#fff)}
.kal-gp-popover .gp-pop-hint{
  font-size:10px;color:var(--t-secondary,#959AA6);
  padding:2px 6px 8px;font-style:italic;line-height:1.4;
}
.kal-gp-popover .gp-sek{
  margin:6px 0;padding:8px 10px;background:rgba(255,255,255,.04);
  border-radius:6px;
}
.kal-gp-popover .gp-sek-head{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:6px;gap:6px;
}
.kal-gp-popover .gp-titel{
  font-weight:bold;flex:1;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;color:var(--t-primary,#E8EAEF);font-size:12px;
}
.kal-gp-popover .gp-x{
  background:transparent;border:1px solid rgba(139,169,255,.4);
  color:#8BA9FF;width:24px;height:24px;border-radius:5px;
  cursor:pointer;font-size:13px;font-weight:bold;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.kal-gp-popover .gp-x:hover{background:rgba(139,169,255,.2)}
.kal-gp-popover .gp-actions{
  display:grid;grid-template-columns:1fr 1fr;gap:4px;
}
.kal-gp-popover .gp-actions button{
  padding:6px 8px;font-size:11px;background:rgba(255,255,255,.06);
  color:var(--t-primary,#E8EAEF);border:1px solid var(--line,rgba(255,255,255,.12));
  border-radius:4px;cursor:pointer;font-weight:600;text-align:center;
  transition:background .12s;
}
.kal-gp-popover .gp-actions button:hover{background:rgba(255,255,255,.12)}
.kal-gp-popover .gp-actions button.gp-danger{
  border-color:rgba(198,40,40,.4);color:#EF9A9A;
}
.kal-gp-popover .gp-actions button.gp-danger:hover{
  background:rgba(198,40,40,.18);
}
body.kal-einplan-active .kal-cell:hover{
  /* v8.x Perf: transform:scale + box-shadow entfernt (260 Composite-Layer). Outline ist GPU-frei. */
  outline:2px solid #FFD600 !important;
  outline-offset:-1px;
  background:rgba(255,214,0,.15) !important;
}

/* v7.4: Projekt-Banner oberhalb der Trupp-Spalten im Wochenplaner */
#projekt-banner{background:var(--card,#fff);padding:0 8px;border-bottom:1px solid var(--border,#E5E1DC)}
.projekt-banner-item{
  display:flex;align-items:center;gap:10px;padding:8px 12px;margin:6px 0;
  background:linear-gradient(90deg,rgba(112,48,160,.08),rgba(112,48,160,.03));
  border-radius:6px;cursor:pointer;transition:background .1s;
  border-left:4px solid #7030A0;
}
.projekt-banner-item:hover{background:rgba(112,48,160,.15)}
.pb-icon{font-size:16px}
.pb-label{flex:1;font-size:13px;font-weight:bold;color:var(--navy,#1F3864)}
.pb-hint{font-size:11px;color:var(--muted,#6B7280);font-style:italic}
/* Dark-Mode */
body:not(.no-dark) #projekt-banner{background:var(--surface-1,#1F2430);border-bottom-color:var(--line,rgba(255,255,255,.10))}
body:not(.no-dark) .projekt-banner-item{background:linear-gradient(90deg,rgba(112,48,160,.22),rgba(112,48,160,.08))}
body:not(.no-dark) .pb-label{color:var(--t-primary,#E8EAEF)}
body:not(.no-dark) .pb-hint{color:var(--t-secondary,#959AA6)}

/* Saison-Farb-Akzente im Monats-Header (Frühling/Sommer/Herbst/Winter) */
.kal-month-head th[data-season="winter"]{background:rgba(139,169,255,.12);color:#CDE0FF}
.kal-month-head th[data-season="fruehling"]{background:rgba(139,222,139,.12);color:#C8F0C8}
.kal-month-head th[data-season="sommer"]{background:rgba(255,200,100,.12);color:#FFE0B2}
.kal-month-head th[data-season="herbst"]{background:rgba(234,156,90,.12);color:#FFCC9C}

/* Heute-Vertikallinie deaktiviert - die gelben Kaestchen .kal-today reichen aus */
.kal-today-line{display:none!important}
.kal-badge{display:inline-block;padding:1px 4px;border-radius:3px;font-size:8px;font-weight:bold;line-height:1.1;background:rgba(255,255,255,.08);color:var(--t-secondary);border:1px solid rgba(255,255,255,.10)}
.kal-badge.kal-badge-warn{background:rgba(245,124,0,.25);color:#FFCC80;border-color:rgba(255,183,77,.3)}
.kal-badge.kal-badge-err{background:rgba(198,40,40,.25);color:#EF9A9A;border-color:rgba(239,154,154,.3)}
.kal-badge.kal-badge-ferien{background:rgba(123,156,255,.2);color:#B9C7E0;border-color:rgba(123,156,255,.3)}
.kal-kw-nr{font-size:9px;color:var(--t-secondary);text-align:center;padding-top:4px}
.kal-kw-nr.kal-current-kw{color:#FFD600;font-weight:bold}

/* Toast */
.toast{border:1px solid var(--line-strong)}

/* Halle-Hover-Tooltip: zeigt Infos + 2 Action-Buttons (Datenblatt/Fotos) */
#halle-tooltip{
  position:fixed;z-index:2500;min-width:260px;max-width:340px;
  /* Perf: backdrop-filter raus - Tooltip taucht beim Halle-Hover auf,
     Blur-Init macht das Auftauchen selbst trage. */
  background:rgba(30,34,48,.97);
  color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);
  border-radius:12px;
  box-shadow:0 14px 44px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.04) inset;
  padding:12px 14px;
  font-size:12px;line-height:1.5;
  opacity:0;pointer-events:none;
  transition:opacity .12s ease-out;
}
#halle-tooltip.open{opacity:1;pointer-events:auto}
#halle-tooltip .ht-title{font-weight:bold;color:var(--t-primary);font-size:13px;margin-bottom:2px}
#halle-tooltip .ht-link{cursor:pointer;transition:color .12s}
#halle-tooltip .ht-link:hover{color:var(--t-link);text-decoration:underline;text-underline-offset:2px}
#halle-tooltip .ht-sub{color:var(--t-secondary);font-size:11px;margin-bottom:8px}
#halle-tooltip .ht-row{display:flex;gap:6px;padding:2px 0}
#halle-tooltip .ht-label{color:var(--t-secondary);min-width:92px;flex-shrink:0}
#halle-tooltip .ht-value{color:var(--t-primary);flex:1;word-break:break-word}
#halle-tooltip .ht-value.warn{color:#FFB074}
#halle-tooltip .ht-value.err{color:#EF9A9A}
#halle-tooltip .ht-notiz{
  background:rgba(200,120,10,.16);color:#FFDAA8;
  border-left:2px solid var(--gold);
  padding:5px 8px;border-radius:5px;margin-top:6px;
  white-space:pre-wrap;word-break:break-word;font-size:11px;
}
#halle-tooltip .ht-actions{display:flex;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
#halle-tooltip .ht-btn{
  flex:1;background:rgba(255,255,255,.06);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);
  border-radius:7px;padding:7px 8px;font-size:11px;font-weight:bold;
  cursor:pointer;text-align:center;
  transition:background .15s,border-color .15s;
  display:flex;align-items:center;justify-content:center;gap:4px;
}
#halle-tooltip .ht-btn:hover{background:rgba(255,255,255,.13);border-color:rgba(139,169,255,.45)}
#halle-tooltip .ht-btn.disabled{opacity:.4;cursor:not-allowed}
#halle-tooltip .ht-btn.disabled:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}

/* Hover-Tooltip deaktiviert (einheitliche UX Desktop/iPad/Handy - Info kommt im Tap-Dialog) */
#halle-tooltip{display:none!important}

/* Info-Box im Tap-Dialog (Ersatz fuer Hover-Tooltip) */
.m-info-box{background:var(--surface-2,#343B4F);color:var(--t-primary,#E8EAEF);
  border:1px solid var(--line-strong,rgba(255,255,255,.16));
  border-radius:8px;padding:10px 12px;margin-bottom:10px;font-size:12px;line-height:1.5}
.m-info-row{display:flex;gap:8px;padding:2px 0}
.m-info-label{color:var(--t-secondary,#959AA6);min-width:110px;flex-shrink:0;font-size:11px}
.m-info-val{color:var(--t-primary,#E8EAEF);flex:1;word-break:break-word}
.m-info-val a{color:#8BA9FF;text-decoration:none;font-weight:bold}
.m-info-val a:hover{text-decoration:underline}
.m-info-notiz{background:rgba(200,120,10,.16);color:#FFDAA8;border-left:2px solid var(--gold,#C8780A);
  padding:6px 8px;border-radius:5px;margin-top:8px;white-space:pre-wrap;word-break:break-word;font-size:12px}
.m-info-btns{display:flex;gap:6px;margin-top:10px;padding-top:8px;
  border-top:1px solid var(--line,rgba(255,255,255,.10));flex-wrap:wrap}
.m-info-btn{flex:1 1 calc(50% - 4px);min-width:0;background:var(--surface-1,#1F2430);
  color:var(--t-primary,#E8EAEF);border:1px solid var(--line-strong,rgba(255,255,255,.16));
  border-radius:6px;padding:8px 8px;font-size:12px;font-weight:bold;cursor:pointer;
  text-align:center;display:flex;align-items:center;justify-content:center;gap:4px;min-height:38px}
.m-info-btn:hover:not([disabled]){background:var(--surface-3,#3F475E);border-color:rgba(139,169,255,.5)}
.m-info-btn[disabled]{cursor:not-allowed}
.m-info-nav{display:flex;gap:6px;flex-wrap:wrap}
.m-info-navbtn{display:inline-flex;align-items:center;gap:4px;
  background:var(--surface-1,#1F2430);color:#8BA9FF !important;
  border:1px solid var(--line-strong,rgba(255,255,255,.16));
  border-radius:5px;padding:3px 8px;font-size:11px;font-weight:bold;
  text-decoration:none !important;cursor:pointer}
.m-info-navbtn:hover{background:var(--surface-3,#3F475E);border-color:rgba(139,169,255,.5)}
.m-info-tel{color:var(--t-primary,#E8EAEF);font-weight:bold}
.m-info-telbtn{display:inline-flex;align-items:center;gap:4px;
  background:#1F3864;color:#fff !important;
  border:1px solid #2a4a85;border-radius:5px;padding:2px 8px;
  font-size:11px;font-weight:bold;text-decoration:none !important;
  cursor:pointer;margin-left:4px;white-space:nowrap}
.m-info-telbtn:hover{background:#2a4a85}
/* Monteur-Mode: Touch-optimierte Groesse fuer Navi- und Anruf-Buttons */
body.monteur-mode .m-info-navbtn,
body.monteur-mode .m-info-telbtn{
  padding:8px 12px;font-size:13px;min-height:36px}

/* Pipeline-Historie im Hallen-Info-Fenster */
.m-info-historie{margin-top:12px;padding-top:10px;border-top:1px solid var(--line,rgba(255,255,255,.10))}
.m-info-historie-head{font-size:12px;font-weight:bold;color:var(--t-secondary,#959AA6)}
.m-info-historie-loading,.m-info-historie-empty,.m-info-historie-err{
  font-size:11px;color:var(--t-secondary,#959AA6);font-style:italic;padding:4px 0}
.m-info-historie-err{color:#EF9A9A}
/* Aufklappbares Details: Summary wird zum Klick-Header, list-style fuer eigenen Marker entfernt */
.m-info-historie-details{margin:0}
.m-info-historie-details>summary{cursor:pointer;padding:4px 0;list-style:none;user-select:none;
  display:flex;align-items:center;gap:6px}
.m-info-historie-details>summary::-webkit-details-marker{display:none}
.m-info-historie-details>summary::before{content:"\25B8";display:inline-block;font-size:10px;
  color:var(--t-secondary,#959AA6);transition:transform .15s ease}
.m-info-historie-details[open]>summary::before{transform:rotate(90deg)}
.m-info-historie-details>summary:hover{color:var(--t-primary,#E8EAEF)}
.m-info-historie-body{margin-top:6px}
/* Kompakte Lead-Zeile in Halle-Historie - ganze Zeile klickbar */
.m-hist-lead-row{background:var(--surface-1,#1F2430);border:1px solid var(--line,rgba(255,255,255,.10));
  border-radius:6px;margin-bottom:4px;display:flex;align-items:center;gap:8px;
  padding:6px 10px;cursor:pointer;font-size:12px;user-select:none;transition:background .12s,border-color .12s}
.m-hist-lead-row:hover{background:var(--surface-3,#3F475E);border-color:rgba(139,169,255,.4)}
.m-hist-titel{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t-primary,#E8EAEF)}
.m-hist-stage{flex-shrink:0;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:bold}
.m-hist-stage-aktiv{background:rgba(139,169,255,.2);color:#8BA9FF;border:1px solid rgba(139,169,255,.4)}
.m-hist-stage-archiv{background:rgba(149,154,166,.15);color:var(--t-secondary,#959AA6)}
.m-hist-arrow{flex-shrink:0;color:#8BA9FF;font-size:14px;font-weight:bold;opacity:.7}
.m-hist-lead-row:hover .m-hist-arrow{opacity:1}

/* Slot-Loesch-Dialog mit Lead-Option (v8.0) */
.csl-opt{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin:6px 0;
  border:1px solid var(--line,rgba(255,255,255,.12));border-radius:6px;cursor:pointer;
  background:var(--surface-1,#1F2430);transition:.12s}
.csl-opt:hover{background:var(--surface-3,#3F475E);border-color:rgba(139,169,255,.5)}
.csl-opt input[type=radio]{margin-top:3px;flex-shrink:0}
.csl-sub{color:var(--t-secondary,#959AA6);font-size:12px;margin-top:3px;font-weight:normal}
.csl-tip{background:rgba(200,120,10,.14);color:#FFDAA8;border-left:3px solid var(--gold,#C8780A);
  padding:8px 10px;border-radius:4px;margin-top:10px;font-size:12px;line-height:1.45}

/* =====================================================================
   Ende Dark Kanban Theme
   ===================================================================== */


/* =====================================================================
   v9.0 Redesign-Cleanup — GitHub-Style, Theme-Toggle, Avatare, Focus
   Haengt nach dem alten Dark-Block, hoechste Spezifitaet bei Konflikten.
   ===================================================================== */

/* --- Verbleibende Glass-Shells auf flach (alle grossen Overlays) --- */
.kalender-shell, .termine-shell, .urlaub-shell,
.pipe-shell, .pipe-einzel-shell,
#todos-overlay > div:not(.overlay),
#chat-overlay > div:not(.overlay),
.vorschriften-shell, .hilfe-shell,
.hilfe-overlay .hilfe-shell{
  background:var(--gh-panel)!important;
  border:1px solid var(--gh-border)!important;
  border-radius:8px!important;
  box-shadow:0 16px 40px rgba(0,0,0,.45)!important;
  color:var(--gh-text)!important;
}
.pipe-sidebar{
  background:var(--gh-panel)!important;
  border-left:1px solid var(--gh-border)!important;
}
body.monteur-mode #header{
  background:var(--gh-panel)!important;
}
#m-login-overlay{
  background:var(--gh-bg)!important;
}
#m-login-overlay #m-login-box{
  background:var(--gh-panel)!important;
  border:1px solid var(--gh-border)!important;
}

/* --- Badge-Pills (border-radius 10px fuer Status-Look) --- */
.slot-card .badge{border-radius:10px}
.badge.ws, .badge.vertrag-aktiv, .badge.vertrag-auftrag, .badge.vertrag-inaktiv,
.badge.rep, .badge.stoer, .badge.asset, .badge.co-trupp,
.badge.lead-archiv, .badge.lead-stage,
.sd-badge-aktiv, .sd-badge-inaktiv{border-radius:10px}

/* --- Status-Dot vor Text in Badges --- */
.badge .b-dot{
  display:inline-block;width:5px;height:5px;border-radius:50%;
  background:currentColor;margin-right:4px;vertical-align:middle;opacity:.9;
}

/* --- Focus-Ringe global (GitHub-Stil) --- */
input:not([type=checkbox]):not([type=radio]):focus,
select:focus, textarea:focus{
  outline:none;
  border-color:var(--gh-accent)!important;
  box-shadow:0 0 0 3px var(--gh-accent-soft)!important;
}

/* --- Theme-Toggle-Button im Header --- */
#theme-toggle-btn{
  background:transparent;border:1px solid var(--gh-border);color:var(--gh-text);
  padding:4px 8px;border-radius:6px;cursor:pointer;font-size:14px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .12s,border-color .12s;min-width:30px;
  font-family:inherit;
}
#theme-toggle-btn:hover{background:var(--gh-btn-hover);border-color:var(--gh-muted)}

/* --- Monteur-Avatar-Kreise (neben Monteur-Namen im Trupp-Header) --- */
.tr-avatars{
  display:inline-flex;align-items:center;gap:0;margin-right:6px;
  vertical-align:middle;flex-shrink:0;
}
.avatar{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  font-size:9px;font-weight:700;color:#fff;letter-spacing:0;
  border:2px solid var(--gh-panel);margin-left:-5px;
  flex-shrink:0;user-select:none;cursor:grab;
  transition:transform .12s;position:relative;
}
.avatar:first-child{margin-left:0}
.avatar:hover{transform:translateY(-1px) scale(1.08);z-index:2}
.avatar:active{cursor:grabbing}
.avatar.abwesend{opacity:.45;filter:grayscale(.5)}
.avatar.dragging{opacity:.4}
.avatar.a-0{background:#1F6FEB}
.avatar.a-1{background:#2DA44E}
.avatar.a-2{background:#BC4C00}
.avatar.a-3{background:#8957E5}
.avatar.a-4{background:#CF222E}
.avatar.a-5{background:#BF8700}
.avatar.a-6{background:#1B7C83}
.avatar.a-7{background:#6639BA}

/* --- Tabular numbers fuer Zahlenspalten --- */
#kw-label, .s-id, .s-km, .sb-id, .day-header,
.tr-km, .badge.asset{font-variant-numeric:tabular-nums}

/* --- Light-Mode: Overrides fuer die Stellen mit hardcoded rgba(255,255,255,X) --- */
:root[data-theme="light"] html,
:root[data-theme="light"] body{background:var(--gh-bg);color:var(--gh-text)}
:root[data-theme="light"] #header{background:var(--gh-panel);border-bottom:1px solid var(--gh-border)}
:root[data-theme="light"] #header h1,
:root[data-theme="light"] #header-logo{color:var(--gh-text)}
:root[data-theme="light"] #hallen-sidebar{background:var(--gh-panel)}
:root[data-theme="light"] .trupp-col{background:var(--gh-panel);border-color:var(--gh-border)}
:root[data-theme="light"] .trupp-header{background:var(--gh-panel);color:var(--gh-text);border-bottom-color:var(--gh-border)}
:root[data-theme="light"] .trupp-header small{color:var(--gh-muted)}
:root[data-theme="light"] .day-header{background:var(--gh-bg);color:var(--gh-text);border-color:var(--gh-border-subtle)}
:root[data-theme="light"] .day-header.today{color:var(--gh-accent);box-shadow:inset 3px 0 0 0 var(--gh-accent)}
:root[data-theme="light"] .day-header.today b{color:var(--gh-accent)}
:root[data-theme="light"] .day-section{background:transparent}
:root[data-theme="light"] .slot-card{
  background:var(--gh-card);color:var(--gh-text);
  border:1px solid var(--gh-border);border-left:3px solid var(--gh-accent);
  box-shadow:0 1px 3px rgba(31,35,40,.08), 0 1px 2px rgba(31,35,40,.04);
}
:root[data-theme="light"] .slot-card:hover{
  background:var(--gh-card-hover);border-color:var(--gh-muted);
  box-shadow:0 3px 8px rgba(31,35,40,.12), 0 1px 2px rgba(31,35,40,.06);
}
:root[data-theme="light"] .slot-card .s-id{color:var(--gh-accent)}
:root[data-theme="light"] .slot-card .s-name{color:var(--gh-text)}
:root[data-theme="light"] .slot-card .s-addr,
:root[data-theme="light"] .slot-card .s-hm,
:root[data-theme="light"] .slot-card .s-anlagen,
:root[data-theme="light"] .slot-card .s-km{color:var(--gh-muted)}
:root[data-theme="light"] .slot-card .s-hm a{color:var(--gh-accent)}
:root[data-theme="light"] .slot-card .s-zeit{color:var(--gh-accent)}
:root[data-theme="light"] .slot-card .s-notiz{
  background:var(--gh-note-bg);color:var(--gh-note-fg);
  border-left:2px solid var(--gh-note-accent);
}
:root[data-theme="light"] .slot-frei{background:var(--gh-note-bg)!important}
:root[data-theme="light"] .slot-fortsetzung{
  background:var(--gh-accent-soft);border-color:var(--gh-accent);color:var(--gh-accent);
}
:root[data-theme="light"] .sb-halle{color:var(--gh-text);border-bottom-color:var(--gh-border-subtle)}
:root[data-theme="light"] .sb-halle:hover{background:var(--gh-hover)}
:root[data-theme="light"] .sb-id{color:var(--gh-accent)}
:root[data-theme="light"] .sb-kunde{color:var(--gh-muted)}
:root[data-theme="light"] .dialog,
:root[data-theme="light"] .stammdaten-shell,
:root[data-theme="light"] .kalender-shell,
:root[data-theme="light"] .termine-shell,
:root[data-theme="light"] .urlaub-shell,
:root[data-theme="light"] .pipe-shell,
:root[data-theme="light"] .pipe-einzel-shell,
:root[data-theme="light"] .pipe-sidebar,
:root[data-theme="light"] .vorschriften-shell,
:root[data-theme="light"] .hilfe-shell{
  background:var(--gh-panel)!important;color:var(--gh-text)!important;
  border-color:var(--gh-border)!important;
}
:root[data-theme="light"] .overlay{background:rgba(31,35,40,.35)}
:root[data-theme="light"] .dialog input,
:root[data-theme="light"] .dialog select,
:root[data-theme="light"] .dialog textarea,
:root[data-theme="light"] .sd-toolbar input,
:root[data-theme="light"] .ff-section input{
  background:var(--gh-input-bg);color:var(--gh-text);
  border:1px solid var(--gh-border);
}
:root[data-theme="light"] .dialog label,
:root[data-theme="light"] .dialog .info,
:root[data-theme="light"] .ff-section label{color:var(--gh-muted)}
:root[data-theme="light"] .sd-head{background:var(--gh-panel);border-bottom-color:var(--gh-border)}
:root[data-theme="light"] .sd-head h3{color:var(--gh-text)}
:root[data-theme="light"] .sd-tabs{background:var(--gh-bg);border-right-color:var(--gh-border)}
:root[data-theme="light"] .sd-tab{color:var(--gh-muted)}
:root[data-theme="light"] .sd-tab:hover{background:var(--gh-hover);color:var(--gh-text)}
:root[data-theme="light"] .sd-tab.active{background:var(--gh-accent-soft);color:var(--gh-text);border-left-color:var(--gh-accent)}
:root[data-theme="light"] .sd-table thead th{background:var(--gh-panel);color:var(--gh-muted);border-bottom-color:var(--gh-border)}
:root[data-theme="light"] .sd-table tbody tr{border-bottom-color:var(--gh-border-subtle)}
:root[data-theme="light"] .sd-table tbody tr:nth-child(even){background:var(--gh-hover)}
:root[data-theme="light"] .sd-table tbody tr:hover{background:var(--gh-accent-soft)}
:root[data-theme="light"] .sd-table td.sd-id{color:var(--gh-accent)}
:root[data-theme="light"] #map-toolbar{background:var(--gh-panel);color:var(--gh-text);border-color:var(--gh-border)}
:root[data-theme="light"] #map-close{background:var(--gh-panel);color:var(--gh-text);border-color:var(--gh-border)}
:root[data-theme="light"] #map-search,
:root[data-theme="light"] #map-goto,
:root[data-theme="light"] #map-bl-filter,
:root[data-theme="light"] #map-datepicker{background:var(--gh-input-bg);color:var(--gh-text);border-color:var(--gh-border)}
:root[data-theme="light"] .mt-btn{color:var(--gh-muted)}
:root[data-theme="light"] .mt-btn:hover{background:var(--gh-hover);color:var(--gh-text)}
:root[data-theme="light"] .mt-btn.mt-active{background:var(--gh-accent);color:var(--gh-accent-fg);text-shadow:none}
:root[data-theme="light"] .mt-seg{background:var(--gh-input-bg);border-color:var(--gh-border)}
:root[data-theme="light"] .leaflet-container{background:#DDD!important}
:root[data-theme="light"] .leaflet-control-attribution{background:rgba(255,255,255,.85)!important;color:#333!important}
:root[data-theme="light"] .leaflet-control-attribution a{color:var(--gh-accent)!important}
:root[data-theme="light"] .leaflet-control-zoom a{background:#fff!important;color:#333!important;border-color:#D0D7DE!important}
:root[data-theme="light"] .leaflet-popup-content-wrapper{background:#fff!important;color:#333!important;border-color:#D0D7DE!important}
:root[data-theme="light"] .leaflet-popup-tip{background:#fff!important}
:root[data-theme="light"] #header-logo{background:var(--gh-accent-soft);border-color:var(--gh-border)}
:root[data-theme="light"] #kw-nav button,
:root[data-theme="light"] .hbtn{color:var(--gh-text)}
:root[data-theme="light"] #kw-nav button:hover,
:root[data-theme="light"] .hbtn:hover{background:var(--gh-btn-hover)}
:root[data-theme="light"] #sidebar-top{background:var(--gh-panel);color:var(--gh-muted);border-bottom-color:var(--gh-border)}
:root[data-theme="light"] #sidebar-search,
:root[data-theme="light"] #sidebar-controls select{background:var(--gh-input-bg);color:var(--gh-text);border-color:var(--gh-border)}
:root[data-theme="light"] .ws-chip{background:transparent;color:var(--gh-muted);border-color:var(--gh-border)}
:root[data-theme="light"] .ws-chip:hover{background:var(--gh-hover);color:var(--gh-text)}
:root[data-theme="light"] body.monteur-mode #header{background:var(--gh-panel)!important}
:root[data-theme="light"] #m-login-overlay{background:var(--gh-bg)!important}
:root[data-theme="light"] #m-login-overlay #m-login-box{background:var(--gh-panel)!important;color:var(--gh-text)!important;border-color:var(--gh-border)!important}
:root[data-theme="light"] .day-slots.drag-over{background:var(--gh-accent-soft)}
:root[data-theme="light"] .day-slots .abwesend{background:var(--gh-card);color:var(--gh-muted);border-color:var(--gh-border)}

/* v9.x: Refresh-Button + Spin-Animation (manueller Fallback für Bus-Sync) */
#refresh-all-btn{font-size:14px;line-height:1}
#refresh-all-btn.spinning{animation:wp-spin .7s linear 1}
@keyframes wp-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* =====================================================================
   Ende v9.0 Redesign-Cleanup
   ===================================================================== */


/* ======================================================================
   Druck-Layout (v9.0 Redesign) — hoher Kontrast, klare Lesbarkeit.
   Ueberschreibt Dark-Theme kompromisslos auf Schwarz-auf-Weiss.
   Fuer den schoenen PDF-Export gibt es den PDF-Button.
   ====================================================================== */
@media print{
  /* Farben erzwingen + Seitenformat */
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;
    box-shadow:none!important;text-shadow:none!important;filter:none!important;
    backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  /* DIN A4 Hochformat (210 x 297 mm) - Standard fuer Wochenplaene */
  @page{margin:10mm 10mm 12mm 10mm;size:A4 portrait}

  /* Basis: weiss/schwarz, Druck-Serifen-lose Schrift */
  html,body{
    background:#fff!important;color:#000!important;
    font-family:Arial,Helvetica,sans-serif!important;font-size:10pt!important;
  }

  /* Nicht-relevante UI ausblenden */
  #header,.overlay,#map-overlay,#hallen-sidebar,#fotos-lightbox,
  #toast-stack,.ihelp,.ihelp-ic,#projekt-banner,
  .day-actions,.s-del,.s-erledigt-row,.mw-nachweis-btn,.mw-nachweis-menu,
  #theme-toggle-btn,.rene-clown,.jumpscare-overlay,
  .kw-mini-btn,.kw-actions,#today-label,
  .trupp-minimap,.trupp-minimap-empty{display:none!important}

  /* Layout: Trupps untereinander, volle Seitenbreite */
  #main-wrap{display:block!important}
  #grid-wrap{
    overflow:visible!important;display:block!important;
    height:auto!important;background:#fff!important;padding:0!important;gap:0!important;
  }
  .trupp-col{
    page-break-inside:avoid;page-break-after:auto;
    width:100%!important;max-width:100%!important;flex:1 1 100%!important;
    margin:0 0 6mm 0!important;border:1.5pt solid #000!important;border-radius:0!important;
    background:#fff!important;color:#000!important;contain:none!important;
  }
  .trupp-col:not(.print-active){display:none!important}

  /* Trupp-Header - Navy-Balken mit weisser Schrift (freundlicher Anker) */
  .trupp-header{
    position:static!important;background:#1F3864!important;color:#fff!important;
    padding:3mm 5mm!important;border:none!important;
    page-break-after:avoid!important;
  }
  .trupp-header *{color:#fff!important}
  .trupp-header .trupp-name{font-size:13pt!important;font-weight:bold!important;letter-spacing:.3px!important}
  .trupp-header .trupp-bes,.trupp-header small{font-size:9pt!important;font-weight:normal!important;opacity:1!important}
  .trupp-header .bes-mitarbeiter{color:#fff!important;padding:0!important;background:transparent!important}
  /* Avatare im Print: als kleine Schwarz-Weiss-Kreise mit Initialen */
  .trupp-header .tr-avatars{display:inline-flex!important;gap:1mm!important;margin-right:2mm!important;vertical-align:middle!important}
  .trupp-header .avatar{
    background:#fff!important;color:#000!important;
    border:1pt solid #fff!important;width:14pt!important;height:14pt!important;
    font-size:7pt!important;margin-left:-3pt!important;
  }
  .trupp-header .avatar:first-child{margin-left:0!important}

  /* Day-Header - dezent blauer Streifen mit dunkelblauer Schrift (freundlich) */
  .day-header{
    background:#E3ECFA!important;color:#1F3864!important;
    border-top:1pt solid #1F3864!important;border-bottom:0.5pt solid #8AA0C4!important;
    padding:1.8mm 5mm!important;font-size:10.5pt!important;font-weight:bold!important;
    page-break-after:avoid!important;page-break-inside:avoid!important;
  }
  .day-header *{color:#1F3864!important}
  .day-header b{font-weight:bold!important}
  /* Heutiger Tag - kraeftiger blauer Akzent */
  .day-header.today{background:#B8CFF0!important}
  .day-header.today *{color:#0D1F3E!important}
  /* Feiertag - rot */
  .day-header.is-feiertag{background:#FFE5E5!important}
  .day-header.is-feiertag .day-feiertag-badge{background:#C62828!important;color:#fff!important;border-radius:2pt!important;padding:0 3pt!important;font-size:8pt!important}
  .day-header.is-feiertag .day-feiertag-name{color:#8B1A1A!important;font-style:italic!important;font-weight:normal!important}

  /* Day-Slots Container - schmaler Abstand */
  .day-slots{padding:2mm 3mm!important;gap:1.5mm!important}
  .day-slots.drag-over{outline:none!important;background:transparent!important}

  /* Urlaubs-Badges im Tag-Header - Farben nach Abwesenheits-Typ */
  .day-urlaub-badges{padding:1mm 3mm!important;gap:1.5mm!important}
  .day-url-badge{
    border-radius:2pt!important;padding:0 3pt!important;
    font-size:8pt!important;font-weight:bold!important;
  }
  .day-url-badge.art-urlaub{background:#2E7D32!important;color:#fff!important;border:0.5pt solid #1B5E20!important}
  .day-url-badge.art-krank{background:#C62828!important;color:#fff!important;border:0.5pt solid #8B1A1A!important}
  .day-url-badge.art-sonder{background:#7030A0!important;color:#fff!important;border:0.5pt solid #4A1F6E!important}
  .day-url-badge.art-fortbildung{background:#E65100!important;color:#fff!important;border:0.5pt solid #A03000!important}
  .day-url-badge.art-ausgleich{background:#455A64!important;color:#fff!important;border:0.5pt solid #263238!important}

  /* Slot-Card - deutlich blaue Fuellung fuer freundliches, nicht-steriles Druckbild.
     Background mit !important - ueberschreibt den sehr zarten 8%-inline-Ton aus JS,
     damit alle Slots einheitlich sichtbar getoent sind. Art-Info kommt ueber den
     kraeftigen linken Farbbalken (border-left-color, aus JS inline). */
  .slot-card{
    background:#CFDCEE!important;
    color:#000!important;
    border-top:0.5pt solid #6988B5!important;
    border-right:0.5pt solid #6988B5!important;
    border-bottom:0.5pt solid #6988B5!important;
    border-left-width:3.5pt!important;
    border-left-style:solid!important;
    border-left-color:#1F3864;
    border-radius:0!important;padding:2mm 3mm!important;margin:0!important;
    page-break-inside:avoid!important;transform:none!important;
    display:block!important;
  }
  .slot-card *{color:#000!important}
  .slot-card .s-top{display:flex!important;justify-content:space-between!important;align-items:baseline!important;gap:3mm!important;margin-bottom:1mm!important;flex-wrap:wrap!important}
  .slot-card .s-top-left{display:flex!important;align-items:baseline!important;gap:2mm!important;flex:1!important;min-width:0!important}
  .slot-card .s-top-right{display:flex!important;gap:2mm!important;align-items:center!important;flex-wrap:wrap!important}
  .slot-card .s-id{font-weight:bold!important;font-size:10pt!important;white-space:nowrap!important}
  .slot-card .s-name{font-weight:bold!important;font-size:10.5pt!important;flex:1!important}
  .slot-card .s-zeit{font-weight:bold!important;font-size:9.5pt!important;border:0.5pt solid #000!important;padding:0 3pt!important;border-radius:2pt!important}
  .slot-card .s-col-left,.slot-card .s-col-right{display:block!important;margin:0.5mm 0!important}
  .slot-card .s-addr,.slot-card .s-anlagen{font-size:9pt!important;margin:0.3mm 0!important}
  .slot-card .s-hm{font-size:9pt!important;margin:0.3mm 0!important}
  .slot-card .s-hm a{color:#000!important;text-decoration:none!important}
  .slot-card .s-hm a::after{content:""!important}
  .slot-card .s-km{font-weight:bold!important;font-size:9pt!important;text-align:right!important;white-space:nowrap!important}
  .slot-card .s-range{font-weight:bold!important;font-size:9pt!important;font-style:italic!important;margin-bottom:0.5mm!important}
  .slot-card .s-notiz{
    background:#F0F0F0!important;color:#000!important;
    border-left:1.5pt solid #000!important;border-radius:0!important;
    padding:1mm 2mm!important;font-style:italic!important;
    font-size:9pt!important;margin-top:1mm!important;display:block!important;
  }
  .slot-card .s-badges{display:inline-flex!important;gap:1.5mm!important;flex-wrap:wrap!important}

  /* Duplikat-Hervorhebung: klarer Rahmen */
  .slot-card.dup{border:1.5pt solid #000!important;box-shadow:none!important}

  /* Freie / Notiz-Karten */
  .slot-frei{
    background:#FAFAFA!important;color:#000!important;
    border:0.75pt dashed #666!important;border-left:2.5pt dashed #000!important;
  }
  .slot-frei .s-name{font-style:italic!important}
  .slot-frei.slot-notizkarte{background:#F5F5F5!important;border:0.75pt solid #666!important;border-left:2.5pt solid #000!important}
  .slot-frei.slot-notizkarte .s-notiz-body{color:#000!important;font-style:normal!important}

  /* Fortsetzungs-Zeilen (Mehrtages-Slots) */
  .slot-fortsetzung{
    background:#F5F5F5!important;color:#000!important;
    border:0.75pt dashed #666!important;border-left:2pt solid #000!important;
    padding:1mm 3mm!important;font-size:9pt!important;font-style:italic!important;
    border-radius:0!important;
  }
  .slot-fortsetzung *{color:#000!important}

  /* Abwesend-Zellen */
  .day-slots .abwesend{
    background:#F0F0F0!important;color:#000!important;
    border:0.75pt dashed #666!important;border-radius:0!important;
    font-style:italic!important;text-align:center!important;padding:1.5mm!important;font-size:9pt!important;
  }

  /* Badges / Pills - wichtige Status-Infos in echten Farben (sparsamer Einsatz),
     Hintergruende ansonsten weiss, Text fett fuer Kontrast */
  .slot-card .badge, .slot-card .s-art{
    border-radius:2pt!important;padding:0 3.5pt!important;font-size:8pt!important;
    font-weight:bold!important;letter-spacing:0!important;text-transform:none!important;
  }
  /* Default fuer alle Badges ohne eigene Farbklasse.
     WICHTIG: background ohne !important, damit inline-style von .ws/.s-art durchkommt. */
  .slot-card .badge{
    background:#fff;color:#000!important;border:0.75pt solid #000!important;
  }

  /* WARNUNG (Rot) - Ueberfaellig, Reparatur, Stoerung, Vertrag inaktiv */
  .slot-card .badge.ws-err,
  .slot-card .badge.rep,
  .slot-card .badge.stoer,
  .slot-card .badge.vertrag-inaktiv{
    background:#C62828!important;color:#fff!important;border:0.5pt solid #8B1A1A!important;
  }
  /* OK (Gruen) - Vertrag aktiv */
  .slot-card .badge.vertrag-aktiv{
    background:#2E7D32!important;color:#fff!important;border:0.5pt solid #1B5E20!important;
  }
  /* Auftrag-Vertrag (neutral grau) */
  .slot-card .badge.vertrag-auftrag{
    background:#ECECEC!important;color:#000!important;border:0.5pt solid #888!important;
  }
  /* Co-Trupp (Lila - Kooperations-Hinweis) */
  .slot-card .badge.co-trupp{
    background:#7030A0!important;color:#fff!important;border:0.5pt solid #4A1F6E!important;
  }
  /* Lead-Archiv (Grau - weniger wichtig) */
  .slot-card .badge.lead-archiv{
    background:#9E9E9E!important;color:#fff!important;border:0.5pt solid #616161!important;
  }
  /* Wartungs-Badge (.ws) - Farben via data-ws Attribut (vom JS gesetzt),
     damit Farben garantiert gedruckt werden (nicht abhaengig von inline-style) */
  .slot-card .badge.ws{
    color:#fff!important;font-weight:bold!important;
    border:0.5pt solid rgba(0,0,0,.35)!important;
    background:#9E9E9E!important; /* Fallback: grau */
  }
  .slot-card .badge.ws[data-ws="Aktuell"]{background:#2E7D32!important}
  .slot-card .badge.ws[data-ws="Bald f\00E4llig"]{background:#F57C00!important}
  .slot-card .badge.ws[data-ws="\00DCberf\00E4llig"]{background:#C62828!important}
  .slot-card .badge.ws[data-ws="Inaktiv"]{background:#9E9E9E!important}
  .slot-card .badge.ws[data-ws=""]{background:#BDBDBD!important;color:#000!important}
  /* "Naechste Wartung"-Badge - hat kein data-ws (inline bg:#555), weiss bg + schwarz Text */
  .slot-card .badge.ws:not([data-ws]){background:#fff!important;color:#000!important;border:0.5pt solid #000!important}

  /* Art-Badges (.s-art) - Farben via data-art Attribut (ART_COLORS) */
  .slot-card .s-art{
    color:#fff!important;font-weight:bold!important;
    border:0.5pt solid rgba(0,0,0,.35)!important;
    background:#888!important; /* Fallback */
  }
  .slot-card .s-art[data-art="Wartung"]{background:#2E7D32!important}
  .slot-card .s-art[data-art="Reparatur"]{background:#C62828!important}
  .slot-card .s-art[data-art="Sanierung"]{background:#1565C0!important}
  .slot-card .s-art[data-art="Neubau"]{background:#7030A0!important}
  .slot-card .s-art[data-art="Vorhangbau"]{background:#00838F!important}
  .slot-card .s-art[data-art="Technikbau"]{background:#E65100!important}
  .slot-card .s-art[data-art="Besichtigung"]{background:#616161!important}
  .slot-card .s-art[data-art="St\00F6rung"]{background:#D81B60!important}
  .slot-card .s-art[data-art="Abnahme"]{background:#00897B!important}

  /* Pipeline-Stage-Badges - Background via CSS-Klasse .lead-stage--xxx, Text weiss */
  .slot-card .badge.lead-stage{
    color:#fff!important;font-weight:bold!important;
    border:0.5pt solid rgba(0,0,0,.35)!important;
  }
  /* Asset-Badges (Fotos/Docs/Datenblatt) - neutral hellgrau */
  .slot-card .badge.asset{
    background:#ECECEC!important;color:#000!important;border:0.5pt solid #888!important;
  }
  /* Status-Dot-Indikatoren nicht drucken */
  .badge .b-dot{display:none!important}

  /* KM-Angabe im Slot - pragmatisch bold */
  .s-km{font-variant-numeric:tabular-nums!important}

  /* Titel fuer die gedruckte Seite: kleiner Rahmen oben - optional */
  .trupp-col::before{
    content:"Wochenplan — gedruckt " attr(data-print-date);
    display:none; /* deaktiviert per Default; kann aktiviert werden */
  }
}

/* ============================================================== */
/* Urlaubs-Overlay (Monteure + Jahres-Urlaubsplan)                */
/* ============================================================== */
.urlaub-shell{
  width:94vw;max-width:1500px;height:90vh;
  /* Perf: backdrop-filter raus - Urlaubs-Matrix mit vielen Hover-Zellen wurde laggy. */
  background:linear-gradient(135deg, rgba(36,42,62,.97) 0%, rgba(28,34,52,.96) 100%);
  border:1px solid rgba(255,255,255,.18);
  border-radius:18px;
  box-shadow:0 30px 70px rgba(0,0,0,.55), 0 1px 0 rgba(255,255,255,.10) inset;
  color:var(--t-primary);display:flex;flex-direction:column;overflow:hidden;
}
.urlaub-head{display:flex;align-items:center;gap:12px;padding:12px 16px;
  background:rgba(0,0,0,.35);border-bottom:1px solid var(--line)}
.urlaub-head h3{margin:0;font-size:16px;color:var(--t-primary)}
.urlaub-head-year{display:flex;align-items:center;gap:8px;margin-left:20px}
.urlaub-body{flex:1;display:flex;overflow:hidden}
.urlaub-sidebar{
  width:260px;background:rgba(0,0,0,.2);border-right:1px solid var(--line);
  display:flex;flex-direction:column;overflow:hidden;
}
.urlaub-side-title{padding:10px 12px;font-size:11px;letter-spacing:.4px;
  text-transform:uppercase;color:var(--t-secondary);border-bottom:1px solid var(--line)}
.urlaub-mlist{flex:1;overflow-y:auto;padding:6px 0}
.url-trupp-group{padding:4px 0}
.url-trupp-label{padding:6px 12px;font-size:11px;font-weight:bold;
  color:#8BA9FF;letter-spacing:.3px;background:rgba(139,169,255,.08);
  transition:background .15s;border-top:1px solid transparent;border-bottom:1px solid transparent}
.url-trupp-label.drag-over{background:rgba(139,169,255,.35);border-top-color:#8BA9FF;border-bottom-color:#8BA9FF}
.url-trupp-group.buero-group .url-trupp-label{color:#FFB074;background:rgba(255,176,116,.08)}
.url-trupp-group.buero-group .url-trupp-label.drag-over{background:rgba(255,176,116,.35);border-top-color:#FFB074;border-bottom-color:#FFB074}
.url-mitem{padding:8px 12px;cursor:grab;border-left:3px solid transparent;
  display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t-primary);
  transition:background .12s}
.url-mitem:hover{background:rgba(255,255,255,.06)}
.url-mitem.active{background:rgba(68,114,196,.25);border-left-color:var(--accent)}
.url-mitem.inaktiv{opacity:.45;font-style:italic}
.url-mitem.dragging{opacity:.4;cursor:grabbing}
.url-mitem.typ-buero{border-left-color:rgba(255,176,116,.4)}
.url-mitem.typ-buero.active{border-left-color:#FFB074;background:rgba(255,176,116,.2)}
.url-mitem-name{flex:1}
.url-mitem-rest{font-size:11px;color:var(--t-secondary);font-variant-numeric:tabular-nums}
.url-mitem.active .url-mitem-rest{color:#C8E0FF}
.url-mitem-grip{opacity:.3;font-size:10px;cursor:grab}
.url-mitem:hover .url-mitem-grip{opacity:.7}
/* v8.1: min-width:0 zwingt das Flex-Child sich nicht auf intrinsic content size
   auszudehnen. overflow-x:hidden zwingt zusaetzlich, dass horizontales Scrollen
   ausschliesslich im inneren .url-all-scroller passiert - sonst scrollt
   stattdessen .urlaub-main und sticky cells greifen ins Leere.
   overflow-y:auto bleibt erhalten fuer die Detail-Ansicht eines Monteurs. */
.urlaub-main{flex:1;min-width:0;overflow-x:hidden;overflow-y:auto;padding:20px;background:var(--surface-0)}
#url-detail-panel{max-width:680px;margin:0 auto}
#url-detail-panel:has(.url-all-wrap){max-width:none}
.url-empty-hint{text-align:center;color:var(--t-secondary);padding:80px 20px;
  font-size:13px;line-height:1.6}

/* Monteur-Stammdaten-Formular */
.url-det-head{display:flex;align-items:center;gap:12px;margin-bottom:20px;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.url-det-head h4{margin:0;font-size:20px;color:var(--t-primary);flex:1}
.url-form{display:grid;grid-template-columns:140px 1fr;gap:12px 16px;align-items:center}
.url-form label{font-size:12px;color:var(--t-secondary);text-align:right}
.url-form input,.url-form select,.url-form textarea{
  background:var(--surface-2);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;
  padding:7px 10px;font-size:13px;font-family:inherit;
}
.url-form input:focus,.url-form select:focus,.url-form textarea:focus{
  outline:none;border-color:var(--accent)
}
.url-form textarea{min-height:60px;resize:vertical}
.url-form-actions{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end;
  margin-top:10px;padding-top:14px;border-top:1px solid var(--line)}
.url-form-actions .spacer{flex:1}
.url-saldo-box{
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px;margin-top:18px;
}
.url-saldo-title{font-size:11px;color:var(--t-secondary);text-transform:uppercase;
  letter-spacing:.4px;margin-bottom:10px}
.url-saldo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.url-saldo-cell{text-align:center}
.url-saldo-num{font-size:22px;font-weight:bold;color:var(--t-primary);line-height:1;
  font-variant-numeric:tabular-nums}
.url-saldo-num.neg{color:#FF9A88}
.url-saldo-num.low{color:#FFB074}
.url-saldo-label{font-size:10px;color:var(--t-secondary);margin-top:5px;
  text-transform:uppercase;letter-spacing:.3px}

.url-danger{background:#A04040!important;color:#fff!important}
.url-danger:hover{background:#B04848!important}
/* v8.5: Urlaubsplaner-Button-Varianten (aus inline-Styles in _urlRenderDetail extrahiert) */
.url-btn-activate{background:rgba(46,125,50,.30);border-color:rgba(129,199,132,.60);color:#C8E6C9}
.url-btn-activate:hover{background:rgba(46,125,50,.45)}
.url-btn-harddelete{background:rgba(198,40,40,.25);border-color:rgba(198,40,40,.55)}
.url-btn-harddelete:hover{background:rgba(198,40,40,.40)}
.url-btn-pinreset{background:rgba(68,114,196,.22);border-color:rgba(139,169,255,.45);color:#C6DAFA}
.url-btn-pinreset:hover{background:rgba(68,114,196,.35)}
.url-btn-self-locked{opacity:.5;cursor:not-allowed}
.url-autosave-hint{font-size:11px;color:var(--t-secondary);opacity:.7}

/* v8.6: Mitarbeiter-Profil-Akkordeon */
.url-profil-wrap{margin:20px 0 16px;border-top:1px solid var(--line);padding-top:16px}
.url-profil-title-row{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}
.url-profil-title-row h4{margin:0;font-size:14px;color:var(--t-primary);font-weight:600}
.url-profil-hint{font-size:11px;color:var(--t-secondary);opacity:.8}
.url-profil-sec{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);
  border-radius:8px;margin-bottom:8px;overflow:hidden;transition:border-color .15s}
.url-profil-sec[open]{border-color:rgba(139,169,255,.28);background:rgba(255,255,255,.045)}
.url-profil-sec summary{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;
  list-style:none;user-select:none;font-size:13px;color:var(--t-primary);
  transition:background .15s}
.url-profil-sec summary::-webkit-details-marker{display:none}
.url-profil-sec summary::before{content:'\25B8';color:var(--t-secondary);
  transition:transform .2s;display:inline-block;font-size:10px;width:10px}
.url-profil-sec[open] summary::before{transform:rotate(90deg)}
.url-profil-sec summary:hover{background:rgba(255,255,255,.04)}
.url-profil-icon{font-size:16px}
.url-profil-title{flex:1;font-weight:500}
.url-profil-sensitive{font-size:10px;padding:2px 7px;border-radius:3px;
  background:rgba(198,40,40,.16);color:#F2A0A0;border:1px solid rgba(198,40,40,.32);
  letter-spacing:.3px}
.url-profil-count{font-size:11px;color:var(--t-secondary);
  padding:2px 8px;border-radius:10px;background:rgba(0,0,0,.22);min-width:34px;text-align:center}
.url-profil-count.full{background:rgba(46,125,50,.30);color:#C8E6C9}
.url-profil-count.partial{background:rgba(245,124,0,.24);color:#FFD8A8}
.url-profil-count.zero{opacity:.55}
.url-profil-body{padding:12px 14px 14px;border-top:1px solid rgba(255,255,255,.06);
  display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px}
.url-profil-f{display:flex;flex-direction:column;gap:4px}
.url-profil-f-wide{grid-column:span 2}
.url-profil-f label{font-size:11px;color:var(--t-secondary);font-weight:500}
.url-profil-f input[type=text],
.url-profil-f input[type=date],
.url-profil-f input[type=number],
.url-profil-f select,
.url-profil-f textarea{padding:6px 10px;font-size:13px;background:var(--surface-2);
  color:var(--t-primary);border:1px solid var(--line);border-radius:4px;font-family:inherit}
.url-profil-f input:focus,
.url-profil-f select:focus,
.url-profil-f textarea:focus{outline:none;border-color:rgba(139,169,255,.55);
  box-shadow:0 0 0 2px rgba(139,169,255,.18)}
.url-profil-f textarea{resize:vertical;min-height:64px}
.url-profil-checkbox{display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-size:13px;color:var(--t-primary)}
@media(max-width:720px){
  .url-profil-body{grid-template-columns:1fr}
  .url-profil-f-wide{grid-column:auto}
}

/* Gesamtansicht-Button oben in der Sidebar */
.url-overview-btn{
  margin:8px 10px;padding:10px 12px;border-radius:8px;cursor:pointer;
  background:rgba(68,114,196,.18);border:1px solid rgba(68,114,196,.4);
  color:var(--t-primary);font-size:12px;font-weight:bold;
  display:flex;align-items:center;gap:8px;transition:background .12s;
}
.url-overview-btn:hover{background:rgba(68,114,196,.32)}
.url-overview-btn.active{background:rgba(68,114,196,.5);border-color:var(--accent)}

/* Jahres-Gesamtansicht: durchgehendes Grid 365/366 Tage
   v8.1: Frozen-Column-Layout - Names links permanent fixiert via flex+sticky.
   Outer wrap scrollt vertikal (gemeinsam fuer beide Spalten), nur die
   rechte Tag-Spalte scrollt horizontal. KEIN JS-Scroll-Sync noetig. */
.url-all-wrap{padding:6px 0 40px 0;min-width:0}
.url-all-title{font-size:14px;font-weight:bold;margin:4px 12px 10px;color:var(--t-primary);
  display:flex;align-items:center;gap:12px}
.url-all-legend{display:flex;gap:10px;margin-left:auto;font-size:11px;font-weight:normal;color:var(--t-secondary)}
/* Outer Container - macht das vertikale Scrolling, beide Spalten synchron */
.url-all-table{
  display:flex;
  max-width:100%;min-width:0;
  max-height:calc(100vh - 220px);
  overflow-y:auto;overflow-x:hidden;
  background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
  isolation:isolate;
}
/* Eltern muessen min-width:0 weitergeben damit nichts ausserhalb expandiert */
#url-detail-panel:has(.url-all-wrap){min-width:0}
.url-all-frozen-pad{flex:0 0 12px;background:var(--surface-2);position:sticky;left:0;z-index:5}

/* LINKE Frozen-Spalte (Names + Trupp-Sep + Corner) - sticky-left */
.url-all-frozen{
  flex:0 0 170px;
  display:grid;
  grid-template-columns:170px;
  grid-template-rows:28px 18px 18px;  /* matcht header rows in scroll-area */
  grid-auto-rows:28px;
  gap:2px;
  padding-right:0;
  background:var(--surface-2);
  position:sticky;left:12px;z-index:4;
  border-right:2px solid var(--line);
  box-shadow:4px 0 8px -4px rgba(0,0,0,.45);
}
/* Corner-Cells (3 leere Cells links oben - decken die 3 Header-Rows ab) */
.url-all-corner{
  background:var(--surface-2);
  position:sticky;top:0;z-index:6;
}
.url-all-corner-2{top:30px}
.url-all-corner-3{top:50px}

/* RECHTE Scroll-Area mit Tag-Cells - macht das horizontale Scrolling */
.url-all-scroll{
  flex:1 1 auto;
  min-width:0;
  overflow-x:auto;overflow-y:visible;
  padding-right:12px;
}
.url-all-grid{
  display:grid;font-size:11px;
  gap:2px;
  grid-template-rows:28px 18px 18px;
  grid-auto-rows:28px;
  /* grid-template-columns wird inline gesetzt: repeat(N, 20px) */
}
/* Names */
.url-all-name{
  font-size:12px;padding:0 10px;color:var(--t-primary);font-weight:bold;
  display:flex;align-items:center;cursor:pointer;
  background:var(--surface-2);
  transition:background .12s;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
.url-all-name:hover{background:rgba(68,114,196,.35)}

/* Header-Zeilen: Monat, KW, Tag - sticky-top fuer vert. Scrolling */
.url-all-h-month{
  position:sticky;top:0;z-index:3;
  text-align:center;padding:6px 4px;
  color:var(--t-primary);font-size:12px;font-weight:bold;
  background:rgba(58,73,108,.95);border-radius:3px;
  text-transform:uppercase;letter-spacing:.4px;
}
.url-all-h-month.alt{background:rgba(48,63,98,.95)}
.url-all-h-kw{
  position:sticky;top:30px;z-index:3;
  text-align:center;padding:3px 2px;
  color:#8BA9FF;font-size:10px;font-weight:bold;
  background:rgba(40,52,80,.95);border-radius:2px;
}
.url-all-h-day{
  position:sticky;top:50px;z-index:3;
  text-align:center;padding:2px 0 3px;
  color:var(--t-secondary);font-size:9px;
  background:var(--surface-2);
  border-bottom:1px solid var(--line);
}
.url-all-h-day.heute{color:#FFD600;font-weight:bold}

/* Day-Zellen */
.url-all-day{
  height:26px;border-radius:3px;background:rgba(255,255,255,.04);
  position:relative;transition:transform .08s,box-shadow .08s;
}
.url-all-day:hover{transform:scale(1.15);box-shadow:0 2px 6px rgba(0,0,0,.4);z-index:4}
.url-all-day.we{background:repeating-linear-gradient(45deg,rgba(255,255,255,.04),rgba(255,255,255,.04) 3px,transparent 3px,transparent 6px)}
.url-all-day.feier{background:repeating-linear-gradient(45deg,rgba(255,100,100,.16),rgba(255,100,100,.16) 3px,rgba(255,100,100,.04) 3px,rgba(255,100,100,.04) 6px)}
.url-all-day.heute{box-shadow:inset 0 0 0 2px #FFD600}
.url-all-day.urlaub{background:#8DE08D}
.url-all-day.krank{background:#E57373}
.url-all-day.sonder{background:#B39DDB}
.url-all-day.fortbildung{background:#FFB074}
.url-all-day.ausgleich{background:#5EC5D9}
.url-all-day.urlaub.vormittag{background:linear-gradient(to right,#8DE08D 50%,rgba(255,255,255,.04) 50%)}
.url-all-day.urlaub.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#8DE08D 50%)}
.url-all-day.krank.vormittag{background:linear-gradient(to right,#E57373 50%,rgba(255,255,255,.04) 50%)}
.url-all-day.krank.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#E57373 50%)}
.url-all-day.sonder.vormittag{background:linear-gradient(to right,#B39DDB 50%,rgba(255,255,255,.04) 50%)}
.url-all-day.sonder.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#B39DDB 50%)}
.url-all-day.fortbildung.vormittag{background:linear-gradient(to right,#FFB074 50%,rgba(255,255,255,.04) 50%)}
.url-all-day.fortbildung.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#FFB074 50%)}
.url-all-day.ausgleich.vormittag{background:linear-gradient(to right,#5EC5D9 50%,rgba(255,255,255,.04) 50%)}
.url-all-day.ausgleich.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#5EC5D9 50%)}

.url-all-row{display:contents}
.url-all-trupp-sep{
  padding:14px 10px 6px;font-size:11px;
  color:#8BA9FF;text-transform:uppercase;letter-spacing:.4px;font-weight:bold;
  background:var(--surface-2);
  display:flex;align-items:flex-end;
}
/* Trupp-Spacer-Row im Scroll-Grid (leer, dient nur als Hoehe-Synchronisierung) */
.url-all-trupp-spacer{grid-column:1/-1;background:transparent}

/* Jahresmatrix (12 Monate x 31 Tage) */
.url-matrix-wrap{margin-top:22px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:10px;padding:12px}
.url-matrix-title{font-size:11px;color:var(--t-secondary);text-transform:uppercase;
  letter-spacing:.4px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.url-matrix-legend{display:flex;gap:10px;margin-left:auto;font-size:10px;text-transform:none;letter-spacing:0}
.url-legend-chip{display:inline-flex;align-items:center;gap:4px}
.url-legend-chip::before{content:"";display:inline-block;width:11px;height:11px;border-radius:2px}
.url-legend-chip.u::before{background:#8DE08D}
.url-legend-chip.k::before{background:#E57373}
.url-legend-chip.s::before{background:#B39DDB}
.url-legend-chip.f::before{background:#FFB074}
.url-legend-chip.a::before{background:#5EC5D9}
.url-matrix{
  display:grid;grid-template-columns:34px repeat(31, 1fr);gap:2px;
  font-size:10px;user-select:none;
}
.url-m-label{font-size:11px;color:var(--t-secondary);padding-right:6px;
  display:flex;align-items:center;justify-content:flex-end}
.url-m-cell{
  aspect-ratio:1/1.25;min-width:14px;border-radius:3px;
  background:rgba(255,255,255,.04);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:9px;color:var(--t-secondary);font-weight:bold;
  transition:transform .08s,border-color .08s;
  border:1px solid transparent;position:relative;overflow:hidden;
}
.url-m-cell:hover:not(.locked){transform:scale(1.2);border-color:rgba(255,255,255,.4);z-index:3}
.url-m-cell.empty{opacity:.15;cursor:default}
.url-m-cell.we{background:repeating-linear-gradient(45deg,rgba(255,255,255,.04),rgba(255,255,255,.04) 3px,transparent 3px,transparent 6px);cursor:pointer;color:transparent}
.url-m-cell.feier{background:repeating-linear-gradient(45deg,rgba(255,100,100,.18),rgba(255,100,100,.18) 3px,rgba(255,100,100,.06) 3px,rgba(255,100,100,.06) 6px);cursor:pointer;color:#E0A0A0}
.url-m-cell.we:hover,.url-m-cell.feier:hover{border-color:rgba(255,255,255,.25)}
.url-m-cell.heute{box-shadow:inset 0 0 0 2px #FFD600}
.url-m-cell.selected{box-shadow:inset 0 0 0 2px #FFC107;z-index:4}
.url-m-cell.urlaub{background:#8DE08D;color:#063}
.url-m-cell.krank{background:#E57373;color:#611}
.url-m-cell.sonder{background:#B39DDB;color:#313}
.url-m-cell.fortbildung{background:#FFB074;color:#521}
.url-m-cell.ausgleich{background:#5EC5D9;color:#023}
.url-m-cell.urlaub.vormittag{background:linear-gradient(to right,#8DE08D 50%,rgba(255,255,255,.04) 50%)}
.url-m-cell.urlaub.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#8DE08D 50%)}
.url-m-cell.krank.vormittag{background:linear-gradient(to right,#E57373 50%,rgba(255,255,255,.04) 50%)}
.url-m-cell.krank.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#E57373 50%)}
.url-m-cell.sonder.vormittag{background:linear-gradient(to right,#B39DDB 50%,rgba(255,255,255,.04) 50%)}
.url-m-cell.sonder.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#B39DDB 50%)}
.url-m-cell.fortbildung.vormittag{background:linear-gradient(to right,#FFB074 50%,rgba(255,255,255,.04) 50%)}
.url-m-cell.fortbildung.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#FFB074 50%)}
.url-m-cell.ausgleich.vormittag{background:linear-gradient(to right,#5EC5D9 50%,rgba(255,255,255,.04) 50%)}
.url-m-cell.ausgleich.nachmittag{background:linear-gradient(to right,rgba(255,255,255,.04) 50%,#5EC5D9 50%)}

/* Popup zum Eintragen (Jahresmatrix + Wochenplan Inline) */
#url-entry-popup{
  position:fixed;display:none;z-index:1200;
  background:var(--surface-1);border:1px solid var(--line-strong);
  border-radius:10px;box-shadow:0 14px 40px rgba(0,0,0,.6);
  padding:14px;min-width:320px;color:var(--t-primary);
}
#url-entry-popup.open{display:block}
.url-pop-title{font-size:13px;font-weight:bold;margin-bottom:10px;color:var(--t-primary)}
.url-pop-sub{font-size:11px;color:var(--t-secondary);margin-bottom:10px}
.url-pop-row{display:flex;gap:4px;margin-bottom:8px}
.url-pop-row-label{font-size:10px;color:var(--t-secondary);
  text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}
.url-pop-btn{
  flex:1;background:rgba(255,255,255,.06);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;
  padding:6px 4px;font-size:11px;cursor:pointer;font-weight:bold;
}
.url-pop-btn:hover{background:rgba(255,255,255,.14)}
.url-pop-btn.active{border-color:var(--accent);background:rgba(68,114,196,.35)}
.url-pop-btn.art-urlaub.active{border-color:#8DE08D;background:rgba(141,224,141,.25);color:#8DE08D}
.url-pop-btn.art-krank.active{border-color:#E57373;background:rgba(229,115,115,.25);color:#E57373}
.url-pop-btn.art-sonder.active{border-color:#B39DDB;background:rgba(179,157,219,.25);color:#B39DDB}
.url-pop-btn.art-fortbildung.active{border-color:#FFB074;background:rgba(255,176,116,.25);color:#FFB074}
.url-pop-btn.art-ausgleich.active{border-color:#5EC5D9;background:rgba(94,197,217,.25);color:#5EC5D9}
#url-pop-bem{
  width:100%;box-sizing:border-box;background:var(--surface-2);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;padding:6px 8px;font-size:12px;
  font-family:inherit;resize:none;min-height:34px;
}
#url-pop-monteur{
  width:100%;box-sizing:border-box;background:var(--surface-2);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;padding:6px 8px;font-size:12px;
}
.url-pop-actions{display:flex;gap:6px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.url-pop-actions .spacer{flex:1}

/* ============================================================== */
/* KI-Assistent: Floating FAB + Chat-Overlay                      */
/* ============================================================== */
#ki-fab{
  position:fixed;bottom:22px;right:22px;z-index:900;
  width:54px;height:54px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,#4472C4 0%,#5B8BDE 60%,#8BA9FF 100%);
  color:#fff;font-size:24px;line-height:1;
  box-shadow:0 4px 14px rgba(0,0,0,.45),0 0 0 2px rgba(255,255,255,.06) inset;
  transition:transform .15s,box-shadow .15s;
  display:flex;align-items:center;justify-content:center;
}
#ki-fab:hover{transform:scale(1.08);box-shadow:0 6px 22px rgba(68,114,196,.6)}
#ki-fab:active{transform:scale(.96)}

#ki-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:950;
  display:none;align-items:center;justify-content:center;
}
#ki-overlay.open{display:flex}

#ki-shell{
  width:540px;height:640px;min-width:380px;min-height:420px;
  max-width:95vw;max-height:95vh;
  /* Perf: backdrop-filter raus - KI-Shell hat scroll-bare Chat-History
     mit hover-baren Aktions-Buttons. */
  background:rgba(30,34,48,.97);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.14);border-radius:16px;
  box-shadow:0 22px 60px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.04) inset;
  display:flex;flex-direction:column;overflow:hidden;
  resize:both;position:relative;
}

#ki-head{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;background:rgba(0,0,0,.35);
  border-bottom:1px solid var(--line);flex-shrink:0;
}
#ki-head h3{margin:0;font-size:14px;color:var(--t-primary);flex:1}
.ki-head-actions{display:flex;gap:4px}
.ki-ic{
  background:rgba(255,255,255,.08);border:1px solid var(--line-strong);
  color:var(--t-primary);width:28px;height:28px;border-radius:6px;
  cursor:pointer;font-size:14px;line-height:1;
}
.ki-ic:hover{background:rgba(255,255,255,.16)}

#ki-messages{
  flex:1;overflow-y:auto;padding:14px;
  display:flex;flex-direction:column;gap:10px;
  background:var(--surface-0);
}
.ki-bubble{
  max-width:85%;padding:9px 12px;border-radius:12px;
  font-size:13px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word;
}
.ki-bubble-user{
  align-self:flex-end;background:var(--accent);color:#fff;
  border-bottom-right-radius:4px;
}
.ki-bubble-assist{
  align-self:flex-start;background:rgba(255,255,255,.06);color:var(--t-primary);
  border-bottom-left-radius:4px;border:1px solid rgba(255,255,255,.08);
}
.ki-empty{color:var(--t-secondary);text-align:center;font-size:12px;
  padding:40px 20px;line-height:1.6}
.ki-empty-title{font-size:14px;color:var(--t-primary);margin-bottom:8px;font-weight:bold}
.ki-empty ul{text-align:left;display:inline-block;margin:8px 0 0;padding-left:18px}
.ki-empty li{margin:3px 0}

.ki-trace{margin-top:6px;font-size:10px;opacity:.7}
.ki-trace summary{cursor:pointer;color:var(--t-secondary);list-style:none;
  display:inline-flex;gap:4px;align-items:center;padding:2px 6px;
  background:rgba(255,255,255,.04);border-radius:4px}
.ki-trace summary::before{content:"\25B8";font-size:8px;transition:transform .15s}
.ki-trace[open] summary::before{transform:rotate(90deg)}
.ki-trace ol{margin:6px 0 0;padding-left:18px;color:var(--t-secondary)}
.ki-trace li{margin:2px 0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10px}
.ki-trace .ki-trace-err{color:#FF9A88}
/* v8.0.9: Tool-Fehler prominent machen - User soll sehen dass nicht alles gut gelaufen ist */
.ki-bubble-assist.has-tool-err{border-color:rgba(214,69,69,.55);box-shadow:0 0 0 1px rgba(214,69,69,.25) inset}
.ki-tool-err-banner{background:rgba(214,69,69,.18);color:#FFB0A8;padding:6px 10px;margin:-10px -12px 8px;
  border-top-left-radius:10px;border-top-right-radius:10px;font-size:11px;font-weight:bold;
  border-bottom:1px solid rgba(214,69,69,.3)}

#ki-status{
  padding:4px 14px;font-size:11px;color:var(--t-secondary);
  min-height:20px;border-top:1px solid var(--line);background:rgba(0,0,0,.2);
  flex-shrink:0;
}
#ki-status.ki-busy::before{
  content:"\25CF";margin-right:6px;color:#FFB074;
  animation:ki-pulse 1s infinite;display:inline-block;
}
@keyframes ki-pulse{0%,100%{opacity:.3}50%{opacity:1}}

#ki-input-wrap{
  display:flex;gap:8px;padding:10px 12px;background:var(--surface-1);
  border-top:1px solid var(--line);align-items:flex-end;flex-shrink:0;
}
#ki-input{
  flex:1;background:rgba(0,0,0,.30);color:var(--t-primary);
  border:1px solid rgba(255,255,255,.10);border-radius:8px;
  padding:8px 10px;font-size:13px;font-family:inherit;line-height:1.4;
  resize:none;max-height:120px;min-height:36px;overflow-y:auto;
  transition:border-color .15s,background .15s,box-shadow .15s;
}
#ki-input:hover{border-color:rgba(255,255,255,.18)}
#ki-input:focus{outline:none;border-color:var(--accent);background:rgba(0,0,0,.40);box-shadow:0 0 0 3px rgba(68,114,196,.18)}
#ki-send{
  background:var(--accent);color:#fff;border:none;border-radius:8px;
  width:40px;height:36px;cursor:pointer;font-size:15px;
  transition:background .15s;
}
#ki-send:hover{background:#5B8BDE}
#ki-send:disabled{background:var(--surface-2);cursor:not-allowed;opacity:.6}

/* Config-Dialog (API-Key-Setup) */
#ki-config-dialog{
  position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:960;
  display:none;align-items:center;justify-content:center;
}
#ki-config-dialog.open{display:flex}
.ki-cfg-box{
  background:var(--surface-1);border:1px solid var(--line-strong);
  border-radius:12px;padding:22px;width:min(460px,92vw);
  box-shadow:0 20px 50px rgba(0,0,0,.6);color:var(--t-primary);
}
.ki-cfg-box h3{margin:0 0 10px;color:var(--t-primary)}
.ki-cfg-box p{color:var(--t-secondary);font-size:12px;line-height:1.5;margin:0 0 14px}
.ki-cfg-box code{background:rgba(255,255,255,.08);padding:1px 5px;
  border-radius:3px;font-size:11px}
#ki-cfg-input{
  width:100%;box-sizing:border-box;background:var(--surface-0);
  color:var(--t-primary);border:1px solid var(--line-strong);
  border-radius:8px;padding:10px 12px;font-size:13px;
  font-family:ui-monospace,Menlo,Consolas,monospace;
}
#ki-cfg-input:focus{outline:none;border-color:var(--accent)}
.ki-cfg-err{color:#FF9A88;font-size:12px;margin-top:8px;min-height:18px}
.ki-cfg-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.ki-cfg-actions button{
  background:rgba(255,255,255,.08);border:1px solid var(--line-strong);
  color:var(--t-primary);padding:8px 14px;border-radius:7px;
  cursor:pointer;font-size:12px;font-weight:bold;
}
.ki-cfg-actions button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.ki-cfg-actions button:hover{background:rgba(255,255,255,.14)}
.ki-cfg-actions button.primary:hover{background:#5B8BDE}

/* ==================== MONTEUR-MODE + HALLE-HIGHLIGHT (Block 2) ==================== */

/* ---- Monteur-Mode: versteckt Features die Monteure nicht bedienen duerfen ---- */
body.monteur-mode #sd-edit-toggle{display:none!important}                     /* Hallen/Kunden Aktiv/Inaktiv-Toggle */
body.monteur-mode .day-btn[onclick*="tagSaeubern"]{display:none!important}    /* Tag leeren (rote Muelltonne) */

/* ---- URLAUB: komplett read-only (gar keine Aenderungen moeglich) ---- */
body.monteur-mode #urlaub-overlay button[onclick*="urlAddMonteur"],
body.monteur-mode #urlaub-overlay button[onclick*="urlAddEntry"],
body.monteur-mode #urlaub-overlay button[onclick*="urlSave"],
body.monteur-mode #urlaub-overlay button[onclick*="urlDelete"],
body.monteur-mode #urlaub-overlay button[onclick*="urlEdit"],
body.monteur-mode #urlaub-overlay button[onclick*="urlPopSave"],
body.monteur-mode button[onclick*="urlShowOverview"],
body.monteur-mode #urlaub-overlay button[onclick*="urlPopDelete"],
body.monteur-mode #urlaub-overlay .url-danger{display:none!important}

/* Monteur-Version: Urlaubsdialog zeigt NUR Matrix + Saldo des eigenen Monteurs.
   Sidebar (Monteur-Liste, Gesamtansicht, Neuer Monteur) und Stammdaten-Form komplett aus. */
body.monteur-mode #urlaub-overlay .urlaub-sidebar{display:none!important}
body.monteur-mode #urlaub-overlay .urlaub-main{width:100%!important}
body.monteur-mode #urlaub-overlay .url-det-head,
body.monteur-mode #urlaub-overlay .url-form{display:none!important}
/* Alle Klicks im Urlaubs-Dialog blockieren - ausser Schliessen + Jahres-Navigation */
body.monteur-mode #urlaub-overlay button:not([onclick*="closeDialog"]):not([onclick*="urlYearNav"]):not([onclick*="urlShowOverview"]):not([onclick*="_urlSelect"]){pointer-events:none!important;opacity:.4}
body.monteur-mode #urlaub-overlay input,
body.monteur-mode #urlaub-overlay select,
body.monteur-mode #urlaub-overlay textarea{pointer-events:none!important;background:#f0f0f0!important;opacity:.75}
/* Jahresmatrix im Monteur-Mode: komplett read-only */
body.monteur-mode .url-matrix,
body.monteur-mode .url-matrix .url-m-cell,
body.monteur-mode .url-all-day,
body.monteur-mode .urlaub-matrix td,
body.monteur-mode .urlaub-matrix .url-cell{pointer-events:none!important;cursor:default!important}
body.monteur-mode .url-matrix .url-m-cell:hover,
body.monteur-mode .urlaub-matrix .url-cell:hover{background:inherit!important;transform:none!important;box-shadow:none!important}
body.monteur-mode #url-pop-overlay{display:none!important}

/* ---- KALENDER, Backup, KI, KW-Kopieren, Woche-Leeren ganz weg ---- */
body.monteur-mode #kalender-overlay{display:none!important}
body.monteur-mode button[onclick*="openKalender"]{display:none!important}
body.monteur-mode #termine-overlay{display:none!important}
body.monteur-mode button[onclick*="openTermine"]{display:none!important}
body.monteur-mode button[onclick*="openBackup"]{display:none!important}
body.monteur-mode #backup-overlay{display:none!important}
/* v8.5: DEV-Leeren nur in Admin-UI sichtbar, niemals in Monteur-Ansicht (auch nicht wenn Admin eingeloggt ist) */
/* Spezifitaet hochgezogen, damit die admin-only-Regel weiter unten den Button im Monteur-Mode nicht reaktiviert. */
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_pipeDevClearOpen"]{display:none!important}
body.monteur-mode #pipe-dev-clear-overlay{display:none!important}
/* Werkseinstellung-Button + Dialog ebenfalls niemals in Monteur-Ansicht */
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_factoryResetOpen"]{display:none!important}
body.monteur-mode #factory-reset-overlay{display:none!important}
/* v9.6: Neue Admin-Tools (Wartungsmodus, System-Status, Audit-Log, Feedback-Posteingang) ebenfalls
   niemals in Monteur-Ansicht zeigen - alle haben class admin-only und onclick mit den
   entsprechenden Funktionen. Spezifisch genug damit die Admin-only-Regel weiter unten
   sie nicht reaktiviert. Switcher-btn (eigener Button, nutzt mSwitcher) bleibt sichtbar. */
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_wartungsmodusOpen"],
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_sysStatusOpen"],
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_auditLogOpen"],
body.monteur-mode button.hdr-more-item.admin-only[onclick*="_feedbackInboxOpen"]{display:none!important}
body.monteur-mode #wartungsmodus-overlay,
body.monteur-mode #sysstatus-overlay,
body.monteur-mode #auditlog-overlay,
body.monteur-mode #auditlog-detail-overlay,
body.monteur-mode #feedback-inbox-overlay{display:none!important}
/* Hilfe-Button im Monteur-Mode ausblenden (kein admin-only, daher eigene Regel noetig) */
body.monteur-mode button.hdr-more-item[onclick*="openHelp"]{display:none!important}
body.monteur-mode #ki-fab,
body.monteur-mode #ki-overlay,
body.monteur-mode #ki-config-dialog{display:none!important}
body.monteur-mode button[onclick*="kopierenDialog"]{display:none!important}
body.monteur-mode button[onclick*="wocheSaeubern"]{display:none!important}

/* ---- Rolle-basierte Sichtbarkeit ---- */
/* m-only: fuer jeden eingeloggten User sichtbar (Badge + Logout) */
body.role-admin .m-only,
body.role-buero .m-only,
body.role-monteur .m-only,
body.monteur-mode .m-only{display:inline-block!important}
/* admin-only: nur fuer admin/buero sichtbar (Switcher-Button) */
.admin-only{display:none}
body.role-admin .admin-only,
body.role-buero .admin-only{display:inline-block!important}
body.role-admin .hdr-more-item.admin-only,
body.role-buero .hdr-more-item.admin-only{display:flex!important}
/* Im Monteur-Mode (URL=/m) sind Todos immer versteckt - nur Buero-Feature */
body.monteur-mode #todos-btn,body.monteur-mode #todos-overlay{display:none!important}

/* Todo-Badge (rote Zahl im Topbar-Button) */
#todos-badge{display:inline-block;margin-left:6px;background:#C62828;color:#fff;border-radius:999px;
  min-width:18px;height:18px;font-size:11px;line-height:18px;padding:0 5px;text-align:center;font-weight:bold}
#todos-badge.zero{background:rgba(255,255,255,.2);color:#ccc}

/* Todo-Overlay - explizit Dark-Theme-Farben (nicht var(--text), das ist dunkelblau fuer helle UIs) */
#todos-overlay .todos-shell{width:min(900px,95vw);max-height:88vh;
  /* Perf: backdrop-filter raus - Background ist ohnehin opak (.96). */
  background:rgba(46, 54, 78, 0.98);
  border:1px solid rgba(255,255,255,.14);border-radius:10px;display:flex;flex-direction:column;
  color:var(--t-primary);box-shadow:0 18px 40px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.04) inset}
#todos-overlay .todos-head{padding:14px 18px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:12px;color:var(--t-primary)}
#todos-overlay .todos-head h3{margin:0;font-size:18px;color:var(--t-primary)}
#todos-overlay .todos-toolbar{padding:10px 18px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--t-primary)}
#todos-overlay .todos-toolbar label{font-size:13px;display:flex;align-items:center;gap:6px;color:var(--t-primary)}
#todos-overlay .todos-toolbar select{background:var(--surface-0);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:6px;padding:5px 8px;font-size:13px}
#todos-overlay #todos-list{overflow:auto;padding:10px 14px;flex:1 1 auto;background:var(--surface-0)}
#todos-overlay .todo-card{background:var(--surface-2);border-left:3px solid #888;border-radius:6px;
  padding:10px 12px;margin-bottom:8px;display:grid;grid-template-columns:24px 1fr auto;gap:10px;
  align-items:start;color:var(--t-primary)}
#todos-overlay .todo-card.prio-hoch{border-left-color:#C62828}
#todos-overlay .todo-card.prio-normal{border-left-color:#F57C00}
#todos-overlay .todo-card.prio-niedrig{border-left-color:#9E9E9E}
#todos-overlay .todo-card.status-erledigt{opacity:.55}
#todos-overlay .todo-card.status-erledigt .todo-title{text-decoration:line-through}
#todos-overlay .todo-check{width:20px;height:20px;margin-top:2px;cursor:pointer;accent-color:#2E7D32}
#todos-overlay .todo-title{font-weight:bold;font-size:14px;margin-bottom:3px;color:#fff;line-height:1.3}
#todos-overlay .todo-desc{font-size:12px;color:var(--t-secondary);margin-bottom:6px;line-height:1.4}
#todos-overlay .todo-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:11px;align-items:center;
  color:var(--t-secondary)}
#todos-overlay .todo-meta .chip{background:rgba(255,255,255,.12);color:var(--t-primary);
  padding:2px 7px;border-radius:4px;font-weight:500}
#todos-overlay .todo-meta .chip.typ-manuell{background:rgba(31,56,100,.7);color:#fff}
#todos-overlay .todo-meta select{background:var(--surface-0);color:var(--t-primary);
  border:1px solid var(--line-strong);border-radius:4px;padding:2px 4px;font-size:11px}
#todos-overlay .todo-meta a{color:var(--t-link);text-decoration:none;cursor:pointer;font-weight:500}
#todos-overlay .todo-meta a:hover{text-decoration:underline;color:#B5C8FF}
#todos-overlay .todo-notizen{margin-top:6px;font-size:12px;background:rgba(0,0,0,.3);padding:6px 8px;
  border-radius:4px;white-space:pre-wrap;color:var(--t-primary);border-left:2px solid var(--accent)}
#todos-overlay .todo-actions{display:flex;gap:4px;flex-direction:column}
#todos-overlay .todo-actions button{background:rgba(255,255,255,.10);color:var(--t-primary);border:none;
  padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer}
#todos-overlay .todo-actions button:hover{background:rgba(255,255,255,.20)}
#todos-overlay .todo-actions button.danger:hover{background:rgba(198,40,40,.7);color:#fff}
#todos-overlay .todos-empty{padding:40px;text-align:center;color:var(--t-secondary);font-size:14px}
#todos-overlay .todos-stats{margin-left:auto;font-size:12px;color:var(--t-secondary)}
#todos-overlay .todos-toolbar select option{background:var(--surface-2);color:var(--t-primary)}

/* ---- Monteur: Trupp-Spalte angenehm lesbar (nicht ueber den ganzen Screen) ---- */
body.monteur-mode{--trupp-w:760px}
body.monteur-mode .trupp-col{flex:0 1 760px!important;width:auto!important;min-width:600px;max-width:760px;margin:0 auto}
/* Mobile/Tablet: voll Breite nutzen, weil sonst zu schmal */
@media (max-width:820px){
  body.monteur-mode .trupp-col{max-width:100%!important;flex:1 1 100%!important;margin:0}
}
body.monteur-mode .slot-card{font-size:13px;padding:8px 12px;gap:3px 14px}
body.monteur-mode .slot-card .s-id{font-size:14px}
body.monteur-mode .slot-card .s-name{font-size:14px}
body.monteur-mode .slot-card .s-zeit{font-size:13px}
body.monteur-mode .slot-card .s-art{font-size:11px;padding:2px 8px}
body.monteur-mode .slot-card .s-addr{font-size:12px;white-space:normal}
body.monteur-mode .slot-card .s-hm{font-size:12px;white-space:normal}
body.monteur-mode .slot-card .s-anlagen{font-size:12px}
body.monteur-mode .slot-card .badge,
body.monteur-mode .slot-card .s-badges .badge{font-size:11px;padding:2px 7px}
body.monteur-mode .slot-card .s-km{font-size:12px}
body.monteur-mode .slot-card .s-notiz{font-size:13px;padding:5px 10px}
body.monteur-mode .slot-card .s-del{font-size:18px;top:4px;right:7px}
body.monteur-mode .day-header{font-size:13px;padding:6px 10px;min-height:30px}
body.monteur-mode .day-header b{font-size:14px}
body.monteur-mode .day-btn{font-size:14px!important;padding:3px 8px!important}
body.monteur-mode .trupp-header{font-size:14px!important;padding:8px 12px!important}
body.monteur-mode .trupp-name{font-size:16px!important}
body.monteur-mode .trupp-bes{font-size:12px!important}
body.monteur-mode .trupp-route-btn{font-size:12px!important;padding:4px 10px!important}
body.monteur-mode .slot-fortsetzung{font-size:12px;padding:5px 10px}

/* ---- Minimap unter dem Trupp deutlich groesser ---- */
body.monteur-mode .trupp-minimap{height:440px!important}
body.monteur-mode .trupp-minimap-km{font-size:12px;padding:6px 10px}
body.monteur-mode .trupp-minimap-empty{font-size:14px}

/* ==========================================================
   TOUCH-OPTIMIERUNGEN fuer iPad / Tablet
   ========================================================== */
body.monteur-mode{
  -webkit-tap-highlight-color:rgba(68,114,196,.2);
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  user-select:none;
}
body.monteur-mode input,
body.monteur-mode textarea,
body.monteur-mode [contenteditable]{-webkit-user-select:text;user-select:text}

body.monteur-mode button,
body.monteur-mode .hbtn{min-height:44px;min-width:44px;padding:10px 14px}
body.monteur-mode .kw-mini-btn{min-height:36px;min-width:36px}
body.monteur-mode .mode-btn,
body.monteur-mode .mt-btn{min-height:40px}

body.monteur-mode .day-btn{min-width:36px!important;min-height:36px!important;font-size:16px!important;padding:6px 10px!important}

body.monteur-mode .slot-card{min-height:80px;transition:background .12s,transform .12s}
body.monteur-mode .slot-card:active{background:#F0F4FF!important;transform:scale(.98)}
@media (hover:none){
  body.monteur-mode .slot-card:hover{box-shadow:0 1px 3px rgba(44,62,80,.07),0 2px 8px rgba(44,62,80,.05)!important;transform:none!important}
  body.monteur-mode .hbtn:hover{filter:none!important}
}

body.monteur-mode .slot-card .s-del{font-size:22px!important;padding:8px 10px!important;top:0!important;right:0!important;width:36px;height:36px;display:flex;align-items:center;justify-content:center}

body.monteur-mode .slot-card a[href^="tel:"],
body.monteur-mode .leaflet-popup-content a[href^="tel:"]{display:inline-block;min-height:30px;padding:3px 6px;font-weight:bold}

body.monteur-mode .leaflet-popup-content{font-size:14px!important;line-height:1.5!important;min-width:280px!important}
body.monteur-mode .leaflet-popup-content button{font-size:14px!important;padding:10px 14px!important;min-height:44px!important}

body.monteur-mode .sb-halle{padding:12px 10px!important;min-height:50px;font-size:13px!important}
body.monteur-mode .sd-tab{padding:14px 16px!important;font-size:14px!important}
body.monteur-mode .sd-subtab{padding:10px 14px!important;font-size:13px!important;min-height:40px}

body.monteur-mode .urlaub-mlist .url-m-item{padding:12px 14px!important;min-height:48px}

body.monteur-mode *{-webkit-overflow-scrolling:touch}

body.monteur-mode .slot-card[style*="opacity"]{opacity:1!important}

body.monteur-mode #header{background:linear-gradient(135deg,#1F3864 0%,#162d52 100%) fixed}

@media (display-mode:standalone), (display-mode:fullscreen){
  body.monteur-mode #header{padding-top:calc(8px + env(safe-area-inset-top))}
  body.monteur-mode{padding-bottom:env(safe-area-inset-bottom)}
}

body.monteur-mode .slot-card[draggable="true"]{touch-action:none}
body.monteur-mode .sb-halle[draggable="true"]{touch-action:none}

body.monteur-mode input,
body.monteur-mode select,
body.monteur-mode textarea{font-size:16px!important}
body.monteur-mode #m-login-box input[inputmode="numeric"]{font-size:22px!important}

@media (max-width:820px){
  body.monteur-mode #header{padding:6px 8px!important;gap:6px!important}
  body.monteur-mode #header-logo{padding:2px 6px}
  body.monteur-mode #header-logo img{height:24px}
  body.monteur-mode #header h1{font-size:11px!important;letter-spacing:.8px!important}
  body.monteur-mode #trupp-badge{font-size:9px!important;padding:1px 4px!important;margin-left:3px!important}
  body.monteur-mode #kw-nav{order:99;width:100%;justify-content:center;margin-top:4px;gap:4px}
  body.monteur-mode #kw-nav button{padding:7px 10px;font-size:13px;min-height:40px!important;min-width:40px!important}
  body.monteur-mode #kw-label{font-size:14px;min-width:64px}
  body.monteur-mode #today-label{display:none}
  body.monteur-mode .header-actions{margin-left:auto;gap:4px;flex-wrap:wrap;justify-content:flex-end}
  body.monteur-mode .hbtn{font-size:10px!important;padding:6px 8px!important;
    min-width:44px!important;min-height:40px!important;line-height:1.1;letter-spacing:.2px!important}
  body.monteur-mode .hbtn[onclick*="mLogout"]{background:#C62828!important}

  body.monteur-mode{--trupp-w:100vw}
  body.monteur-mode .trupp-col{
    flex:0 0 100vw!important;width:100vw!important;
    min-width:0!important;max-width:100vw!important;
    scroll-snap-align:start;
    background:rgba(255,255,255,.02)!important;
  }
  body.monteur-mode #grid-wrap{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}

  body.monteur-mode .trupp-header{padding:6px 10px!important;font-size:12px!important}
  body.monteur-mode .trupp-name{font-size:14px!important}
  body.monteur-mode .trupp-header small{font-size:10px!important}

  body.monteur-mode .slot-card{
    grid-template-columns:1fr!important;gap:3px 0!important;
    font-size:13px!important;padding:10px 12px!important;min-height:70px;
  }
  body.monteur-mode .slot-card .s-top{padding-right:32px}
  body.monteur-mode .slot-card .s-top-right{flex-wrap:wrap;row-gap:2px}
  body.monteur-mode .slot-card .s-name,
  body.monteur-mode .slot-card .s-id{font-size:14px!important}
  body.monteur-mode .slot-card .s-addr,
  body.monteur-mode .slot-card .s-hm{font-size:12px!important;white-space:normal!important}
  body.monteur-mode .slot-card .s-anlagen,
  body.monteur-mode .slot-card .s-km{font-size:11px!important}
  body.monteur-mode .slot-card .badge{font-size:10px!important;padding:1px 5px!important}
  body.monteur-mode .slot-card .s-notiz{font-size:12px!important;padding:5px 8px!important}
  body.monteur-mode .slot-fortsetzung{font-size:12px!important;padding:6px 10px!important}

  body.monteur-mode .day-header{font-size:12px!important;padding:6px 10px!important}
  body.monteur-mode .day-header b{font-size:13px!important}
  body.monteur-mode .day-slots{padding:5px 6px!important;min-height:44px!important}

  body.monteur-mode .trupp-minimap{height:180px!important}
  body.monteur-mode .trupp-minimap-km{font-size:11px!important;padding:4px 8px!important}
  body.monteur-mode .trupp-col.minimap-collapsed .trupp-minimap,
  body.monteur-mode .trupp-col.minimap-collapsed .trupp-minimap-km{display:none!important}

  body.monteur-mode #hallen-sidebar{
    position:fixed!important;top:0!important;left:0!important;bottom:0!important;
    z-index:200!important;width:85vw!important;max-width:320px!important;
    min-width:0!important;height:100vh!important;max-height:100vh!important;
    box-shadow:4px 0 24px rgba(0,0,0,.6);
    transform:translateX(-100%);transition:transform .2s ease-out;
  }
  body.monteur-mode.sidebar-open #hallen-sidebar{transform:translateX(0)}
  body.monteur-mode #sidebar-backdrop{
    position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:199;
    opacity:0;pointer-events:none;transition:opacity .2s;
  }
  body.monteur-mode.sidebar-open #sidebar-backdrop{opacity:1;pointer-events:auto}

  body.monteur-mode #sidebar-top{padding:12px 10px;font-size:13px;display:flex;align-items:center;justify-content:space-between}
  body.monteur-mode #sidebar-search{padding:12px 10px;font-size:14px}
  body.monteur-mode #sidebar-controls select{padding:10px 8px;font-size:14px}
  body.monteur-mode #sidebar-frei-btn{padding:12px;font-size:13px;min-height:44px}
  body.monteur-mode .sb-halle{padding:12px 10px!important;font-size:13px!important;min-height:56px!important}
  body.monteur-mode .sb-halle .sb-id{font-size:12px!important;min-width:40px!important}
  body.monteur-mode .sb-halle .sb-name{font-size:13px!important}
  body.monteur-mode .sb-halle .sb-kunde{font-size:11px!important}

  body.monteur-mode .dialog{width:100%!important;max-width:100vw!important;
    max-height:95vh!important;border-radius:10px 10px 0 0!important;padding:14px!important}
  body.monteur-mode .overlay{align-items:flex-end!important}
  body.monteur-mode .dialog input,
  body.monteur-mode .dialog select,
  body.monteur-mode .dialog textarea{padding:10px!important}
}

/* Login-Overlay: initial versteckt. Wird von mLoginInit aktiviert wenn URL /m */
#m-login-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#1F3864 0%,#162d52 100%);
  z-index:10000;display:none;justify-content:center;align-items:center;padding:20px}
#m-login-overlay.show{display:flex}
#m-login-overlay.hide{display:none!important}
#m-login-box{background:#fff;border-radius:14px;padding:28px;width:100%;max-width:380px;
  box-shadow:0 20px 60px rgba(0,0,0,.35)}
#m-login-box h2{color:#1F3864;margin-bottom:4px;font-size:22px}
#m-login-box .sub{color:#6B7280;font-size:13px;margin-bottom:20px}
#m-login-box label{display:block;font-size:12px;color:#1F3864;font-weight:bold;
  margin:12px 0 4px}
#m-login-box select,#m-login-box input{width:100%;padding:12px 10px;font-size:15px;
  border:1px solid #E5E1DC;border-radius:8px;background:#fafaf8;outline:none}
#m-login-box select:focus,#m-login-box input:focus{border-color:#4472C4;background:#fff}
#m-login-box input[inputmode=numeric]{font-size:22px;letter-spacing:8px;text-align:center}
#m-login-box .login-btn{margin-top:20px;width:100%;background:#1F3864;color:#fff;
  border:none;border-radius:8px;padding:14px;font-size:15px;font-weight:bold;cursor:pointer}
#m-login-box .login-btn:active{background:#162d52}
#m-login-err{margin-top:10px;color:#C62828;font-size:12px;text-align:center;min-height:16px}
#m-login-box .badge{display:inline-block;background:#C8780A;color:#fff;padding:2px 8px;
  border-radius:4px;font-size:11px;font-weight:bold;margin-bottom:10px}

/* ============== NACHWEIS-OVERLAY (Leistungsnachweis + Pruefliste) ============== */
.nachweis-dialog{width:min(1000px,96vw);max-height:94vh;display:flex;flex-direction:column;padding:0}
.nachweis-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
.nachweis-head h3{margin:0;font-size:16px}
.nachweis-head-actions{display:flex;align-items:center;gap:8px}
.nachweis-savestate{font-size:11px;color:#8a8;min-width:80px;text-align:right}
.nachweis-savestate.saving{color:#C8780A}
.nachweis-savestate.error{color:#C62828}
#nachweis-body{flex:1 1 auto;overflow-y:auto;padding:16px;background:#f5f7fa}
body.dark #nachweis-body{background:#1a1c20}
#nachweis-overlay .dactions{padding:12px 16px;border-top:1px solid var(--line);flex-shrink:0}

/* Formular-Grundlayout wie die Vorlage */
.nw-form{background:#fff;border-radius:6px;padding:18px 22px;color:#111;font-family:-apple-system,'Segoe UI',Roboto,sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.nw-form .nw-title{color:#1F3864;font-size:18px;font-weight:bold;margin:0 0 10px}
.nw-form .nw-subtitle{color:#1F3864;font-size:12px;margin:-8px 0 16px}
.nw-form .nw-section{margin:14px 0;background:#E8EEF7;padding:8px 12px;color:#1F3864;font-weight:bold;font-size:13px;border-radius:4px}
.nw-form .nw-row{display:flex;gap:12px;margin:8px 0;align-items:flex-start}
.nw-form .nw-row label{flex:0 0 auto;font-size:12px;color:#444;padding-top:8px;min-width:80px}
.nw-form .nw-row .nw-value,
.nw-form .nw-row input[type=text],
.nw-form .nw-row input[type=date],
.nw-form .nw-row input[type=time],
.nw-form .nw-row input[type=number],
.nw-form .nw-row textarea{flex:1;padding:6px 10px;border:1px solid #cfd4dc;background:#E8EEF7;border-radius:4px;font-size:13px;color:#111}
.nw-form textarea{resize:vertical;min-height:64px;font-family:inherit;
  width:100%;box-sizing:border-box;padding:8px 12px;
  border:1px solid #cfd4dc;background:#E8EEF7;border-radius:4px;font-size:13px;color:#111}
.nw-form .nw-value{display:block;padding:6px 10px;background:#E8EEF7;border-radius:4px;font-size:13px;color:#111}

/* Checkbox-Leiste fuer Leistungsart */
.nw-checkboxes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 16px;margin:10px 0}
.nw-checkboxes label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#333}
.nw-checkboxes input[type=checkbox]{width:16px;height:16px;cursor:pointer}

/* Zeitmatrix */
.nw-time-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:12px}
.nw-time-table th{background:#E8EEF7;color:#1F3864;font-weight:bold;padding:6px 8px;text-align:left;border:1px solid #cfd4dc}
.nw-time-table td{padding:4px 6px;border:1px solid #cfd4dc}
.nw-time-table td input{width:100%;padding:4px 6px;border:1px solid #cfd4dc;border-radius:3px;font-size:12px;text-align:center}
.nw-time-table td.nw-readonly{background:#f0f2f5;color:#666;text-align:center;font-weight:bold}
.nw-time-table tfoot td{background:#E8EEF7;color:#1F3864;font-weight:bold}

/* Unterschriften */
.nw-sign-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0 8px}
.nw-sign{display:flex;flex-direction:column;gap:4px}
.nw-sign-label{font-size:11px;color:#555;font-weight:bold}
.nw-sign-canvas-wrap{position:relative;border:1px solid #cfd4dc;border-radius:4px;background:#fff;overflow:hidden}
.nw-sign-canvas{display:block;width:100%;height:100px;touch-action:none;cursor:crosshair}
.nw-sign-clear{position:absolute;top:4px;right:4px;font-size:11px;padding:3px 8px;background:#fff;border:1px solid #cfd4dc;border-radius:3px;cursor:pointer;color:#666}
.nw-sign-clear:hover{background:#fee;color:#C62828}
.nw-sign-name{margin-top:4px;padding:5px 8px;border:1px solid #cfd4dc;background:#E8EEF7;border-radius:3px;font-size:12px;width:100%}

/* Pruefliste-Matrix */
.nw-pl-matrix{width:100%;border-collapse:collapse;font-size:11.5px;margin:10px 0}
.nw-pl-matrix th,.nw-pl-matrix td{border:1px solid #d5d9e0;padding:3px 5px;vertical-align:middle}
.nw-pl-matrix thead th{background:#E8EEF7;color:#1F3864;font-weight:bold;text-align:center}
.nw-pl-matrix .nw-pl-anlage-head{background:#d7e0ee;text-align:center;font-weight:bold;color:#1F3864}
.nw-pl-matrix .nw-pl-anlage-head select{padding:2px 4px;font-size:11px;border:1px solid #1F3864;background:#fff;color:#1F3864;border-radius:3px;margin:0 3px}
.nw-pl-matrix .nw-pl-group{background:#f0f3fa;color:#1F3864;font-weight:bold;padding:5px 8px}
.nw-pl-matrix .nw-pl-punkt{color:#333;padding-left:12px}
.nw-pl-matrix .nw-pl-status{text-align:center;white-space:nowrap}
.nw-pl-matrix .nw-pl-status label{display:inline-block;margin:0 3px;font-size:10px;color:#555;cursor:pointer}
.nw-pl-matrix .nw-pl-status input[type=radio]{margin-right:2px;cursor:pointer}
.nw-pl-matrix .nw-pl-status-header{font-size:10px;color:#555;text-align:center}
.nw-pl-matrix .nw-pl-status-header span{display:inline-block;width:32px;text-align:center;transform:rotate(-40deg);transform-origin:center}
.nw-pl-all-ok-btn{font-size:10px;padding:2px 6px;background:#2E7D32;color:#fff;border:none;border-radius:3px;cursor:pointer;margin-top:3px}
.nw-pl-all-ok-btn:hover{background:#256428}
.nw-pl-matrix .nw-pl-punkt{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nw-pl-hide-btn{flex:0 0 auto;padding:1px 7px;font-size:11px;line-height:1.4;background:#f4f4f4;color:#888;border:1px solid #ccc;border-radius:3px;cursor:pointer;margin-left:auto}
.nw-pl-hide-btn:hover{background:#ffe8e8;color:#C62828;border-color:#C62828}

/* Anlagen-Start-Dialog */
.nw-pl-start-dialog{background:#fff;padding:24px;border-radius:6px;max-width:460px;margin:40px auto;text-align:center;box-shadow:0 4px 12px rgba(0,0,0,.15);color:#222}
.nw-pl-start-dialog h4{margin:0 0 12px;color:#1F3864}
.nw-pl-start-dialog p{font-size:13px;color:#555;margin:0 0 16px}
.nw-pl-start-dialog .nw-pl-anz-input{font-size:24px;text-align:center;padding:10px;width:80px;margin:0 auto;border:1px solid #cfd4dc;border-radius:4px}
.nw-pl-start-dialog .btn-ok{margin-top:16px}

/* Nachweis-Liste im Halle-Sub-Tab */
.nw-list{background:#fff;border-radius:6px;padding:12px;color:#111}
body.dark .nw-list{background:rgba(255,255,255,.04);color:var(--t-primary)}
.nw-list-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:8px}
.nw-list-head .nw-new-buttons{display:flex;gap:6px}
.nw-list-table{width:100%;border-collapse:collapse;font-size:13px}
.nw-list-table th{background:rgba(0,0,0,.05);font-weight:bold;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
body.dark .nw-list-table th{background:rgba(255,255,255,.05)}
.nw-list-table td{padding:5px 8px;border-bottom:1px solid var(--line)}
.nw-list-table tr:hover{background:rgba(139,169,255,.1);cursor:pointer}
.nw-list-table .nw-status-entwurf{color:#C8780A;font-weight:bold}
.nw-list-table .nw-status-abgeschlossen{color:#2E7D32;font-weight:bold}
.nw-list-empty{text-align:center;color:#777;padding:24px;font-size:13px}

/* Monteur-Modus: Nachweis-Button in Wochenplan-Kachel */
.mw-nachweis-btn{display:inline-block;background:#1F3864;color:#fff;border:none;border-radius:4px;padding:4px 8px;font-size:11px;margin-top:4px;cursor:pointer}
.mw-nachweis-btn:hover{background:#152a4d}
.mw-nachweis-menu{display:none;position:absolute;background:#fff;color:#222;border:1px solid #ccc;border-radius:4px;padding:4px;box-shadow:0 2px 6px rgba(0,0,0,.2);z-index:100}
.mw-nachweis-menu.open{display:block}
.mw-nachweis-menu button{display:block;width:100%;background:#fff;border:none;padding:6px 12px;cursor:pointer;font-size:12px;text-align:left;color:#222}
.mw-nachweis-menu button:hover{background:#E8EEF7}
.mw-nachweis-done{color:#2E7D32;font-weight:bold;font-size:14px;margin-left:4px}

/* Erledigte Slot-Karten: gruener Rand-Marker */
.slot-card.erledigt{border-left-width:5px!important;border-left-color:#2E7D32!important}

/* Ja/Nein-Radio fuer Prueflisten-Befund */
.nw-janein{display:inline-flex;gap:12px;margin-left:8px}
.nw-janein label{display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer;color:#333}

/* ============ VORSCHRIFTEN-OVERLAY ============ */
.vorschriften-dialog{width:min(1100px,96vw);max-height:92vh;display:flex;flex-direction:column;padding:0}
.vs-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);flex-shrink:0;gap:12px}
.vs-head h3{margin:0;font-size:16px;flex:1}
.vs-head-actions{display:flex;gap:8px;align-items:center}
.vs-head-actions input{padding:6px 10px;border:1px solid var(--line);background:var(--surface-2);color:var(--t-primary);border-radius:4px;font-size:13px;width:200px}
.vs-body{display:flex;flex:1 1 auto;overflow:hidden}
.vs-sidebar{flex:0 0 260px;overflow-y:auto;border-right:1px solid var(--line);padding:8px 0;background:var(--surface-2)}
.vs-content{flex:1;overflow-y:auto;padding:16px 24px}
.vs-cat{padding:8px 16px;font-size:12px;color:#8B5E0A;font-weight:bold;text-transform:uppercase;letter-spacing:0.5px;margin-top:8px}
.vs-item{padding:8px 16px;cursor:pointer;border-left:3px solid transparent;font-size:13px;color:var(--t-primary);line-height:1.3}
.vs-item:hover{background:rgba(139,169,255,.1)}
.vs-item.active{background:rgba(200,120,10,.18);border-left-color:#C8780A;color:#fff}
.vs-item .vs-item-num{display:block;font-weight:bold;color:#C8780A;font-size:12px}
.vs-item .vs-item-titel{display:block;font-size:12px;opacity:.9;margin-top:2px}
.vs-disclaimer{background:#fff3cd;color:#222;padding:10px 14px;border-radius:4px;font-size:12px;margin-bottom:16px;border-left:3px solid #C8780A}
.vs-disclaimer b{color:#C8780A}
.vs-entry{}
.vs-entry h4{color:#1F3864;font-size:17px;margin:0 0 4px}
body.dark .vs-entry h4{color:#8BA9FF}
.vs-entry .vs-num{display:inline-block;background:#1F3864;color:#fff;padding:2px 8px;border-radius:3px;font-size:11px;font-weight:bold;margin-right:8px}
.vs-entry .vs-titel-full{color:var(--t-secondary);font-size:14px;margin:0 0 12px}
.vs-meta{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:13px;margin:8px 0 16px;padding:8px 12px;background:rgba(139,169,255,.08);border-radius:4px}
.vs-meta dt{font-weight:bold;color:var(--t-primary)}
.vs-meta dd{margin:0;color:var(--t-secondary)}
.vs-entry h5{color:var(--t-primary);font-size:14px;margin:14px 0 6px}
.vs-entry p{font-size:13px;line-height:1.55;color:var(--t-secondary);margin:6px 0}
.vs-entry ul{margin:6px 0 10px;padding-left:24px}
.vs-entry ul li{font-size:13px;line-height:1.55;color:var(--t-secondary);margin:4px 0}
.vs-quelle{font-size:12px;color:var(--t-secondary);margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}
.vs-quelle a{color:#8BA9FF;text-decoration:none}
.vs-quelle a:hover{text-decoration:underline}

/* v8.5.4: Grenzwert-Box - Zahlen als prominente Kacheln statt in Fliesstext */
.vs-zahlen{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin:8px 0 14px}
.vs-zahl{background:linear-gradient(135deg,rgba(200,120,10,.10),rgba(200,120,10,.04));border:1px solid rgba(200,120,10,.22);border-radius:6px;padding:10px 12px}
.vs-zahl-wert{font-size:20px;font-weight:bold;color:#C8780A;line-height:1.1}
.vs-zahl-einheit{font-size:12px;font-weight:normal;color:var(--t-secondary);margin-left:3px}
.vs-zahl-label{font-size:11px;color:var(--t-secondary);margin-top:4px;line-height:1.35}
body.dark .vs-zahl-wert{color:#E8A050}

/* v8.5.4: Praxis-Box - was macht der Monteur konkret */
.vs-pruefhandlung{background:rgba(56,142,60,.09);border-left:3px solid #388E3C;padding:10px 14px;border-radius:4px;margin:10px 0;font-size:13px;line-height:1.55;color:var(--t-primary)}
.vs-pruefhandlung b{color:#388E3C;display:block;margin-bottom:4px;font-size:12px;text-transform:uppercase;letter-spacing:0.5px}
body.dark .vs-pruefhandlung{background:rgba(102,187,106,.12)}
body.dark .vs-pruefhandlung b{color:#81C784}

/* v8.5.4: Siehe-auch-Liste mit klickbaren Chips */
.vs-querverweise{margin:12px 0 6px;font-size:12px}
.vs-querverweise-label{color:var(--t-secondary);margin-right:8px}
.vs-chip{display:inline-block;background:rgba(139,169,255,.14);border:1px solid rgba(139,169,255,.28);color:#8BA9FF;padding:3px 10px;border-radius:12px;font-size:12px;margin:2px 4px 2px 0;cursor:pointer;transition:background .1s}
.vs-chip:hover{background:rgba(139,169,255,.28)}

/* Monteur-Modus: Touch-Optimierung */
body.monteur-mode .vs-item{padding:14px 16px;min-height:48px;font-size:14px}
body.monteur-mode .vs-sidebar{flex:0 0 300px}
body.monteur-mode .vs-entry h4{font-size:18px}
body.monteur-mode .vs-entry p,
body.monteur-mode .vs-entry ul li{font-size:14px}

/* ============== PIPELINE / KANBAN (v7.6) ============== */
/* v7.5.4: Pipeline auf Vollbild fuer maximalen Ueberblick */
.pipe-dialog{width:100vw;height:100vh;max-width:100vw;max-height:100vh;
  display:flex;flex-direction:column;padding:0;
  background:linear-gradient(135deg, rgba(36,42,62,.97) 0%, rgba(28,34,52,.96) 100%);
  border-radius:0;border:none;box-shadow:none}
.pipe-head{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);flex-shrink:0}
.pipe-head h3{margin:0;font-size:16px}
.pipe-tabs{display:flex;gap:4px;background:rgba(0,0,0,.2);padding:3px;border-radius:6px}
.pipe-tab{padding:6px 14px;font-size:13px;background:transparent;border:none;color:var(--t-secondary);cursor:pointer;border-radius:4px}
.pipe-tab.active{background:var(--surface-2);color:var(--t-primary);box-shadow:0 1px 2px rgba(0,0,0,.3)}
.pipe-tab:hover:not(.active){color:var(--t-primary)}
.pipe-head-actions{margin-left:auto;display:flex;gap:8px;align-items:center}
.pipe-head-actions input[type=text],
.pipe-head-actions select{padding:5px 10px;font-size:12px;background:var(--surface-2);color:var(--t-primary);border:1px solid var(--line);border-radius:4px}
.pipe-head-actions input[type=text]{width:180px}
/* v8.0.4: Praegnanter "Neuer Lead"-Button - sticht im Header heraus */
.pipe-newlead-btn{background:#2E7D32;color:#fff;border:none;padding:8px 16px;font-size:13px;
  font-weight:bold;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:6px;
  box-shadow:0 2px 6px rgba(46,125,50,.4);transition:background .15s,transform .1s,box-shadow .15s;
  letter-spacing:.3px}
.pipe-newlead-btn:hover{background:#1B5E20;box-shadow:0 3px 10px rgba(46,125,50,.55);transform:translateY(-1px)}
.pipe-newlead-btn:active{transform:translateY(0);box-shadow:0 1px 3px rgba(46,125,50,.4)}
.pipe-newlead-btn .plus{font-size:17px;line-height:1;font-weight:bold}

#pipeline-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:10px;font-size:10px;background:#C62828;color:#fff;font-weight:bold}

/* Dashboard-Zeile oben im Pipeline-Overlay */
.pipe-dashboard{display:flex;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);flex-shrink:0;background:rgba(139,169,255,.04);overflow-x:auto}
.pipe-dash-item{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--surface-2);border-radius:4px;font-size:12px;white-space:nowrap}
.pipe-dash-item b{color:var(--t-primary)}
.pipe-dash-item.alert{background:#3d1818;color:#ffaaaa}
.pipe-dash-item.warn{background:#3d3018;color:#ffcc66}

.pipe-body{flex:1 1 auto;display:flex;overflow:hidden}
.pipe-board{flex:1 1 auto;overflow-x:auto;overflow-y:hidden;display:flex;gap:10px;padding:10px;align-items:stretch}
.pipe-sidebar{flex:0 0 0;overflow:hidden;border-left:1px solid var(--line-strong);background:linear-gradient(135deg, rgba(36,42,62,.97) 0%, rgba(28,34,52,.96) 100%);transition:flex-basis .2s}
.pipe-sidebar.open{flex:0 0 45%;overflow-y:auto;padding:16px 18px}
.pipe-sidebar.fullscreen{flex:0 0 100%}

/* Spalten */
.pipe-col{flex:0 0 280px;display:flex;flex-direction:column;background:var(--surface-1);border:1px solid var(--line);border-radius:6px;max-height:100%}
.pipe-col-head{padding:8px 10px;border-bottom:1px solid var(--line);font-size:12px;font-weight:bold;color:var(--t-primary);flex-shrink:0}
.pipe-col-head .pipe-col-title{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pipe-col-head .pipe-col-sum{font-weight:normal;font-size:11px;color:var(--t-secondary)}
.pipe-col-body{flex:1 1 auto;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px;contain:layout paint}
/* v8.6: Empty-State pro Stage */
.pipe-col-empty{font-size:11px;color:var(--t-secondary);font-style:italic;
  text-align:center;padding:16px 8px;opacity:.55;border:1px dashed rgba(255,255,255,.08);
  border-radius:6px;margin-top:4px}
.pipe-col.drop-target{background:rgba(139,169,255,.15);outline:2px dashed #8BA9FF}

/* Karten */
.pipe-card{position:relative;background:var(--surface-2);border-radius:5px;padding:8px 10px;box-shadow:0 1px 2px rgba(0,0,0,.3);cursor:pointer;border-left:4px solid #6B7280;font-size:12px}
/* v7.5.1: Hover ohne transform (kein Reflow), nur Schatten */
.pipe-card:hover{background:var(--surface-3);box-shadow:0 2px 6px rgba(0,0,0,.5)}
.pipe-card.prio-hoch{border-left-color:#D64545}
.pipe-card.prio-mittel{border-left-color:#C8780A}
.pipe-card.routine{border-left-color:#4A5568;border-left-width:3px;background:var(--surface-tag)}
.pipe-card.routine .pipe-card-source{color:#8BA9FF;opacity:.85}
/* Aktive Lead-Karte: orange Leuchten zur Orientierung waehrend Detail-Sidebar offen ist */
.pipe-card.is-active{outline:2px solid #FF9800;outline-offset:1px;box-shadow:0 0 0 2px rgba(255,152,0,.35),0 0 14px 2px rgba(255,152,0,.55);animation:pipeCardPulse 1.6s ease-in-out infinite;z-index:2}
@keyframes pipeCardPulse{0%,100%{box-shadow:0 0 0 2px rgba(255,152,0,.30),0 0 10px 1px rgba(255,152,0,.45)}50%{box-shadow:0 0 0 3px rgba(255,152,0,.55),0 0 18px 4px rgba(255,152,0,.75)}}
/* Nachleuchten nach Schliessen der Detail-Sidebar */
.pipe-card.was-active{animation:pipeCardAfterglow 3s ease-out forwards;z-index:2}
@keyframes pipeCardAfterglow{0%{outline:2px solid rgba(255,152,0,1);outline-offset:1px;box-shadow:0 0 0 3px rgba(255,152,0,.55),0 0 18px 4px rgba(255,152,0,.75)}100%{outline:2px solid rgba(255,152,0,0);outline-offset:1px;box-shadow:0 0 0 0 rgba(255,152,0,0),0 0 0 0 rgba(255,152,0,0)}}
/* Termin-vergangen-Warnung: knallroter Rand + Warning-Banner */
.pipe-card.termin-ueberfaellig{outline:2px solid #D64545;outline-offset:-1px;box-shadow:0 2px 6px rgba(214,69,69,.4)}
.pipe-card-warning{background:#D64545;color:#fff;font-size:10px;font-weight:bold;padding:3px 6px;border-radius:3px;margin:4px 0 2px;text-align:center;letter-spacing:.2px}
/* v8.4: Grossprojekt-Badge auf Pipeline-Karten */
.pipe-card-gp-badge{display:inline-block;font-size:9px;font-weight:bold;padding:1px 6px;border-radius:3px;background:rgba(124,58,237,.28);color:#D3BFFD;border:1px solid rgba(124,58,237,.55);margin-right:5px;letter-spacing:.3px;text-transform:uppercase;vertical-align:middle}
/* Bericht-vorhanden (Stage 'ausgefuehrt' + Nachweis): gruener Rand + Success-Banner */
.pipe-card.bericht-da{outline:2px solid #2E7D32;outline-offset:-1px;box-shadow:0 2px 6px rgba(46,125,50,.35)}
.pipe-card-success{background:#2E7D32;color:#fff;font-size:10px;font-weight:bold;padding:3px 6px;border-radius:3px;margin:4px 0 2px;text-align:center;letter-spacing:.2px}
.pipe-card-abger-days{font-size:10px;color:var(--t-secondary);margin-top:4px;padding-top:3px;border-top:1px dotted rgba(139,169,255,.2);text-align:right;font-style:italic}
/* 90-Tage-Warnung in 'Abgerechnet' ohne Zahlungseingang: roter Rahmen + Warn-Badge */
.pipe-card.warn-unbezahlt{outline:2px solid #D64545;outline-offset:-1px;box-shadow:0 2px 8px rgba(214,69,69,.45)}
.pipe-card-warn-unbezahlt{background:#D64545;color:#fff;font-size:10px;font-weight:bold;padding:3px 6px;border-radius:3px;margin:4px 0 2px;text-align:center;letter-spacing:.2px}
.pipe-card.dragging{opacity:.4}
.pipe-card.overdue{outline:2px solid #D64545;outline-offset:-1px;box-shadow:0 2px 6px rgba(214,69,69,.4)}
.pipe-card.today{outline:2px solid #C8780A;outline-offset:-1px;box-shadow:0 2px 6px rgba(200,120,10,.4)}
.pipe-card.done-hint{border-left-color:#2E7D32!important}
.pipe-card-id{font-size:10px;color:var(--t-secondary);font-family:monospace}
.pipe-card-title{font-weight:bold;color:var(--t-primary);margin:2px 0 4px;line-height:1.3}
.pipe-card-halle{font-size:11px;color:var(--t-secondary);margin-bottom:4px}
/* v8.0.8: Kunden-Shortcut auf Lead-Karte - klickbar, oeffnet Kunden-Stammdaten */
.pipe-card-kunde{font-size:11px;color:#8BA9FF;margin:-2px 0 4px;cursor:pointer;
  display:inline-block;padding:1px 4px;border-radius:3px;
  text-decoration:underline;text-decoration-color:rgba(139,169,255,.4);
  text-underline-offset:2px}
.pipe-card-kunde:hover{background:rgba(139,169,255,.15);text-decoration-color:#8BA9FF}
.pipe-card-meta{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:8px;flex-wrap:wrap}
.pipe-card-action{font-size:10px;padding:2px 6px;background:rgba(139,169,255,.15);color:#8BA9FF;border-radius:3px}
.pipe-card-action.overdue{background:rgba(214,69,69,.25);color:#ffaaaa}
.pipe-card-action.today{background:rgba(200,120,10,.25);color:#ffcc66}
.pipe-card-eur{font-size:11px;color:#2E7D32;font-weight:bold;margin-left:auto}
/* v8.0: Folge-Verkettung-Badges (Vorgaenger + Nachfolger) */
.pipe-card-chain-row{display:flex;gap:4px;margin:2px 0 4px;flex-wrap:wrap}
.pipe-card-chain{display:inline-block;font-size:10px;padding:1px 6px;border-radius:3px;
  cursor:pointer;font-weight:bold;letter-spacing:.2px}
.pipe-card-chain-vor{background:rgba(139,169,255,.20);color:#8BA9FF;border:1px solid rgba(139,169,255,.40)}
.pipe-card-chain-vor:hover{background:rgba(139,169,255,.45);color:#fff}
.pipe-card-chain-nach{background:rgba(255,193,7,.20);color:#FFD54F;border:1px solid rgba(255,193,7,.40)}
.pipe-card-chain-nach:hover{background:rgba(255,193,7,.50);color:#fff}
/* v8.0: Auto-Stage-Wechsel sichtbar - kurzer gruener Pulse */
/* Perf: outline + opacity statt box-shadow (GPU-friendly) */
.pipe-card.stage-changed{animation:pipe-stage-pulse 1.5s ease-out}
@keyframes pipe-stage-pulse {
  0%   { outline:0 solid rgba(46,125,50,.85); outline-offset:0 }
  35%  { outline:6px solid rgba(46,125,50,.55); outline-offset:2px }
  100% { outline:0 solid rgba(46,125,50,0); outline-offset:0 }
}
/* v7.5.5: Wiedervorlage-Karten - gedimmt wenn zukunft, gelb wenn faellig */
.pipe-card.wv-future{opacity:.7;border-left-color:#888!important}
.pipe-card.wv-faellig{outline:2px solid #FFD600;outline-offset:-1px;box-shadow:0 2px 8px rgba(255,214,0,.4)}
.pipe-card-wv-info{margin-top:4px;font-size:10px;color:var(--t-secondary);font-style:italic}
.pipe-card-wv-info.wv-faellig-text{color:#FFD600;font-weight:bold;font-style:normal}
/* v7.5.4: Quick-Action 'Einplanen' - ruft Wochenplaner-Add-Dialog auf */
.pipe-card-plan-btn{display:block;width:100%;margin-top:6px;padding:4px 8px;
  background:rgba(46,125,50,.25);border:1px solid rgba(46,125,50,.5);color:#A5D6A7;
  border-radius:4px;cursor:pointer;font-size:11px;font-weight:bold;text-align:center}
.pipe-card-plan-btn:hover{background:rgba(46,125,50,.55);color:#fff}
/* v7.5.5: Slot-Shortcut - blau, springt zur Slot-KW */
.pipe-card-slot-btn{display:block;width:100%;margin-top:6px;padding:4px 8px;
  background:rgba(31,56,100,.35);border:1px solid rgba(68,114,196,.55);color:#9EBFFF;
  border-radius:4px;cursor:pointer;font-size:11px;font-weight:bold;text-align:center}
.pipe-card-slot-btn:hover{background:rgba(68,114,196,.55);color:#fff}
/* v7.5.4: Ausschreibung-Entscheidung (Auftrag erhalten / Verloren) */
.pipe-card-decision-row{display:flex;gap:4px;margin-top:6px}
.pipe-card-win-btn,.pipe-card-lose-btn{flex:1;padding:4px 6px;border-radius:4px;cursor:pointer;
  font-size:11px;font-weight:bold;text-align:center;border:1px solid}
.pipe-card-win-btn{background:rgba(46,125,50,.35);border-color:#2E7D32;color:#fff}
.pipe-card-win-btn:hover{background:#2E7D32}
.pipe-card-lose-btn{background:rgba(198,40,40,.30);border-color:#C62828;color:#FFAAAA}
.pipe-card-lose-btn:hover{background:#C62828;color:#fff}
.pipe-card-icons{display:flex;gap:3px;font-size:10px;color:var(--t-secondary);margin-left:auto}
.pipe-card-icons span{padding:1px 5px;background:rgba(255,255,255,.06);border-radius:3px}
.pipe-card-source{position:absolute;top:4px;right:6px;font-size:9px;text-transform:uppercase;letter-spacing:0.5px;color:var(--t-secondary);opacity:.7}
.pipe-card-done-check{position:absolute;top:4px;left:4px;color:#2E7D32;font-size:12px;font-weight:bold}

/* Sidebar Detail-View */
.pipe-sidebar-hero{margin-bottom:16px;padding:14px 16px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08);border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.pipe-sb-hero-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.pipe-sb-hero-actions{display:flex;gap:4px;flex-shrink:0}
.pipe-sb-stage{display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;font-size:11px;font-weight:bold;letter-spacing:.4px;text-transform:uppercase;background:rgba(107,114,128,.22);color:#E8EAEF;border:1px solid rgba(255,255,255,.15)}
.pipe-sb-stage[data-stage="wiedervorlage"]{background:rgba(107,114,128,.28);border-color:rgba(107,114,128,.55);color:#D5D8DF}
.pipe-sb-stage[data-stage="neu"]{background:rgba(68,114,196,.30);border-color:rgba(68,114,196,.65);color:#C6DAFA}
.pipe-sb-stage[data-stage="qualifiziert"]{background:rgba(8,145,178,.30);border-color:rgba(8,145,178,.65);color:#A5E3F0}
.pipe-sb-stage[data-stage="angebot"]{background:rgba(124,58,237,.30);border-color:rgba(124,58,237,.65);color:#D3BFFD}
.pipe-sb-stage[data-stage="beauftragt"]{background:rgba(79,70,229,.30);border-color:rgba(79,70,229,.65);color:#C7C2F7}
.pipe-sb-stage[data-stage="geplant"]{background:rgba(200,120,10,.30);border-color:rgba(200,120,10,.65);color:#FFCC66}
.pipe-sb-stage[data-stage="ausgefuehrt"]{background:rgba(101,163,13,.30);border-color:rgba(101,163,13,.65);color:#BEDE7E}
.pipe-sb-stage[data-stage="abgerechnet"]{background:rgba(46,125,50,.34);border-color:rgba(46,125,50,.65);color:#A5D6A7}
.pipe-sb-stage[data-stage="beobachten"]{background:rgba(107,114,128,.28);border-color:rgba(107,114,128,.55);color:#D5D8DF}
.pipe-sb-stage[data-stage="kalkulieren"]{background:rgba(8,145,178,.30);border-color:rgba(8,145,178,.65);color:#A5E3F0}
.pipe-sb-stage[data-stage="abgegeben"]{background:rgba(124,58,237,.30);border-color:rgba(124,58,237,.65);color:#D3BFFD}
.pipe-sb-stage[data-stage="entschieden"]{background:rgba(200,120,10,.30);border-color:rgba(200,120,10,.65);color:#FFCC66}
.pipe-sb-hero-title{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}
.pipe-sb-id{font-size:12px;color:var(--t-secondary);font-family:monospace;font-weight:normal;flex-shrink:0}
.pipe-sb-hero-title h4{margin:0;font-size:18px;line-height:1.3;color:var(--t-primary);font-weight:600;flex:1;word-break:break-word}
.pipe-sb-hero-meta{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--t-secondary);line-height:1.5}
.pipe-sb-hero-meta span{display:inline-flex;align-items:center;gap:5px}
.pipe-sb-hero-meta b{color:var(--t-primary);font-weight:600}
.pipe-sb-meta-prio{font-weight:600}
.pipe-sb-meta-prio.prio-hoch{color:#FF9F9F}
.pipe-sb-meta-prio.prio-mittel{color:#FFCC66}
.pipe-sidebar-tabs{display:flex;gap:3px;margin-bottom:14px;background:rgba(0,0,0,.30);padding:4px;border-radius:10px;border:1px solid rgba(255,255,255,.06)}
.pipe-sidebar-tab{padding:7px 13px;font-size:13px;font-weight:500;background:transparent;border:none;color:var(--t-secondary);cursor:pointer;border-radius:7px;transition:background .15s,color .15s}
.pipe-sidebar-tab:hover{color:var(--t-primary);background:rgba(255,255,255,.04)}
.pipe-sidebar-tab.active{background:rgba(255,255,255,.11);color:var(--t-primary);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.pipe-sidebar-tab .cnt{opacity:.7;margin-left:5px;font-size:11px;font-weight:normal}
.pipe-detail-section{margin-bottom:10px;padding:12px 14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:10px}
.pipe-halle-jump{cursor:pointer;border-radius:4px;padding:1px 4px;margin:-1px -4px;transition:background .12s,color .12s;display:inline}
.pipe-halle-jump:hover{background:rgba(255,143,0,.14);color:#FFCC80}
.pipe-halle-jump:hover b{color:#FFCC80}
/* v8.0.5: Lexware-Hinweis-Box im Rechnungs-/Angebots-Tab */
.lexware-hinweis{background:rgba(31,56,100,.10);border-left:3px solid #1F3864;
  padding:8px 12px;margin-bottom:10px;font-size:11.5px;line-height:1.45;
  border-radius:4px;color:var(--t-primary,#E8EAEF);
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lexware-hinweis b{color:#8BA9FF}
.lexware-hinweis .btn-no{flex-shrink:0}
.pipe-detail-section label{display:block;font-size:10.5px;color:var(--t-secondary);margin-bottom:6px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.pipe-detail-section input,
.pipe-detail-section select,
.pipe-detail-section textarea{width:100%;padding:8px 10px;font-size:13px;background:rgba(0,0,0,.25);color:var(--t-primary);border:1px solid rgba(255,255,255,.10);border-radius:6px;transition:border-color .15s,background .15s,box-shadow .15s}
.pipe-detail-section input:hover,
.pipe-detail-section select:hover,
.pipe-detail-section textarea:hover{border-color:rgba(255,255,255,.18)}
.pipe-detail-section input:focus,
.pipe-detail-section select:focus,
.pipe-detail-section textarea:focus{outline:none;border-color:var(--accent);background:rgba(0,0,0,.35);box-shadow:0 0 0 3px rgba(68,114,196,.18)}
.pipe-detail-section textarea{resize:vertical;min-height:72px;line-height:1.5}
.pipe-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pipe-detail-grid .pipe-detail-section{margin-bottom:0}
.pipe-act-item{padding:10px 12px;background:rgba(0,0,0,.22);border-radius:6px;margin-bottom:6px;font-size:12.5px;border-left:3px solid #8BA9FF}
.pipe-act-item.typ-termin{border-left-color:#C8780A}
.pipe-act-item.typ-stage_wechsel{border-left-color:#6B7280;opacity:.7}
.pipe-act-item.typ-system{border-left-color:#555;opacity:.7;font-style:italic}
.pipe-act-head{display:flex;justify-content:space-between;font-size:10px;color:var(--t-secondary);margin-bottom:3px}
.pipe-act-text{color:var(--t-primary);white-space:pre-wrap}

/* Quick-Capture-Dialog */
.pipe-capture-dialog{width:min(90vw,520px);padding:20px}
.pipe-capture-body label{display:block;font-size:11px;color:var(--t-secondary);margin:8px 0 2px;font-weight:bold}
.pipe-capture-body input,
.pipe-capture-body select,
.pipe-capture-body textarea{width:100%;padding:7px 10px;font-size:13px;background:var(--surface-2);color:var(--t-primary);border:1px solid var(--line);border-radius:4px;box-sizing:border-box}
.pipe-capture-body textarea{resize:vertical;min-height:60px}
.pipe-cap-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
.pipe-cap-suggest{position:absolute;top:100%;left:0;right:0;background:rgba(30,34,48,.96);border:1px solid rgba(255,255,255,.14);border-radius:10px;max-height:200px;overflow-y:auto;z-index:10;display:none;box-shadow:0 12px 40px rgba(0,0,0,.55);margin-top:4px}
.pipe-cap-suggest.open{display:block}
.pipe-cap-suggest-item{padding:6px 10px;cursor:pointer;font-size:12px}
.pipe-cap-suggest-item:hover,.pipe-cap-suggest-item.active{background:rgba(139,169,255,.15)}
.pipe-cap-info{margin-top:6px;padding:8px;background:rgba(139,169,255,.08);border-radius:4px;font-size:11px;color:var(--t-secondary)}
.pipe-cap-info b{color:var(--t-primary)}

/* v8.1: Pipeline kompakter - mehr Inhalt pro Bildschirm, weniger Scrollen.
   Werte gezielt heruntergesetzt; rein paddings/margins/font-sizes,
   keine Strukturaenderung. Bei Bedarf einfach diesen Block loeschen
   um zu den v7.x-Groessen zurueckzukehren. */
.pipe-head{padding:6px 12px}
.pipe-head h3{font-size:14px}
.pipe-tab{padding:4px 10px;font-size:12px}
.pipe-newlead-btn{padding:5px 12px;font-size:12px}
.pipe-newlead-btn .plus{font-size:15px}
.pipe-head-actions input[type=text]{width:160px}
.pipe-head-actions input[type=text],
.pipe-head-actions select{padding:4px 8px;font-size:11px}
.pipe-dashboard{padding:4px 12px;gap:6px}
.pipe-dash-item{padding:3px 8px;font-size:11px;gap:4px}
.pipe-board{gap:6px;padding:6px}
.pipe-col{flex:0 0 240px}
.pipe-col-head{padding:5px 8px;font-size:11px}
.pipe-col-head .pipe-col-sum{font-size:10px}
.pipe-col-body{padding:5px;gap:4px}
.pipe-card{padding:5px 8px;font-size:11px;border-left-width:3px}
.pipe-card-id{font-size:9px}
.pipe-card-title{margin:1px 0 2px;line-height:1.25;font-size:12px}
.pipe-card-halle{font-size:10px;margin-bottom:2px}
.pipe-card-meta{margin-top:3px;gap:5px}
.pipe-card-action{font-size:9px;padding:1px 5px}
.pipe-card-eur{font-size:10px}
.pipe-card-warning,
.pipe-card-success{font-size:9px;padding:2px 5px;margin:2px 0 1px;letter-spacing:.1px}
.pipe-card-chain-row{margin:1px 0 2px;gap:3px}
.pipe-card-chain{font-size:9px;padding:1px 5px}
.pipe-card-icons{font-size:9px;gap:2px}
.pipe-card-icons span{padding:1px 4px}
.pipe-card-source{font-size:8px;top:3px;right:5px}
.pipe-card-done-check{font-size:10px;top:3px;left:3px}
.pipe-card-plan-btn,
.pipe-card-slot-btn{margin-top:4px;padding:3px 6px;font-size:10px}
.pipe-card-decision-row{margin-top:4px;gap:3px}
.pipe-card-win-btn,.pipe-card-lose-btn{padding:3px 5px;font-size:10px}
.pipe-card-wv-info{font-size:9px;margin-top:3px}
.pipe-card-abger-days{font-size:9px;margin-top:3px;padding-top:2px}

/* v8.1: Globale Hilfe (Lexikon + FAQ + Workflows + Was-ist-neu) */
#help-overlay{z-index:1400}
.help-modal{
  width:min(95vw,920px);max-height:90vh;
  display:flex;flex-direction:column;padding:0;overflow:hidden;
}
.help-head{
  display:flex;align-items:center;gap:14px;padding:14px 18px;
  border-bottom:1px solid var(--line);flex-shrink:0;
}
.help-head h3{margin:0;font-size:16px;color:var(--t-primary)}
.help-head .help-close{margin-left:auto}
.help-search-row{
  padding:10px 18px;border-bottom:1px solid var(--line);background:rgba(0,0,0,.15);
  flex-shrink:0;
}
#help-search{
  width:100%;padding:7px 10px;font-size:13px;
  background:var(--surface-2);color:var(--t-primary);
  border:1px solid var(--line);border-radius:5px;box-sizing:border-box;
}
.help-tabs{
  display:flex;gap:2px;padding:0 14px;background:rgba(0,0,0,.18);
  border-bottom:1px solid var(--line);flex-shrink:0;
}
.help-tab{
  padding:9px 16px;font-size:13px;background:transparent;border:none;
  color:var(--t-secondary);cursor:pointer;border-bottom:2px solid transparent;
}
.help-tab:hover{color:var(--t-primary)}
.help-tab.active{color:var(--t-primary);border-bottom-color:var(--accent);font-weight:bold}
.help-tab .help-tab-cnt{opacity:.55;margin-left:5px;font-size:11px}
.help-body{flex:1 1 auto;overflow-y:auto;padding:18px 20px}
.help-pane{display:none}
.help-pane.active{display:block}
.help-section-title{
  font-size:12px;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;
  margin:18px 0 10px;font-weight:bold;
}
.help-section-title:first-child{margin-top:0}
.help-item{
  margin-bottom:10px;background:rgba(0,0,0,.15);border:1px solid var(--line);
  border-radius:6px;overflow:hidden;
}
.help-item summary{
  padding:9px 14px;cursor:pointer;font-size:13px;font-weight:bold;color:var(--t-primary);
  list-style:none;display:flex;align-items:center;gap:8px;
}
.help-item summary::-webkit-details-marker{display:none}
.help-item summary::before{
  content:"\25B8";color:var(--accent);font-size:10px;transition:transform .12s;
  display:inline-block;
}
.help-item[open] summary::before{transform:rotate(90deg)}
.help-item summary:hover{background:rgba(139,169,255,.08)}
.help-item-body{
  padding:6px 14px 14px 30px;font-size:13px;line-height:1.6;color:var(--t-primary);
  border-top:1px solid var(--line);
}
.help-item-body p{margin:6px 0}
.help-item-body ol,.help-item-body ul{margin:6px 0;padding-left:22px}
.help-item-body li{margin-bottom:4px}
.help-item-body code{
  background:rgba(255,255,255,.08);padding:1px 5px;border-radius:3px;
  font-size:12px;color:#FFD54F;
}
.help-item-body kbd{
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.2);
  padding:1px 6px;border-radius:3px;font-size:11px;font-family:monospace;
  box-shadow:0 1px 0 rgba(255,255,255,.1) inset;
}
.help-item-body .help-tip{
  background:rgba(46,125,50,.15);border-left:3px solid #4CAF50;
  padding:6px 10px;margin:8px 0;border-radius:3px;font-size:12px;
}
.help-item-body .help-warn{
  background:rgba(200,120,10,.15);border-left:3px solid #C8780A;
  padding:6px 10px;margin:8px 0;border-radius:3px;font-size:12px;
}
.help-item-body b.help-pill{
  display:inline-block;background:rgba(139,169,255,.25);color:#8BA9FF;
  padding:1px 7px;border-radius:3px;font-size:11px;font-weight:bold;
}
/* v8.1.1: Rolle-Pills (Buero/Monteur/Chef) im Workflow-Header */
.help-item summary .help-role-pills{margin-left:auto;display:flex;gap:4px}
.help-role{
  display:inline-block;padding:1px 7px;border-radius:10px;font-size:9px;font-weight:bold;
  letter-spacing:.3px;text-transform:uppercase;border:1px solid;
}
.help-role-buero{background:rgba(91,140,255,.18);color:#8BA9FF;border-color:rgba(91,140,255,.5)}
.help-role-monteur{background:rgba(255,176,116,.18);color:#FFB074;border-color:rgba(255,176,116,.5)}
.help-role-chef{background:rgba(165,214,167,.15);color:#A5D6A7;border-color:rgba(165,214,167,.5)}
.help-role-alle{background:rgba(255,255,255,.08);color:var(--t-secondary);border-color:rgba(255,255,255,.2)}
/* v8.1.1: Workflow-Meta-Header (Dauer, Ziel) */
.help-meta{
  display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--t-secondary);
  margin-bottom:8px;padding:6px 10px;background:rgba(0,0,0,.18);border-radius:4px;
}
.help-meta b{color:var(--t-primary)}
.help-meta .help-meta-sep{opacity:.4}
/* v8.1.1: "Warum so gebaut?"-Box - Designentscheidung */
.help-item-body .help-why{
  background:rgba(139,169,255,.10);border-left:3px solid #8BA9FF;
  padding:8px 12px;margin:10px 0;border-radius:3px;font-size:12px;line-height:1.55;
}
.help-item-body .help-why::before{
  content:"\1F4A1 Warum so gebaut?";display:block;font-weight:bold;color:#8BA9FF;
  font-size:11px;letter-spacing:.3px;margin-bottom:4px;
}
/* v8.1.1: Rollen-Filter ueber den Workflows */
.help-role-filter{
  display:flex;gap:6px;align-items:center;margin-bottom:14px;
  padding:8px 12px;background:rgba(0,0,0,.20);border-radius:6px;flex-wrap:wrap;
}
.help-role-filter span.help-rf-label{font-size:11px;color:var(--t-secondary);font-weight:bold;margin-right:4px}
.help-role-filter button{
  padding:4px 10px;border-radius:12px;border:1px solid var(--line);
  background:rgba(255,255,255,.04);color:var(--t-secondary);
  font-size:11px;font-weight:bold;cursor:pointer;letter-spacing:.2px;
}
.help-role-filter button:hover{background:rgba(255,255,255,.10);color:var(--t-primary)}
.help-role-filter button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.help-role-hidden{display:none}
/* Lexikon: kompakte Definitions-Liste */
.help-dl{margin:0;padding:0}
.help-dl dt{
  font-weight:bold;color:var(--accent);font-size:13px;margin:14px 0 3px;
  padding-bottom:3px;border-bottom:1px dotted rgba(139,169,255,.3);
}
.help-dl dt:first-child{margin-top:0}
.help-dl dd{
  margin:0 0 4px 0;font-size:12px;line-height:1.55;color:var(--t-primary);
}
.help-dl dd .help-see{font-size:11px;color:var(--t-secondary);font-style:italic;margin-top:3px;display:block}
/* Changelog */
.help-cl-version{
  font-weight:bold;color:var(--accent);font-size:12px;margin:14px 0 6px;
  letter-spacing:.3px;
}
.help-cl-version:first-child{margin-top:0}
.help-cl-date{font-weight:normal;color:var(--t-secondary);margin-left:8px;font-size:11px}
.help-cl-list{margin:0 0 4px 0;padding-left:22px;font-size:12px;line-height:1.7;color:var(--t-primary)}
.help-cl-list li{margin-bottom:3px}
.help-cl-list li::marker{color:var(--accent)}
/* Such-Treffer-Hervorhebung */
.help-item.help-hidden,.help-dl-block.help-hidden,.help-cl-block.help-hidden{display:none}
.help-empty{text-align:center;color:var(--t-secondary);padding:30px;font-style:italic}
/* Header-Hilfe-Button */
.hbtn.help-btn{background:rgba(139,169,255,.15);font-weight:bold}
.hbtn.help-btn:hover{background:rgba(139,169,255,.30)}

/* v8.1.1: Inline-Help-Icons - kleines (?) neben einzelnen UI-Elementen */
.ihelp{
  display:inline-flex;align-items:center;justify-content:center;
  width:15px;height:15px;border-radius:50%;
  background:rgba(139,169,255,.18);color:#8BA9FF;
  border:1px solid rgba(139,169,255,.4);
  font-size:10px;font-weight:bold;cursor:help;
  margin-left:5px;vertical-align:middle;line-height:1;
  font-family:Georgia,serif;font-style:italic;
  transition:all .12s;flex-shrink:0;
}
.ihelp:hover{background:#8BA9FF;color:#fff;transform:scale(1.15)}
.ihelp::before{content:"?"}
/* Tooltip bei Hover/Klick */
#ihelp-tooltip{
  position:fixed;z-index:2500;
  background:#1F2430;color:#fff;
  padding:10px 13px;border-radius:6px;
  font-size:12px;line-height:1.55;
  box-shadow:0 6px 24px rgba(0,0,0,.55);
  border:1px solid rgba(139,169,255,.4);
  max-width:340px;display:none;pointer-events:auto;
  font-family:inherit;font-weight:normal;text-transform:none;letter-spacing:normal;
}
#ihelp-tooltip.open{display:block}
#ihelp-tooltip h5{
  margin:0 0 6px 0;font-size:12px;color:#8BA9FF;font-weight:bold;
  letter-spacing:.3px;
}
#ihelp-tooltip p{margin:4px 0}
#ihelp-tooltip ul{margin:4px 0;padding-left:18px}
#ihelp-tooltip li{margin-bottom:2px}
#ihelp-tooltip code{
  background:rgba(255,255,255,.1);padding:1px 5px;border-radius:3px;
  font-size:11px;color:#FFD54F;
}
#ihelp-tooltip .ihelp-tip{
  background:rgba(46,125,50,.18);border-left:2px solid #4CAF50;
  padding:4px 8px;margin:6px 0;font-size:11px;border-radius:2px;
}
#ihelp-tooltip .ihelp-warn{
  background:rgba(200,120,10,.18);border-left:2px solid #C8780A;
  padding:4px 8px;margin:6px 0;font-size:11px;border-radius:2px;
}
#ihelp-tooltip .ihelp-arrow{
  position:absolute;width:10px;height:10px;
  background:#1F2430;border-left:1px solid rgba(139,169,255,.4);
  border-top:1px solid rgba(139,169,255,.4);
  transform:rotate(45deg);
}

/* Ausschreibungs-Deadline-Styles */
.pipe-card.deadline-warn{box-shadow:0 0 0 2px #C8780A}
/* v7.5.1: pulse-Animation entfernt (war Performance-Killer bei vielen kritischen Cards).
   Statischer kraeftiger Rot-Rahmen reicht zur Aufmerksamkeit. */
.pipe-card.deadline-crit{box-shadow:0 0 0 3px #D64545, 0 0 0 6px rgba(214,69,69,.25)}
@keyframes pulse-red {
  /* Deaktiviert ab v7.5.1 - Animation wurde permanent gerendert auch bei vielen Cards */
  0%,100% { box-shadow: 0 0 0 3px #D64545; }
  50% { box-shadow: 0 0 0 6px rgba(214,69,69,.4); }
}

/* Monteur-Modus: Pipeline ausblenden */
body.monteur-mode #pipeline-btn{display:none!important}

/* v7.6: Cross-Highlight fuer zuletzt geklickte Halle (Sidebar + Wochenplaner) */
.halle-highlight{
  box-shadow:0 0 0 3px #FF8F00, 0 0 12px rgba(255,143,0,.65) !important;
  position:relative;
  z-index:3;
}
.sb-halle.halle-highlight{background:rgba(255,143,0,.18) !important}
.slot-card.halle-highlight, .slot-fortsetzung.halle-highlight{background:rgba(255,143,0,.14) !important}

/* ============== v8.6 Team-Chat ============== */
.chat-shell{
  width:92vw;max-width:1200px;height:88vh;
  background:var(--gh-panel);
  border:1px solid var(--gh-border);border-radius:8px;
  box-shadow:0 16px 40px rgba(0,0,0,.45);
  color:var(--gh-text);display:flex;flex-direction:column;overflow:hidden;
}
#chat-head{
  display:flex;align-items:center;gap:10px;
  padding:12px 16px;background:rgba(0,0,0,.35);
  border-bottom:1px solid var(--line);
}
#chat-head h3{margin:0;font-size:16px;color:var(--t-primary)}
#chat-body{flex:1;display:flex;min-height:0}
#chat-channels-col{
  width:230px;min-width:200px;flex-shrink:0;
  border-right:1px solid rgba(255,255,255,.10);
  display:flex;flex-direction:column;overflow:hidden;
}
.chat-col-head{
  padding:10px 14px;font-size:11px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--t-secondary);
  border-bottom:1px solid rgba(255,255,255,.06);
}
.chat-col-sub{
  padding:10px 14px 4px;font-size:10px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--t-secondary);opacity:.75;
}
.chat-chan-add{
  background:rgba(255,255,255,.10);color:var(--t-primary);
  border:none;border-radius:4px;padding:0 8px;font-size:14px;line-height:20px;
  cursor:pointer;
}
.chat-chan-add:hover{background:rgba(255,255,255,.20)}
.chat-kontakt-row{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:8px 12px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);border-radius:6px;
  color:var(--t-primary);cursor:pointer;font-size:13px;
  width:100%;text-align:left;
}
.chat-kontakt-row:hover{background:rgba(68,114,196,.18);border-color:#8BA9FF}
.chat-kontakt-name{font-weight:bold}
.chat-kontakt-rolle{font-size:11px;color:var(--t-secondary);text-transform:uppercase;letter-spacing:.5px}
#chat-channels-list{flex:1;overflow:auto;padding:6px 0}
.chat-chan{
  display:flex;align-items:center;gap:8px;
  padding:8px 14px;font-size:13px;cursor:pointer;
  border-left:3px solid transparent;transition:background .1s;
}
.chat-chan:hover{background:rgba(255,255,255,.05)}
.chat-chan.is-active{
  background:rgba(68,114,196,.20);
  border-left-color:#8BA9FF;color:#fff;
}
.chat-chan-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-chan-badge{
  background:#EF6C00;color:#fff;font-size:10px;font-weight:bold;
  padding:1px 6px;border-radius:10px;min-width:18px;text-align:center;
}
#chat-msg-col{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
#chat-msg-list{
  flex:1;overflow-y:auto;padding:12px 16px;
  display:flex;flex-direction:column;gap:10px;
}
.chat-msg{
  max-width:70%;align-self:flex-start;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.08);
  border-radius:10px 10px 10px 2px;
  padding:6px 10px;
  font-size:13px;line-height:1.4;
  word-wrap:break-word;
}
.chat-msg.chat-msg-mine{
  align-self:flex-end;
  background:rgba(68,114,196,.22);
  border-color:rgba(139,169,255,.25);
  border-radius:10px 10px 2px 10px;
}
.chat-msg-head{
  display:flex;align-items:baseline;gap:8px;margin-bottom:2px;
  font-size:11px;
}
.chat-msg-name{font-weight:bold;color:#8BA9FF}
.chat-msg.chat-msg-mine .chat-msg-name{color:#A5D6A7}
.chat-msg-zeit{color:var(--t-secondary);font-size:10px;opacity:.7}
.chat-msg-text{color:var(--t-primary)}
/* Lesebestaetigung: 1 Haken = zugestellt, 2 Haken grau = einer gelesen, 2 Haken blau = alle gelesen */
.chat-haken{font-size:11px;margin-left:2px}
.chat-haken-none{color:var(--t-secondary);opacity:.5}
.chat-haken-some{color:var(--t-secondary);opacity:.85}
.chat-haken-all {color:#8BA9FF;font-weight:bold}
#chat-input-wrap{
  border-top:1px solid rgba(255,255,255,.10);
  padding:10px 14px;display:flex;gap:8px;align-items:flex-end;
  background:rgba(0,0,0,.25);
}
#chat-input{
  flex:1;background:rgba(0,0,0,.30);
  border:1px solid rgba(255,255,255,.12);border-radius:8px;
  color:var(--t-primary);padding:8px 10px;resize:vertical;
  font-family:inherit;font-size:13px;min-height:40px;max-height:140px;
}
#chat-input:focus{outline:none;border-color:#8BA9FF}
#chat-badge{
  background:#EF6C00;color:#fff;font-size:10px;font-weight:bold;
  padding:1px 6px;border-radius:10px;margin-left:4px;
}
/* Inline-Badges in Nachrichten (#L, #H, @mentions, URLs) */
.chat-ref{
  display:inline-block;padding:1px 6px;border-radius:4px;font-size:12px;
  font-weight:600;cursor:pointer;text-decoration:none;
  transition:filter .1s;
}
.chat-ref:hover{filter:brightness(1.18)}
.chat-ref.ref-lead  {background:rgba(68,114,196,.30);color:#BBD0FF}
.chat-ref.ref-lead::before  {content:"\1F4CB\00A0";opacity:.7;font-weight:normal}
.chat-ref.ref-halle {background:rgba(239,108,0,.30);color:#FFCC80}
.chat-ref.ref-halle::before {content:"\1F3E2\00A0";opacity:.7;font-weight:normal}
.chat-ref.ref-mention{background:rgba(255,193,7,.22);color:#FFD54F;cursor:default}
.chat-ref.ref-mention-self{background:rgba(255,193,7,.55);color:#fff}
.chat-ref.ref-url   {background:transparent;color:#8BA9FF;text-decoration:underline;padding:0;font-weight:normal}
.chat-ref.ref-url::before{content:none}
/* Unresolved: Ref existiert nicht (mehr) in der DB -> visuell als Dashed-Outline markiert */
.chat-ref.ref-unresolved{background:transparent;border:1px dashed currentColor;opacity:.72;font-weight:500}
.ref-lead-archiv, .ref-halle-inaktiv{font-size:10px;opacity:.7;font-weight:normal;margin-left:2px;pointer-events:none}
/* Pseudo-Icons sind rein dekorativ - Klicks immer an die Pill weiterreichen */
.chat-ref::before{pointer-events:none}

/* ============== v8.7: Edit/Delete/Reaktionen/Suche/Autocomplete ============== */
/* shell braucht position:relative fuer Absolute-Positionierung von Picker/Autocomplete */
.chat-shell{position:relative}
#chat-input-wrap{position:relative}

/* Hover-Actions auf Nachricht */
.chat-msg{position:relative}
.chat-msg-actions{
  position:absolute;top:-10px;right:8px;display:none;gap:2px;
  background:rgba(20,24,36,.95);border:1px solid rgba(255,255,255,.14);
  border-radius:14px;padding:2px 4px;box-shadow:0 4px 12px rgba(0,0,0,.4);z-index:2;
}
.chat-msg.chat-msg-mine .chat-msg-actions{right:auto;left:8px}
.chat-msg:hover .chat-msg-actions{display:flex}
.chat-msg-act{
  background:transparent;border:none;color:var(--t-primary);
  cursor:pointer;font-size:13px;padding:3px 6px;border-radius:10px;line-height:1;
}
.chat-msg-act:hover{background:rgba(255,255,255,.12)}
.chat-msg-edited{font-size:10px;color:var(--t-secondary);opacity:.7;font-style:italic;margin-left:2px}

/* Tombstone (geloeschte Nachricht) */
.chat-msg-deleted{opacity:.55}
.chat-msg-deleted .chat-msg-actions{display:none!important}
.chat-msg-tombstone{font-style:italic;color:var(--t-secondary)}

/* Highlight beim Sprung aus Suche */
.chat-msg-highlight{animation:chatFlash 2.2s ease-out}
@keyframes chatFlash{
  0%  { box-shadow:0 0 0 3px rgba(255,193,7,.80); background:rgba(255,193,7,.20) }
  60% { box-shadow:0 0 0 2px rgba(255,193,7,.50) }
  100%{ box-shadow:0 0 0 0 rgba(255,193,7,0) }
}

/* Edit-Form inline */
.chat-edit-form{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.chat-edit-textarea{
  width:100%;min-height:54px;resize:vertical;
  background:rgba(0,0,0,.30);color:var(--t-primary);
  border:1px solid #8BA9FF;border-radius:6px;padding:6px 8px;
  font-family:inherit;font-size:13px;
}
.chat-edit-actions{display:flex;gap:6px;justify-content:flex-end}
.chat-edit-actions button{padding:4px 10px;font-size:12px}

/* Reaktionen unter Nachricht */
.chat-reakt-leiste{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.chat-reakt-chip{
  display:inline-flex;align-items:center;gap:3px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
  color:var(--t-primary);border-radius:12px;padding:1px 8px;
  font-size:12px;cursor:pointer;transition:background .1s;
}
.chat-reakt-chip:hover{background:rgba(255,255,255,.14)}
.chat-reakt-chip.is-own{background:rgba(68,114,196,.30);border-color:#8BA9FF;color:#fff}
.chat-reakt-emoji{font-size:13px;line-height:1}
.chat-reakt-count{font-weight:600;font-size:11px}

/* Emoji-Picker-Popup */
#chat-emoji-picker{
  display:none;position:absolute;z-index:10;
  background:rgba(20,24,36,.98);border:1px solid rgba(255,255,255,.18);
  border-radius:10px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.55);
  gap:2px;flex-wrap:wrap;max-width:260px;
}
#chat-emoji-picker.open{display:flex}
.chat-emoji-btn{
  background:transparent;border:none;cursor:pointer;
  font-size:22px;line-height:1;padding:4px 6px;border-radius:6px;
}
.chat-emoji-btn:hover{background:rgba(255,255,255,.12)}

/* Autocomplete-Popup ueber dem Input */
#chat-autocomplete{
  display:none;position:absolute;bottom:calc(100% + 4px);left:14px;right:14px;
  max-height:260px;overflow-y:auto;z-index:10;
  background:rgba(20,24,36,.98);border:1px solid rgba(255,255,255,.18);
  border-radius:8px;box-shadow:0 -4px 18px rgba(0,0,0,.45);
}
#chat-autocomplete.open{display:block}
.chat-ac-item{
  padding:6px 10px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.05);
}
.chat-ac-item:last-child{border-bottom:none}
.chat-ac-item.is-active, .chat-ac-item:hover{background:rgba(68,114,196,.22)}
.chat-ac-label{font-size:13px;color:var(--t-primary)}
.chat-ac-sub{font-size:11px;color:var(--t-secondary);margin-top:1px}

/* Suchleiste im Header */
#chat-search-wrap input#chat-search-input{
  background:rgba(0,0,0,.30);border:1px solid rgba(255,255,255,.12);
  color:var(--t-primary);border-radius:6px;padding:5px 10px;
  font-size:12px;width:240px;font-family:inherit;
}
#chat-search-wrap input#chat-search-input:focus{outline:none;border-color:#8BA9FF}
#chat-search-results{
  display:none;position:absolute;top:calc(100% + 6px);left:0;width:420px;
  max-height:50vh;overflow-y:auto;z-index:12;
  background:rgba(20,24,36,.98);border:1px solid rgba(255,255,255,.18);
  border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.55);
}
#chat-search-results.open{display:block}
.chat-suche-item{
  padding:8px 12px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.06);
}
.chat-suche-item:last-child{border-bottom:none}
.chat-suche-item:hover{background:rgba(68,114,196,.18)}
.chat-suche-meta{font-size:10.5px;color:var(--t-secondary);margin-bottom:2px;
  text-transform:uppercase;letter-spacing:.4px}
.chat-suche-snippet{font-size:12.5px;color:var(--t-primary);line-height:1.35}
.chat-suche-snippet mark{background:rgba(255,193,7,.55);color:#fff;padding:0 2px;border-radius:2px}
.chat-suche-hinweis{padding:10px 12px;font-size:12px;color:var(--t-secondary);font-style:italic}

/* ======================================================================
   Lieferschein-Feature (Welle 2, 2026-04-24)
   ====================================================================== */
/* Lieferschein-Badge in der s-badges-Reihe (klickbar, oeffnet PDF) */
.slot-card{position:relative}
.slot-card .badge.ls-badge{
  background:rgba(56,139,253,.16);
  color:#79b8ff;
  border:1px solid rgba(56,139,253,.45);
  cursor:pointer;font-weight:600;
  padding:3px 9px;
  transition:background .12s,transform .12s,box-shadow .12s;
}
.slot-card .badge.ls-badge:hover{
  background:rgba(56,139,253,.32);
  box-shadow:0 0 0 2px rgba(56,139,253,.25);
  transform:translateY(-1px);
}
:root[data-theme="light"] .slot-card .badge.ls-badge{
  background:rgba(9,105,218,.10);color:#0969da;border-color:rgba(9,105,218,.4);
}
:root[data-theme="light"] .slot-card .badge.ls-badge:hover{
  background:rgba(9,105,218,.22);
}
/* Monteur-Modus: Badge etwas groesser fuer bessere Touch-Bedienung */
body.monteur-mode .slot-card .badge.ls-badge{
  font-size:12px;padding:4px 10px;
}

/* Mini-Popover fuer Lieferschein-Aktionen (Anzeigen / Herunterladen) */
.ls-action-pop{
  position:fixed;z-index:9999;
  background:var(--surface-2,#161b22);
  border:1px solid var(--line,#30363d);
  border-radius:8px;
  box-shadow:0 6px 24px rgba(0,0,0,.35);
  padding:4px;
  min-width:200px;
  display:flex;flex-direction:column;gap:2px;
  animation:lsPopIn .12s ease-out;
}
@keyframes lsPopIn{
  from{opacity:0;transform:translateY(-4px)}
  to{opacity:1;transform:translateY(0)}
}
.ls-action-pop .ls-pop-btn{
  background:transparent;border:none;color:var(--t-primary,#c9d1d9);
  text-align:left;padding:8px 12px;border-radius:5px;
  font-size:13px;cursor:pointer;
  display:flex;align-items:center;gap:8px;
  transition:background .1s;
}
.ls-action-pop .ls-pop-btn:hover{
  background:rgba(56,139,253,.2);
}
.ls-action-pop .ls-pop-btn:focus{
  outline:2px solid rgba(56,139,253,.5);outline-offset:-2px;
}
:root[data-theme="light"] .ls-action-pop{
  background:#fff;border-color:#d0d7de;
  box-shadow:0 6px 24px rgba(0,0,0,.18);
}
:root[data-theme="light"] .ls-action-pop .ls-pop-btn{
  color:#1f2328;
}
:root[data-theme="light"] .ls-action-pop .ls-pop-btn:hover{
  background:rgba(9,105,218,.12);
}
/* Touch: Buttons etwas groesser */
@media (max-width:820px){
  .ls-action-pop .ls-pop-btn{padding:11px 14px;font-size:14px}
  .ls-action-pop{min-width:220px}
}

/* PDF-Viewer-Modal (Vollbild mit iframe) */
.ls-viewer-overlay{
  position:fixed;inset:0;z-index:10000;
  background:rgba(0,0,0,.85);
  display:flex;flex-direction:column;
  padding:20px;
  animation:lsViewerIn .15s ease-out;
}
@keyframes lsViewerIn{
  from{opacity:0}
  to{opacity:1}
}
.ls-viewer-bar{
  display:flex;align-items:center;gap:8px;
  background:var(--surface-2,#161b22);
  border:1px solid var(--line,#30363d);
  border-radius:8px 8px 0 0;
  padding:8px 14px;
  color:var(--t-primary,#c9d1d9);
}
.ls-viewer-title{font-weight:600;font-size:14px;flex:0 0 auto;margin-right:auto}
.ls-viewer-btn{
  background:rgba(56,139,253,.16);
  color:#79b8ff;
  border:1px solid rgba(56,139,253,.45);
  padding:6px 12px;border-radius:6px;
  font-size:13px;cursor:pointer;
  transition:background .12s;
}
.ls-viewer-btn:hover{background:rgba(56,139,253,.32)}
.ls-viewer-close{
  background:transparent;border:none;color:var(--t-secondary,#8b949e);
  font-size:20px;cursor:pointer;padding:4px 10px;border-radius:6px;
  transition:background .12s,color .12s;
}
.ls-viewer-close:hover{background:rgba(248,81,73,.18);color:#f85149}
.ls-viewer-frame{
  flex:1 1 auto;
  width:100%;
  border:1px solid var(--line,#30363d);
  border-top:none;
  border-radius:0 0 8px 8px;
  background:#fff;
}
:root[data-theme="light"] .ls-viewer-overlay{background:rgba(0,0,0,.65)}
:root[data-theme="light"] .ls-viewer-bar{background:#fff;border-color:#d0d7de;color:#1f2328}
:root[data-theme="light"] .ls-viewer-btn{background:rgba(9,105,218,.10);color:#0969da;border-color:rgba(9,105,218,.4)}
:root[data-theme="light"] .ls-viewer-btn:hover{background:rgba(9,105,218,.22)}
/* Mobile: weniger Padding, Bar kompakter */
@media (max-width:820px){
  .ls-viewer-overlay{padding:8px}
  .ls-viewer-bar{padding:6px 10px;flex-wrap:wrap}
  .ls-viewer-title{font-size:13px;width:100%;margin-bottom:4px}
  .ls-viewer-btn{font-size:12px;padding:5px 10px}
  .ls-viewer-tab{display:none}  /* Auf Touch oft eh nicht hilfreich */
}

/* Upload-Drop-Zone */
.lieferschein-upload-zone{
  border:2px dashed rgba(255,255,255,.22);border-radius:8px;
  padding:18px 14px;text-align:center;cursor:pointer;
  background:rgba(255,255,255,.02);transition:all .15s ease;
  font-size:12px;color:var(--t-secondary);
}
.lieferschein-upload-zone:hover,
.lieferschein-upload-zone.dragover{
  border-color:#8BA9FF;background:rgba(68,114,196,.10);color:var(--t-primary);
}
.lieferschein-upload-zone .ls-up-big{font-size:22px;margin-bottom:4px;display:block}
.lieferschein-upload-zone input[type=file]{display:none}
:root[data-theme="light"] .lieferschein-upload-zone{
  border-color:#cfd6de;background:#f7f9fc;color:#556;
}
:root[data-theme="light"] .lieferschein-upload-zone:hover,
:root[data-theme="light"] .lieferschein-upload-zone.dragover{
  border-color:#2563eb;background:#eaf1ff;color:#222;
}

/* Lieferschein-Info-Block (wenn vorhanden) */
.lieferschein-info{
  border:1px solid var(--line);border-radius:8px;
  background:rgba(255,255,255,.03);padding:10px 12px;
  font-size:12px;display:flex;flex-direction:column;gap:4px;
}
.lieferschein-info .li-name{font-weight:600;color:var(--t-primary);word-break:break-all}
.lieferschein-info .li-meta{color:var(--t-secondary);font-size:11px}
.lieferschein-info .li-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
/* v9.5.1: Touch-Targets >= 40px Hoehe (vorher ~24px), brauchbar fuer Tablet-Bedienung */
.lieferschein-info .li-actions button{
  padding:10px 14px;font-size:13px;border:none;border-radius:5px;cursor:pointer;
  background:rgba(255,255,255,.06);color:var(--t-primary);font-weight:600;
  min-height:40px;touch-action:manipulation;
}
.lieferschein-info .li-actions button:hover{background:rgba(255,255,255,.12)}
.lieferschein-info .li-actions button.li-del{background:rgba(200,40,40,.18);color:#ff8a8a}
.lieferschein-info .li-actions button.li-del:hover{background:rgba(200,40,40,.28)}
.lieferschein-info .li-actions button:disabled{opacity:.5;cursor:wait}

/* Wochen-Liefer-Modal: Tabelle */
.lieferschein-liste{
  width:100%;border-collapse:collapse;font-size:12px;margin-top:8px;
}
.lieferschein-liste th,.lieferschein-liste td{
  text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);
}
.lieferschein-liste th{
  font-weight:600;color:var(--t-secondary);font-size:11px;
  text-transform:uppercase;letter-spacing:.3px;
}
.lieferschein-liste tbody tr:hover{background:rgba(255,255,255,.03)}
.lieferschein-liste .ll-empty{color:var(--t-secondary);font-style:italic;text-align:center;padding:18px}

/* KI-Summary Block */
.ki-summary-loading{
  display:flex;align-items:center;gap:10px;padding:14px;
  color:var(--t-secondary);font-size:12px;font-style:italic;
}
.ki-summary-loading::before{
  content:"";display:inline-block;width:14px;height:14px;
  border:2px solid rgba(255,255,255,.18);border-top-color:#8BA9FF;
  border-radius:50%;animation:wp-spin 1s linear infinite;
}
.ki-summary-content{
  background:rgba(255,255,255,.04);border:1px solid var(--line);
  border-radius:8px;padding:14px 16px;margin-top:10px;
  font-size:13px;line-height:1.55;color:var(--t-primary);
  /* v9.4 Bug 8: white-space:pre-wrap entfernt - Markdown-Renderer erzeugt <p>/<ul>/<br> selbst, pre-wrap verdoppelte sonst die Abstaende */
  word-wrap:break-word;
  font-family:inherit;max-height:50vh;overflow-y:auto;
}
.ki-summary-content h1,.ki-summary-content h2,.ki-summary-content h3{
  margin:10px 0 6px;color:var(--t-primary);
}
.ki-summary-content h1{font-size:15px}
.ki-summary-content h2{font-size:14px}
.ki-summary-content h3{font-size:13px}
.ki-summary-content ul{margin:4px 0 8px 18px;padding:0}
.ki-summary-content li{margin-bottom:3px}
.ki-summary-content strong{color:#ffd580}
/* v9.4 Bug 9: Markdown-Tabellen im KI-Summary */
.ki-summary-content .md-table{
  width:100%;border-collapse:collapse;margin:8px 0;font-size:12px;
}
.ki-summary-content .md-table th,
.ki-summary-content .md-table td{
  border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top;
}
.ki-summary-content .md-table th{
  background:rgba(255,255,255,.06);font-weight:600;color:var(--t-primary);
}
.ki-summary-content .md-table tbody tr:nth-child(even) td{
  background:rgba(255,255,255,.02);
}
.ki-summary-cache-info{
  font-size:10.5px;color:var(--t-secondary);margin:6px 0;font-style:italic;
}

/* Trupp-Header Lieferschein-Button */
.trupp-ls-btn{
  padding:3px 8px;font-size:10.5px;border:1px solid var(--line);
  background:rgba(255,255,255,.04);color:var(--t-primary);
  border-radius:4px;cursor:pointer;margin-left:4px;font-weight:600;
}
.trupp-ls-btn:hover{background:rgba(68,114,196,.18);border-color:#8BA9FF}

/* Pipeline-Dialog Lieferschein-Tab-Body */
.lead-ls-wrapper{padding:4px 0}
.lead-ls-wrapper .lead-ls-info-top{
  font-size:11px;color:var(--t-secondary);margin-bottom:8px;
}
.lead-ls-wrapper select.lead-ls-slot-sel{
  width:100%;padding:6px 8px;font-size:12px;margin-bottom:10px;
}


/* =====================================================================
   v9.6: Mitarbeiter-Admin-UI + Bug-/Feedback-Report
   ===================================================================== */

/* --- Status-Badges in der Mitarbeiter-Liste --- */
.url-mitem-badge{
  font-size:9px;font-weight:bold;padding:1px 5px;border-radius:8px;margin:0 3px;
  white-space:nowrap;line-height:1.4;letter-spacing:.2px;
}
.url-badge-pin{background:#C62828;color:#fff}
.url-badge-lock{background:#E65100;color:#fff;font-size:11px;padding:0 3px}
.url-badge-sess{background:#1976D2;color:#fff}

/* --- Admin-Sektion im Detail-Bereich --- */
.url-admin-section{
  margin-top:14px;padding:12px;background:rgba(198,40,40,.04);
  border:1px solid rgba(198,40,40,.18);border-radius:6px;
}
.url-admin-summary{
  cursor:pointer;font-weight:600;font-size:13px;padding:4px 0;color:var(--t-primary);
  user-select:none;
}
.url-admin-summary:hover{color:var(--accent)}
.url-admin-attn{color:#C62828;font-size:11px;margin-left:6px}
.url-admin-body{padding-top:10px}
.url-admin-status{
  display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;
  font-size:12px;padding:8px 10px;background:var(--gh-card);
  color:var(--t-primary);border-radius:4px;
}
.url-admin-status label{font-weight:600;color:var(--t-secondary);margin-right:6px}
.url-status-ok{color:#3FB950}
.url-status-bad{color:#F85149;font-weight:600}
.url-status-warn{color:#D29922;font-weight:600}
.url-admin-notiz{margin-top:12px}
.url-admin-notiz label{display:block;font-size:11px;font-weight:600;margin-bottom:4px;color:var(--t-secondary)}
.url-admin-notiz textarea{
  width:100%;min-height:60px;padding:6px 8px;font-size:12px;
  border:1px solid var(--gh-border, var(--line));border-radius:4px;resize:vertical;
  background:var(--gh-bg, transparent);color:var(--t-primary);
}

/* --- Notfall-Bar unten im Mitarbeiter-Overlay (nur Admin sichtbar) --- */
.url-notfall-bar{display:none;padding:10px 14px;border-top:1px solid var(--line);background:rgba(198,40,40,.04);text-align:right}
body.role-admin .url-notfall-bar{display:block}

/* --- Floating Bug-Report-Button (FAB) ---
   Position: links neben dem KI-Fab (#ki-fab sitzt bei right:22px width:54px,
   nimmt also Platz bis right:76. Feedback-Fab bekommt right:90px = 12px Abstand).
   Im Monteur-Mode ist #ki-fab versteckt - Feedback-Fab rutscht dann auf right:18px
   und bottom:80px (wegen Logout-Button im Monteur-Mode). */
.feedback-fab{
  position:fixed;bottom:22px;right:90px;width:48px;height:48px;
  border-radius:50%;background:#1976D2;color:#fff;border:none;cursor:pointer;
  font-size:22px;line-height:48px;text-align:center;padding:0;
  box-shadow:0 3px 10px rgba(0,0,0,.25);z-index:900;
  transition:transform .15s,background .15s;
}
.feedback-fab:hover{background:#1565C0;transform:scale(1.07)}
/* Im Monteur-Mode (KI-Fab versteckt): rechts unten, hoeher wegen Logout-Button */
body.monteur-mode .feedback-fab{bottom:80px;right:18px}

/* --- Feedback-Badge im Mehr-Menue --- */
.hmi-badge{
  display:inline-block;background:#C62828;color:#fff;font-size:10px;font-weight:bold;
  border-radius:10px;padding:1px 7px;margin-left:6px;line-height:1.4;
}

/* --- Feedback-Posteingang Liste --- */
.fb-item{
  border:1px solid var(--gh-border, var(--line));border-radius:6px;padding:12px;margin-bottom:10px;
  background:var(--gh-card);color:var(--t-primary);
}
.fb-item-head{
  display:flex;align-items:center;gap:10px;margin-bottom:6px;
}
.fb-typ{font-size:18px}
.fb-titel{font-weight:600;flex:1;font-size:14px;color:var(--t-primary)}
.fb-status{
  font-size:10px;font-weight:bold;padding:2px 8px;border-radius:10px;
  letter-spacing:.3px;text-transform:uppercase;
}
.fb-st-offen{background:#C62828;color:#fff}
.fb-st-bearb{background:#E65100;color:#fff}
.fb-st-fertig{background:#2E7D32;color:#fff}
.fb-st-abgel{background:#888;color:#fff}
.fb-meta{font-size:11px;color:var(--t-secondary);margin-bottom:8px}
.fb-meta code{background:var(--gh-panel);color:var(--t-primary);padding:1px 5px;border-radius:3px;font-size:10px}
.fb-beschreibung{
  font-size:12px;line-height:1.5;padding:8px 10px;background:var(--gh-panel);
  color:var(--t-primary);border-radius:4px;margin-bottom:8px;white-space:pre-wrap;
}
.fb-bearbeiter{margin:8px 0}
.fb-bearbeiter label{display:block;font-size:11px;color:var(--t-secondary);margin-bottom:3px}
.fb-notiz-input{
  width:100%;min-height:50px;padding:6px 8px;font-size:11px;
  border:1px solid var(--gh-border, var(--line));border-radius:4px;resize:vertical;
  background:var(--gh-bg, transparent);color:var(--t-primary);
}
.fb-actions{
  display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;padding-top:8px;
  border-top:1px dashed var(--line);
}

/* --- Floating-Button in Monteur-Ansicht trotz monteur-mode versteckter Buttons sichtbar lassen --- */
body.monteur-mode .feedback-fab{display:block}

/* =====================================================================
   v9.6: System-Status-Dashboard
   ===================================================================== */
.sys-cards{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;
}
.sys-card{
  border:1px solid var(--gh-border, var(--line));border-radius:8px;
  background:var(--gh-card);color:var(--t-primary);
  display:flex;flex-direction:column;
}
.sys-card-head{
  padding:10px 14px;font-weight:600;font-size:13px;
  border-bottom:1px solid var(--gh-border, var(--line));
  background:var(--gh-panel);color:var(--t-primary);
  display:flex;justify-content:space-between;align-items:center;
}
.sys-card-body{padding:12px 14px;font-size:12px;color:var(--t-primary)}
.sys-stat{
  display:flex;justify-content:space-between;padding:4px 0;
  border-bottom:1px dashed var(--line);
}
.sys-stat:last-child{border-bottom:none}
.sys-stat span:first-child{color:var(--t-secondary)}
.sys-stat b{color:var(--t-primary)}
.sys-warn-item{
  font-size:12px;padding:4px 0;line-height:1.5;color:var(--t-primary);
}
.sys-mini-table{
  width:100%;border-collapse:collapse;margin-top:6px;font-size:11px;
}
.sys-mini-table th{
  padding:4px 6px;border-bottom:1px solid var(--line);font-weight:600;color:var(--t-secondary);
}
.sys-mini-table td{
  padding:3px 6px;border-bottom:1px dotted var(--line);color:var(--t-primary);
}

/* =====================================================================
   v9.6: Audit-Log-Viewer
   ===================================================================== */
.auditlog-table{
  width:100%;border-collapse:collapse;font-size:12px;color:var(--t-primary);
}
.auditlog-table thead{
  position:sticky;top:0;background:var(--gh-panel);z-index:1;
  box-shadow:0 1px 0 var(--line);
}
.auditlog-table th{
  text-align:left;padding:8px 10px;font-weight:600;color:var(--t-secondary);
  border-bottom:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.3px;
}
.auditlog-table td{
  padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:top;
  color:var(--t-primary);
}
.auditlog-row{cursor:pointer;transition:background .1s}
.auditlog-row:hover{background:var(--gh-card-hover, rgba(88,166,255,.10))}
.auditlog-role{
  font-size:10px;font-weight:bold;padding:1px 6px;border-radius:8px;letter-spacing:.3px;
  text-transform:uppercase;
}
.auditlog-role-admin{background:#1976D2;color:#fff}
.auditlog-role-buero{background:#7B1FA2;color:#fff}
.auditlog-role-monteur{background:#2E7D32;color:#fff}
.auditlog-role-{background:#888;color:#fff}

/* =====================================================================
   v9.7 Mobile-Breakpoints (2026-04-30)
   Systematische Mobile-Anpassungen fuer Tablet (<=768px) und Smartphone
   (<=480px). Cascade-Strategie: Desktop-Layout bleibt unangetastet, diese
   Regeln ueberschreiben gezielt fuer kleine Screens.
   Verwandte Aenderung: DragDropTouch.js wird in HTML eingebunden, damit
   Drag-Drop auf Touch-Geraeten funktioniert.
   ===================================================================== */

/* === Tablet & kleinere Bildschirme === */
@media (max-width: 768px) {
  /* Body / Hauptcontainer: lesbare Mindestschrift */
  body { font-size: 14px; }

  /* iOS verhindert Auto-Zoom bei Input-Focus erst ab font-size>=16px */
  input[type="text"], input[type="email"], input[type="number"],
  input[type="password"], input[type="search"], input[type="tel"],
  input[type="date"], input[type="time"], select, textarea {
    font-size: 16px;
    max-width: 100%;
  }

  /* Header-Navigation wrappen, Buttons groesser */
  .header-actions, #header-actions {
    flex-wrap: wrap;
    gap: 4px;
    padding: 6px;
  }
  .header-actions button, #header-actions button {
    font-size: 12px;
    padding: 6px 10px;
    min-height: 38px;
  }

  /* Shells: Vollbild auf Mobile statt 92vw/86vh */
  .stammdaten-shell,
  .kalender-shell,
  .termine-shell {
    width: 100vw !important;
    height: 100vh !important;
    max-width: 100vw !important;
    max-height: 100vh !important;
    border-radius: 0;
  }

  /* Dialoge: praktisch Vollbild, weniger Padding */
  .dialog {
    max-width: 100vw !important;
    width: 100vw !important;
    max-height: 95vh;
    border-radius: 0;
    padding: 12px !important;
    box-sizing: border-box;
  }

  /* Sidebar / Tabs schmaler */
  #hallen-sidebar { width: min(180px, 35vw); }
  .sd-tabs { width: 140px; }
  .url-all-frozen { flex: 0 0 140px; }

  /* Tabellen: horizontal scrollbar machen */
  .sd-list-wrap, .auditlog-wrap, .table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .sd-table, .auditlog-table { font-size: 12px; }
  .sd-table th, .sd-table td,
  .auditlog-table th, .auditlog-table td { padding: 4px 6px; }

  /* Floater (Kalender-Hover, Toast-Stack) anpassen */
  #kal-hover-floater {
    width: clamp(260px, 90vw, 340px);
    bottom: 8px;
    right: 8px;
  }
  #toast-stack {
    bottom: 8px;
    right: 8px;
    left: 8px;
    max-width: calc(100vw - 16px);
  }

  /* Buttons mindestens 38px hoch (Touch-Target Naehe an HIG 44px) */
  button, .btn, input[type="button"], input[type="submit"] {
    min-height: 38px;
  }

  /* Flex-Forms wrappen */
  .field-row, .form-row, .filter-row { flex-wrap: wrap; }
}

/* === Smartphone hochkant === */
@media (max-width: 480px) {
  /* Header-Buttons noch kompakter */
  .header-actions button, #header-actions button {
    font-size: 11px;
    padding: 6px 8px;
    min-height: 40px; /* HIG-konform */
  }

  /* Hallen-Sidebar als Overlay (Toggle ueber JS-Klasse 'mobile-open') */
  #hallen-sidebar {
    position: fixed;
    left: 0; top: 0; bottom: 0;
    z-index: 100;
    transform: translateX(-100%);
    transition: transform .2s ease;
    background: var(--gh-panel, #1f2937);
    width: 80vw;
    max-width: 280px;
    box-shadow: 2px 0 12px rgba(0,0,0,.3);
  }
  #hallen-sidebar.mobile-open { transform: translateX(0); }

  /* sd-tabs als horizontale Tab-Leiste */
  .sd-tabs {
    width: 100%;
    flex-direction: row;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    border-right: 0;
    border-bottom: 1px solid var(--line, #2d3748);
  }
  .url-all-frozen { flex: 0 0 100px; }

  /* Dialog noch knapper */
  .dialog { padding: 8px !important; }

  /* Schriftgroessen Mindeststandard, sehr kleine Texte etwas hoeher */
  .small, .meta, .info-text, .hint { font-size: 12px !important; }

  /* Touch-Targets vergroessern */
  button, .btn { min-height: 40px; padding: 8px 12px; }

  /* Resize-Handles (Lieferschein-Editor etc.) daumen-tauglich */
  .lssign-handle, .resize-handle {
    width: 36px !important;
    height: 36px !important;
  }

  /* Side-by-side Felder vertikal stacken */
  .field-row > *, .form-row > *, .filter-row > * {
    flex: 1 1 100% !important;
    min-width: 0 !important;
  }
}

/* === Touch-Geraete (egal welche Groesse): Hover deaktivieren === */
@media (hover: none) and (pointer: coarse) {
  /* Hover-Background-Effekte deaktivieren */
  .auditlog-row:hover { background: inherit; }

  /* Drag-Elemente: touch-action verhindert Pinch/Pan-Konflikte mit Drag */
  [draggable="true"],
  .slot-fortsetzung,
  .draggable-avatar,
  .pipeline-card,
  .sd-row-handle {
    touch-action: none;
  }
}
