/* Disposition-Board — Sidebar-Layout + adaptives Raster, scoped auf .dispo */
.dispo{
  --cyan:#0099CC;--cyan-d:#0077A3;
  --d-ink:#0E1419;--d-ink2:#3A4750;--d-line:#D7DEE3;--d-line2:#EAEEF1;
  --d-paper:#F4F6F8;--d-white:#FFFFFF;--d-rust:#C5503B;
  --dw:44px;--label:200px;--barh:28px;
  --d-shadow:0 1px 0 rgba(14,20,25,.04),0 2px 8px rgba(14,20,25,.06);
  color:var(--d-ink);--fs:1;font-size:calc(12px * var(--fs));
}
.dispo *{box-sizing:border-box}
.dispo-empty{padding:28px 16px;color:var(--d-ink2);font-size:13px;text-align:center}

/* ---- Layout: linke Sidebar + Board ---- */
.dispo-main{display:grid;grid-template-columns:200px minmax(0,1fr);gap:14px;align-items:start}
.dispo-boardwrap{min-width:0;position:relative}
.dispo-side{display:flex;flex-direction:column;gap:7px;position:sticky;top:8px}
@media(max-width:820px){
  .dispo-main{grid-template-columns:1fr}
  .dispo-side{position:static}
}

/* ---- Sidebar ein-/ausklappen (mehr Platz fürs Gantt-Board) ---- */
/* Collapse-Button im Steuerungs-Kopf; Reopen-Handle nur eingeklappt am Board-Rand */
.dispo .side-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:1px}
.dispo .side-head-t{font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:calc(10.5px * var(--fs));color:var(--d-ink2)}
.dispo .side-toggle{flex:none;width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--d-line);background:var(--d-white);color:var(--d-ink2);border-radius:7px;cursor:pointer;box-shadow:var(--d-shadow);font-size:14px;font-weight:700;line-height:1}
.dispo .side-toggle:hover{color:var(--cyan-d);border-color:var(--cyan)}
.dispo .side-reopen{display:none}
.dispo.side-collapsed .side-reopen{position:absolute;top:6px;left:6px;z-index:9;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--d-line);background:var(--d-white);color:var(--d-ink2);border-radius:7px;cursor:pointer;box-shadow:var(--d-shadow);font-size:14px;font-weight:700;line-height:1}
.dispo.side-collapsed .side-reopen:hover{color:var(--cyan-d);border-color:var(--cyan)}
.dispo.side-collapsed .dispo-side{display:none}
.dispo.side-collapsed .dispo-main{grid-template-columns:1fr}
/* Sektions-Trenner + sekundäre Darstellungs-Gruppe in der Sidebar */
.dispo .side-sep{height:1px;background:var(--d-line);margin:5px 2px;opacity:.7}
.dispo .side-grp.side-display{gap:5px}
.dispo .side-grp.side-display .lbl{opacity:.75}
.dispo .rowh{display:flex;align-items:center;gap:7px;padding:1px 2px}
.dispo .rowh-l{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:calc(9.5px * var(--fs));color:var(--d-ink2)}
.dispo .rowh input[type=range]{flex:1;min-width:0;accent-color:var(--cyan);height:16px;cursor:pointer}
.dispo .rowh-v{font-weight:700;font-size:calc(10px * var(--fs));color:var(--d-ink2);min-width:30px;text-align:right}
.dispo .resfilter{width:100%;border:1px solid var(--d-line);border-radius:8px;height:28px;padding:0 9px;font:inherit;font-size:calc(12px * var(--fs));color:var(--d-ink);background:var(--d-white);box-shadow:var(--d-shadow)}
.dispo .resfilter:focus{outline:none;border-color:var(--cyan)}
.dispo .resfilter::placeholder{color:var(--d-ink2);opacity:.7}
.dispo .util-head .resfilter{display:none;width:190px;height:26px;flex:none;margin-left:auto}
.dispo.util-open .util-head .resfilter{display:inline-block}

/* ---- Controls (in Sidebar gestapelt) ---- */
.dispo .ctl{background:var(--d-white);border:1px solid var(--d-line);border-radius:9px;box-shadow:var(--d-shadow);display:flex;align-items:center;padding:3px;width:100%}
.dispo .ctl button{border:1px solid var(--d-line);background:var(--d-line2);cursor:pointer;font-weight:700;font-size:calc(11px * var(--fs));text-transform:uppercase;letter-spacing:.04em;color:var(--d-ink2);padding:0 8px;height:25px;border-radius:6px;display:flex;align-items:center;justify-content:center;gap:5px}
.dispo .ctl button[aria-selected="true"],.dispo .ctl button.act{background:var(--d-ink);border-color:var(--d-ink);color:#fff}
/* Alle Passiv-Buttons leicht grau (aktiv unverändert); Hover nur im Passiv-Zustand */
.dispo .ctl button:not(.act):not([aria-selected="true"]):hover{border-color:var(--cyan);color:var(--cyan-d)}
.dispo .ctl.solo{justify-content:center;height:30px}
.dispo .ctl.solo .lbl{color:var(--d-ink)}
.dispo #d-weeks button,.dispo #d-view button,.dispo #d-res button{flex:1;padding:0 4px}
.dispo .wk button{width:30px;flex:none;padding:0;font-size:16px;color:var(--d-ink)}
.dispo .wk .label{flex:1;padding:0 8px;text-align:center}
.dispo .wk .kw{font-weight:700;color:var(--cyan-d);font-size:calc(13px * var(--fs))}
.dispo .wk .range{font-size:calc(10.5px * var(--fs));color:var(--d-ink2)}
.dispo .side-grp{display:flex;flex-direction:column;gap:4px}
.dispo .lbl{font-weight:700;font-size:calc(10.5px * var(--fs));text-transform:uppercase;letter-spacing:.06em;color:var(--d-ink2)}
.dispo .mode{display:flex;align-items:center;justify-content:center;gap:7px;font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;border:1px dashed var(--d-line);background:var(--d-white);height:36px;padding:0 12px;border-radius:9px;cursor:pointer;color:var(--d-ink2)}
.dispo .mode.on{border-style:solid;border-color:var(--d-rust);color:var(--d-rust);background:#FCEEEB}
.dispo .mode .dot{width:9px;height:9px;border-radius:2px;background:var(--d-rust);opacity:.4}.dispo .mode.on .dot{opacity:1}

/* ---- Palette (vertikal in Sidebar) ---- */
.dispo .palette{background:var(--d-white);border:1px solid var(--d-line);border-radius:11px;padding:10px;box-shadow:var(--d-shadow);display:flex;flex-direction:column;align-items:stretch;gap:6px;max-height:40vh;overflow:auto}
.dispo .palette .ttl{font-weight:700;text-transform:uppercase;letter-spacing:.07em;font-size:calc(10.5px * var(--fs));color:var(--d-ink2);margin-bottom:2px}
.dispo .palette .pal-empty{font-size:calc(12px * var(--fs));color:var(--d-ink2);font-style:italic}
.dispo .palette .pal-grp{display:flex;align-items:center;gap:6px;width:100%;border:none;background:none;cursor:pointer;padding:3px 0;margin-top:4px;font:inherit;font-weight:700;text-transform:uppercase;letter-spacing:.07em;font-size:calc(10.5px * var(--fs));color:var(--d-ink2);text-align:left}
.dispo .palette .pal-grp:first-child{margin-top:0}
.dispo .palette .pal-grp .cv{display:inline-block;transition:transform .12s;flex:none;font-size:10px}
.dispo .palette .pal-grp:not(.collapsed) .cv{transform:rotate(90deg)}
.dispo .palette .pal-grp .t{flex:1}
.dispo .palette .pal-grp .n{flex:none;font-weight:700;color:var(--d-ink2);background:var(--d-paper);border:1px solid var(--d-line);border-radius:9px;padding:0 6px;font-size:calc(9.5px * var(--fs))}
.dispo .chip{display:flex;align-items:center;gap:7px;padding:5px 9px;border-radius:7px;cursor:grab;font-weight:600;font-size:calc(12px * var(--fs));background:var(--d-paper);border:1px solid var(--d-line);user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dispo .chip:hover{box-shadow:var(--d-shadow)}
.dispo .chip .swatch{width:12px;height:12px;border-radius:3px;flex:none}

/* ---- Board ---- */
.dispo .board{background:var(--d-white);border:1px solid var(--d-line);border-radius:13px;box-shadow:var(--d-shadow);overflow:auto;max-height:78vh;position:relative}
.dispo .row{display:flex;border-bottom:1px solid var(--d-line2);width:max-content;min-width:100%}
/* Ressourcen-Zeilen ohne Trennlinie: der 1px-Border würde sonst den Abstand ZWISCHEN den Balken
   um 1px grösser machen als den Rand zum Gruppen-Rahmen (ungleicher unterer Rand). */
.dispo .row.k-person,.dispo .row.k-geraet,.dispo .row.k-vehicle{border-bottom:none}
.dispo .row.head{position:sticky;top:0;z-index:6}
.dispo .corner,.dispo .rl{width:var(--label);min-width:var(--label);position:sticky;left:0;background:var(--d-white);z-index:4;border-right:1px solid var(--d-line)}
.dispo .row:nth-child(even) .rl{background:#FBFCFD}
.dispo .corner{z-index:7;background:var(--d-ink)}
.dispo .kwband,.dispo .dayband{display:flex;background:var(--d-ink)}
.dispo .kwcell{height:19px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:calc(10.5px * var(--fs));letter-spacing:.04em;border-right:1px solid #29343d;overflow:hidden}
.dispo .dcell{width:var(--dw);min-width:var(--dw);height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;border-right:1px solid #29343d;overflow:hidden}
.dispo .dcell .wd{font-weight:700;font-size:calc(9.5px * var(--fs));text-transform:uppercase;letter-spacing:.06em;opacity:.8}
.dispo .dcell .dd{font-weight:700;font-size:calc(11.5px * var(--fs));margin-top:1px}
.dispo .dcell.today{background:var(--cyan-d)}.dispo .dcell.today .wd{opacity:1}
.dispo .dcell.we{background:#222d35}
.dispo .corner .c1{height:19px}
.dispo .corner .c2{height:32px;display:flex;align-items:center;padding-left:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:calc(11px * var(--fs));color:#fff}
.dispo .rl{padding:0 10px;display:flex;flex-direction:column;justify-content:center}
.dispo .rl .nm{font-weight:600;font-size:calc(12px * var(--fs));line-height:1.1}
.dispo .rl .fn{font-size:calc(10.5px * var(--fs));color:var(--d-ink2);margin-top:1px}
.dispo .rl .sw{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:6px;vertical-align:middle}
/* Swatch-Grösse nach Hierarchie: Objekt > Vorgang > Ressource */
.dispo .row.k-obj .rl .sw{width:14px;height:14px;border-radius:3px}
.dispo .row.k-vg .rl .sw{width:11px;height:11px}

.dispo .track{position:relative;flex:none;z-index:2}
.dispo .track .gline{position:absolute;top:0;bottom:0;width:1px;background:var(--d-line2)}
.dispo .track .gtoday{position:absolute;top:0;bottom:0;background:rgba(0,153,204,.05)}
.dispo .track .gwe{position:absolute;top:0;bottom:0;background:rgba(91,107,120,.05)}

.dispo .bar{position:absolute;height:var(--barh);border-radius:7px;color:#fff;font-size:calc(12px * var(--fs));font-weight:500;box-shadow:0 1px 3px rgba(0,0,0,.18);display:flex;align-items:center;padding:0 7px;cursor:grab;overflow:hidden;touch-action:none;user-select:none}
.dispo .bar:active{cursor:grabbing}
.dispo .bar .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.dispo .bar.nacht::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,20,30,.5),rgba(13,20,30,.8))}
.dispo .bar.nacht>*{position:relative;z-index:1}
.dispo .bar .shift{flex:none;display:flex;align-items:center;gap:3px;font-size:9.5px;font-weight:700;background:rgba(0,0,0,.2);padding:2px 5px;border-radius:4px;margin-left:5px;cursor:pointer;text-transform:uppercase}
.dispo .bar .shift.ro{cursor:default}
.dispo .bar .shift svg{width:10px;height:10px}
.dispo .bar .x{flex:none;width:15px;height:15px;border-radius:4px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;font-weight:700;margin-left:4px}
.dispo .bar .x:hover{background:rgba(255,255,255,.42)}
.dispo .bar .h{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:3}
.dispo .bar .h.l{left:0}.dispo .bar .h.r{right:0}
.dispo .bar .h::after{content:"";position:absolute;top:50%;transform:translateY(-50%);width:3px;height:12px;border-radius:2px;background:rgba(255,255,255,.6)}
.dispo .bar .h.l::after{left:2px}.dispo .bar .h.r::after{right:2px}
.dispo .bar.absenz{background:repeating-linear-gradient(45deg,#FBEDEA,#FBEDEA 6px,#F6DED9 6px,#F6DED9 12px)!important;color:var(--d-rust);border:1px solid #EEC9C1;box-shadow:none;font-weight:700;text-transform:uppercase;font-size:10.5px;letter-spacing:.06em}
.dispo .bar.absenz .x{background:rgba(197,80,59,.18);color:var(--d-rust)}

.dispo .trash{display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:8px 10px;border:2px dashed var(--d-line);border-radius:11px;color:var(--d-ink2);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:calc(11px * var(--fs));text-align:center}
.dispo .trash.over{border-color:var(--d-rust);color:var(--d-rust);background:#FCEEEB}
.dispo .stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:13px}
.dispo .stat{background:var(--d-white);border:1px solid var(--d-line);border-radius:10px;padding:10px 15px;box-shadow:var(--d-shadow);min-width:118px}
.dispo .stat .n{font-weight:700;font-size:21px;color:var(--cyan-d);line-height:1}
.dispo .stat .l{font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:var(--d-ink2);margin-top:5px}
.dispo .hint{font-size:calc(11.5px * var(--fs));color:var(--d-ink2);margin-top:13px;line-height:1.8}
.dispo .hint b{color:var(--cyan-d)}

/* Vorgang-anlegen-Overlay */
.dispo-ov{position:fixed;inset:0;z-index:3000;background:rgba(15,23,42,.4);display:flex;align-items:center;justify-content:center;padding:16px}
.dispo-ov-card{background:#fff;border-radius:14px;padding:20px 22px;width:min(460px,96vw);box-shadow:0 20px 60px rgba(15,23,42,.28);font:14px/1.5 system-ui,Segoe UI,Roboto,sans-serif}
.dispo-ov-card h3{margin:0 0 14px;font-size:16px}
.dispo-ov-l{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin-bottom:12px}
.dispo-ov-in{border:1px solid #dbe2ea;border-radius:8px;height:38px;padding:0 10px;font:inherit;font-weight:400;text-transform:none;letter-spacing:0;color:#0f172a}
.dispo-ov-row{display:flex;gap:12px}.dispo-ov-row .dispo-ov-l{flex:1}
.dispo-ov-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.dispo-ov-cancel{border:1px solid #dbe2ea;background:#fff;border-radius:8px;padding:8px 16px;cursor:pointer;font:inherit}
.dispo-ov-ok{border:0;background:#0099CC;color:#fff;border-radius:8px;padding:8px 18px;cursor:pointer;font:inherit;font-weight:600}

/* ---- Ebenen-Einrückung (vorgangszentriert) ---- */
.dispo .row.lvl1 .rl{padding-left:24px}
.dispo .row.lvl2 .rl{padding-left:40px}
.dispo .row.k-vg .rl,.dispo .row.k-obj .rl{background:#F0F4F7;font-weight:700}
/* Projekt-(Objekt-)Zeile: ganze Zeile leicht hinterlegt (Track transparent → Zeilen-Hintergrund scheint durch). */
.dispo .row.k-obj{background:#EAF0F4}
.dispo .row.k-obj .rl{background:#E1E8EE}
.dispo .row.k-vg .rl .nm,.dispo .row.k-obj .rl .nm{font-size:calc(13px * var(--fs));font-weight:600}
.dispo .row.k-vehicle .rl .nm{font-weight:600;color:var(--d-ink2)}
/* Gruppen-Kopfzeilen (Objekt-Ansicht, Gruppieren Sparte → Bauführer) */
.dispo .row.k-grp{background:#D7E3EA}
.dispo .row.k-grp .rl{background:#CBDAE3;font-weight:800}
.dispo .row.k-grp .rl .nm{font-size:calc(13px * var(--fs));font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--d-ink)}
.dispo .row.k-grpbf{background:#E7EEF2}
.dispo .row.k-grpbf .rl{background:#DCE6EC;font-weight:700}
.dispo .row.k-grpbf .rl .nm{font-size:calc(12.5px * var(--fs));font-weight:700;color:var(--d-ink2);padding-left:6px}

/* ---- Balken-Typen ---- */
.dispo .bar.t-ghost{background:transparent!important;border:2px solid var(--d-line);border-radius:8px;box-shadow:none;color:var(--d-ink2);opacity:.85;cursor:default;pointer-events:none;height:calc(var(--barh) - 2)}
.dispo .bar.t-vehicle.derived{background:repeating-linear-gradient(45deg,#EEF1F4,#EEF1F4 6px,#E3E8ED 6px,#E3E8ED 12px)!important;color:var(--d-ink2);border:1px solid #D2DAE0;box-shadow:none;cursor:default;height:calc(var(--barh) - 4);font-size:11px}
.dispo .bar.t-geraete{border:1px solid rgba(0,0,0,.12)}

/* ---- Badges ---- */
.dispo .bar .badge{flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:11px;margin-left:5px;line-height:1;cursor:default}
.dispo .bar .badge.hotel{filter:saturate(1.1)}
.dispo .bar .badge.warn{background:#FFE8C2;color:#8A5A00;border-radius:4px;padding:1px 4px;font-weight:700}
.dispo .bar.conflict{outline:2px solid #C0392B;outline-offset:-2px}
.dispo .bar.t-vehicle.derived.conflict{outline:2px solid #C0392B}

/* ---- Doppelbelegungs-Stat ---- */
.dispo .stat.warn{border-color:#E0892B;background:#FFF6EA}
.dispo .stat.warn .n{color:#B5651D}

/* ---- Hotel-Nächte-Band (unter dem Personal-Balken) ---- */
.dispo .track .hband{position:absolute;height:3px;border-radius:2px;box-shadow:0 0 0 1px rgba(255,255,255,.55);cursor:help;z-index:2}

/* ---- Fahrzeug umteilen/entkoppeln ---- */
.dispo .bar.t-vehicle.standalone{background:#7A8892!important;color:#fff;cursor:grab;height:var(--barh)}
.dispo .bar.t-vehicle.standalone:active{cursor:grabbing}
.dispo .bar .veh-edit{flex:none;margin-left:5px;cursor:pointer;font-weight:700;font-size:13px;opacity:.85}
.dispo .bar .veh-edit:hover{opacity:1}
.dispo .bar.t-vehicle.override{background:#5B6B78!important;color:#fff;border:1px solid #47535d;height:calc(var(--barh) - 2)}

.dispo .rl .sw.clickable{cursor:pointer;width:12px;height:12px;box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.dispo .rl .sw.clickable:hover{box-shadow:0 0 0 2px rgba(0,0,0,.35)}

/* eigener Vorgangs-Zeitraum (getönte Fläche innerhalb der umspannenden Klammer) */
.dispo .track .objbar{position:absolute;top:auto;bottom:2px;height:calc(var(--barh) - 4);border-radius:6px;display:flex;align-items:center;gap:6px;padding:0 6px;font-size:calc(10.5px * var(--fs));font-weight:700;overflow:hidden;white-space:nowrap;z-index:2;box-shadow:var(--d-shadow)}
.dispo .track .objbar .bf{background:rgba(255,255,255,.9);color:#0f172a;border-radius:5px;padding:1px 7px;overflow:hidden;text-overflow:ellipsis;max-width:55%}
.dispo .track .objbar .sum{background:rgba(255,255,255,.9);color:#0f172a;border-radius:5px;padding:1px 7px;font-weight:800;flex:none}
.dispo .track .vgself{position:absolute;height:calc(var(--barh) - 6px);border-radius:6px;opacity:.22;pointer-events:none;z-index:1}
.dispo .track .vgself.movable{pointer-events:auto;cursor:move;touch-action:none;top:2px!important;height:var(--barh);opacity:.32;border:1px solid rgba(0,0,0,.28);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.dispo .track .vgself.movable:hover{opacity:.5;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.dispo .track .vgself.movable.dragging{opacity:.6;z-index:6;box-shadow:0 2px 6px rgba(0,0,0,.28)}
.dispo .track .vgself .h{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;z-index:4;pointer-events:auto;border-radius:6px}
.dispo .track .vgself .h.l{left:0}.dispo .track .vgself .h.r{right:0}
.dispo .track .vgself .h:hover{background:rgba(0,0,0,.14)}
.dispo .track .vgself-lbl{position:absolute;top:5px;height:calc(var(--barh) - 6px);display:flex;align-items:center;gap:8px;font-size:calc(10.5px*var(--fs));font-weight:600;color:#0f172a;pointer-events:none;overflow:hidden;white-space:nowrap;z-index:2}
.dispo .track .vgself-lbl .s{display:inline-flex;align-items:center;gap:3px}
.dispo .track .vgself-lbl svg{width:11px;height:11px}
.dispo .track .vgself-lbl.nacht .s{color:var(--cyan-d)}
.dispo .track .vgself-lbl .ws{display:inline-flex;align-items:center;background:#E6F4FA;color:var(--cyan-d);border-radius:5px;padding:1px 6px;font-weight:700}
.dispo .track .vgself-lbl .ws::before{content:"\1F4CD";margin-right:3px;font-weight:400}
.dispo .track .vgself-lbl .ws.wh::before{content:"\1F3ED"}

/* ---- Hierarchie-Klammern (Overlay hinter den Balken) ---- */
.dispo .grp-layer{position:absolute;top:0;left:0;pointer-events:none;z-index:1}
.dispo .grpbox{position:absolute;border:2px solid;border-radius:12px;box-sizing:border-box;background:transparent}
.dispo .grpbox.ge{border-radius:10px;border-style:solid;opacity:.9}

.dispo .grpbox .bh{position:absolute;top:0;bottom:0;width:12px;pointer-events:auto;cursor:ew-resize}
.dispo .grpbox .bh.l{left:-6px}.dispo .grpbox .bh.r{right:-6px}
.dispo .grpbox .bh:hover{background:rgba(0,0,0,.06)}

/* ---- Monatsband in der Datumsleiste ---- */
.dispo .monthband{display:flex;background:var(--d-ink)}
.dispo .mcell{height:17px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:calc(10px * var(--fs));letter-spacing:.05em;border-right:1px solid #29343d;overflow:hidden;white-space:nowrap}
.dispo .corner .c0{height:17px}
.dispo .row.head{z-index:6}

/* ---- Titel 1-zeilig ---- */
.dispo.oneline .rl .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---- Titel-Umschalter im Kopf ---- */
.dispo .corner .c2{justify-content:space-between;padding-right:10px;gap:8px}
.dispo .corner .c2 .cl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dispo .wraptog{flex:none;cursor:pointer;display:inline-flex;align-items:center;color:#fff;opacity:.75}
.dispo .wraptog:hover{opacity:1}
.dispo .wraptog svg{width:16px;height:16px}

/* ---- Farbwähler-Palette (benannte Farben) ---- */
.dispo-ov .fc-palette{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}
.dispo-ov .fc-sw{width:28px;height:28px;border-radius:7px;border:1px solid rgba(0,0,0,.15);cursor:pointer;padding:0}
.dispo-ov .fc-sw:hover{outline:2px solid rgba(0,0,0,.35);outline-offset:1px}
.dispo-ov .fc-sw.sel{outline:2px solid #0E1419;outline-offset:1px}
.dispo-ov .pal-empty{font-size:12px;color:#64748b;font-style:italic}

/* ---- Ist-Band (Soll-Ist-Abgleich: rapportierte Tage auf dem Objekt) ---- */
.dispo .track .istband{position:absolute;height:3px;border-radius:2px;background:#2E9E5B;box-shadow:0 0 0 1px rgba(255,255,255,.55);z-index:3;pointer-events:none}

/* ---- Personen-Reihenfolge im Vorgang (▲▼) ---- */
/* WICHTIG: sticky (nicht relative), sonst scrollt die Titel-Spalte beim horizontalen
   Scroll weg. sticky ist ebenso Containing-Block für die absolut positionierten
   Kinder (.reorder / .vg-betrag / .vg-edit / .vg-del). */
.dispo .rl{position:sticky;left:0}
.dispo .reorder{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;flex-direction:column;gap:1px}
.dispo .row.k-person:hover .reorder{display:flex}
.dispo .reorder button{border:1px solid var(--d-line);background:var(--d-white);cursor:pointer;font-size:9px;line-height:1;width:18px;height:13px;border-radius:3px;color:var(--d-ink2);padding:0;display:flex;align-items:center;justify-content:center}
.dispo .reorder button:hover{background:var(--d-paper);color:var(--d-ink)}

/* ---- Feiertage ---- */
.dispo .dcell.fh{background:#7a4f12}
.dispo .dcell.fh .wd{opacity:1}
.dispo .track .gfh{position:absolute;top:0;bottom:0;background:rgba(224,137,43,.12)}

/* ---- Vorgang löschen ---- */
.dispo .vg-del{position:absolute;right:6px;top:8px;display:none;border:1px solid var(--d-line);background:var(--d-white);cursor:pointer;font-size:11px;line-height:1;width:22px;height:22px;border-radius:5px;padding:0;align-items:center;justify-content:center}
.dispo .row.k-vg:hover .vg-del{display:flex}
.dispo .vg-del:hover{background:#FCEEEB;border-color:var(--d-rust)}

/* ---- Spaltenbreiten-Griff (1. Spalte) ---- */
.dispo .colresize{position:absolute;top:0;right:-3px;width:8px;height:100%;cursor:ew-resize;z-index:8}
.dispo .colresize:hover{background:rgba(0,153,204,.35)}

/* ---- Vorgang Betrag/Bearbeiten ---- */
.dispo .vg-betrag{position:absolute;right:34px;top:8px;font-size:10.5px;font-weight:700;color:var(--cyan-d);background:#E6F4FA;border-radius:5px;padding:2px 6px;pointer-events:none;white-space:nowrap}
.dispo .vg-edit{position:absolute;right:6px;top:8px;display:none;border:1px solid var(--d-line);background:var(--d-white);cursor:pointer;font-size:11px;line-height:1;width:22px;height:22px;border-radius:5px;padding:0;align-items:center;justify-content:center}
.dispo .row.k-vg:hover .vg-edit{display:flex}
.dispo .vg-edit:hover{background:var(--d-paper)}
.dispo .row.k-vg:hover .vg-betrag{display:none}

/* ---- Collapse-Chevron (jede Hierarchie-Ebene) ---- */
.dispo .caret{display:inline-flex;width:14px;justify-content:center;align-items:center;vertical-align:middle;cursor:pointer;color:var(--d-ink2);font-size:10px;transition:transform .12s;transform:rotate(0deg);flex:none;user-select:none;margin-right:2px}
.dispo .caret.open{transform:rotate(90deg)}
.dispo .caret:hover{color:var(--cyan-d)}
.dispo .caret-sp{display:inline-block;width:16px;vertical-align:middle}

/* ---- Ressourcenarten ein-/ausblenden (Multi-Toggle) ---- */
.dispo .ctl.multi{flex-wrap:wrap}
.dispo .ctl.multi button{background:var(--d-line2);color:var(--d-ink2)}
.dispo .ctl.multi button.act{background:var(--cyan);border-color:var(--cyan);color:#fff}

/* ---- Hotel-Badge am Personal-Balken (prominenter) ---- */
.dispo .bar .badge.hotel{filter:saturate(1.1);background:rgba(255,255,255,.92);border-radius:5px;padding:0 4px;display:inline-flex;align-items:center;gap:2px;font-size:11px;line-height:1.5}
.dispo .bar .badge.hotel .bn{font-size:9px;font-weight:800;color:#2E86C1}
/* Hotel-Nächte-Band kräftiger */
.dispo .track .hband{height:5px;border-radius:3px}

/* ---- Auslastungs-Pane (2. Ebene, unterhalb des Boards) ---- */
.dispo .util{margin-top:13px;background:var(--d-white);border:1px solid var(--d-line);border-radius:12px;box-shadow:var(--d-shadow);overflow:hidden}
.dispo .util-head{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:calc(11px * var(--fs));color:var(--d-ink);user-select:none}
.dispo .util-head:hover{background:var(--d-paper)}
.dispo .util-head .ut-caret{display:inline-flex;width:14px;justify-content:center;color:var(--d-ink2);transition:transform .12s}
.dispo .util-head .ut-caret.open{transform:rotate(90deg)}
.dispo .util-head .ut-sub{margin-left:auto;font-weight:600;text-transform:none;letter-spacing:0;font-size:11px;color:var(--d-ink2)}
.dispo .util-body{padding:0 15px}
.dispo.util-open .util-body{border-top:1px solid var(--d-line2);padding:12px 15px 14px}
.dispo .ut-empty{color:var(--d-ink2);font-size:12px;padding:6px 0}
.dispo .ut-sec{margin-bottom:14px}
.dispo .ut-sec:last-child{margin-bottom:0}
.dispo .ut-sech{font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:11px;color:var(--d-ink2);margin:2px 0 6px;display:flex;align-items:center;gap:6px}
.dispo .ut-sech .ut-cnt{background:var(--d-paper);border:1px solid var(--d-line);border-radius:8px;padding:0 6px;font-size:10px;color:var(--d-ink)}
.dispo .ut-row{display:flex;align-items:center;gap:10px;padding:4px 4px;font-size:12px;border-bottom:1px solid var(--d-line2);border-radius:4px}
.dispo .ut-row.conf{background:#FFF6EA}
.dispo .ut-nm{flex:0 0 190px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dispo .ut-days{flex:0 0 46px;text-align:right;font-weight:700;color:var(--cyan-d)}
.dispo .ut-bar{flex:1;height:8px;background:var(--d-line2);border-radius:5px;overflow:hidden;min-width:60px}
.dispo .ut-bar>span{display:block;height:100%;background:var(--cyan);border-radius:5px}
.dispo .ut-tn{flex:0 0 auto;display:flex;gap:9px;color:var(--d-ink2);font-size:11px;font-weight:600}
.dispo .ut-tn i{font-style:normal}
.dispo .ut-gap{flex:none;font-size:10.5px;color:#B5651D;background:#FFF6EA;border:1px solid #F0D9B5;border-radius:6px;padding:1px 6px;font-weight:700}
.dispo .ut-warn{flex:none;color:#C0392B;font-weight:800}
.dispo .ut-free{font-size:11px;color:var(--d-ink2);font-style:italic;padding:6px 0 0}

/* ===== v0.6.59: 2. Pane = read-only Ressourcen-Board + Splitter + kompakte Stats ===== */
/* Oberes Board in der Höhe per Splitter steuerbar */
.dispo #d-board{max-height:var(--board-h,70vh)}
.dispo.util-open #d-board{max-height:var(--board-h,46vh)}
/* Splitter-Griff zwischen den Panes */
.dispo .dispo-split{display:none;height:8px;margin:1px 0;cursor:row-resize;align-items:center;justify-content:center}
.dispo.util-open .dispo-split{display:flex}
.dispo .dispo-split span{display:block;width:34px;height:3px;border-radius:2px;background:var(--d-line);transition:background .12s}
.dispo .dispo-split:hover span{background:var(--cyan)}
/* untere Pane: enthält jetzt ein eigenes Board */
.dispo.util-open .util-body{border-top:1px solid var(--d-line2);padding:0}
.dispo .util-body .board{box-shadow:none;border:0;border-left:0;border-right:0;border-bottom:0;border-radius:0 0 12px 12px;max-height:var(--util-h,46vh)}
/* Auslastungs-Restype-Umschalter im Kopf */
.dispo .util-head .ut-restype{margin-left:14px;box-shadow:none;display:none;width:auto;flex:none}
.dispo.util-open .util-head .ut-restype{display:flex}
.dispo .util-head .ut-restype button{height:24px;padding:0 10px;font-size:calc(11px * var(--fs))}
.dispo .util-head .ut-onlydisp{margin-left:8px;box-shadow:none;display:none;width:auto;flex:none}
.dispo.util-open .util-head .ut-onlydisp{display:flex}
.dispo .util-head .ut-onlydisp button{height:24px;padding:0 10px;font-size:calc(11px * var(--fs))}
/* read-only Balken (2. Pane): keine Bedien-Elemente, kein Grab-Cursor */
.dispo .bar.ro{cursor:default;box-shadow:0 1px 2px rgba(0,0,0,.14)}
.dispo .bar.ro .x,.dispo .bar.ro .shift,.dispo .bar.ro .veh-edit,.dispo .bar.ro .h{display:none}
/* Auslastungs-Pane (read-only) mit Resize: Griffe wieder einblenden. */
.dispo .bar.ro.rz .h{display:block}
/* kompakte Stats-Zeile statt vier grosser Kacheln */
.dispo .stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;align-items:center;padding:6px 12px;background:var(--d-white);border:1px solid var(--d-line);border-radius:9px;box-shadow:var(--d-shadow)}
.dispo .stats .stat{background:none;border:0;border-radius:0;padding:0;min-width:0;box-shadow:none;font-size:calc(12px * var(--fs));color:var(--d-ink2);display:inline-flex;align-items:center}
.dispo .stats .stat b{color:var(--cyan-d);font-size:calc(14px * var(--fs));font-weight:800;margin-right:4px}
.dispo .stats .stat.warn{color:#B5651D}
.dispo .stats .stat.warn b{color:#B5651D}

/* ===== Ressourcen-Zeile als Drag-Quelle (2. Pane → oberes Board) ===== */
.dispo .rl.drag-src{cursor:grab}
.dispo .rl.drag-src:active{cursor:grabbing}
.dispo .rl.drag-src:hover{background:#EFF7FB}

/* ===== Schrift-Umschalter: Normalschrift statt fett (Test) ===== */
.dispo.thin .rl .nm,
.dispo.thin .row.k-vg .rl .nm,
.dispo.thin .row.k-obj .rl .nm{font-weight:500}
.dispo.thin .bar,
.dispo.thin .bar .nm{font-weight:500}
.dispo.thin .chip,
.dispo.thin .ut-nm,
.dispo.thin .stats .stat{font-weight:500}
.dispo.thin .lbl,
.dispo.thin .ctl button,
.dispo.thin .kwcell,
.dispo.thin .mcell,
.dispo.thin .dcell .wd,
.dispo.thin .dcell .dd,
.dispo.thin .corner .c2,
.dispo.thin .util-head,
.dispo.thin .ut-sech{font-weight:600}
.dispo.thin .stats .stat b,
.dispo.thin .ut-days{font-weight:700}


/* ---- Sparte-Wähler im Board-Kopf (Ecke) + Popover ---- */
.dispo .corner .c2 .sp-btn{flex:none;position:relative;cursor:pointer;display:inline-flex;align-items:center;color:#fff;opacity:.8;margin-left:2px}
.dispo .corner .c2 .sp-btn:hover{opacity:1}
.dispo .corner .c2 .sp-btn svg{width:calc(15px * var(--fs));height:calc(15px * var(--fs))}
.dispo .corner .c2 .sp-btn .sp-dot{position:absolute;top:-1px;right:-3px;width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 1.5px var(--d-ink)}
.dispo .sparte-pop{position:absolute;z-index:20;background:#fff;border:1px solid var(--d-line);border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.2);padding:7px;min-width:158px;color:var(--d-ink);text-transform:none;letter-spacing:0}
.dispo .sparte-pop .sp-h{font-weight:700;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--d-ink2);padding:2px 4px 6px}
.dispo .sparte-pop .sp-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:7px;cursor:pointer;font-size:12.5px;font-weight:600}
.dispo .sparte-pop .sp-row:hover{background:var(--d-paper)}
.dispo .sparte-pop .sp-row input{accent-color:var(--cyan);width:15px;height:15px;cursor:pointer}
.dispo .sparte-pop .sp-f{border-top:1px solid var(--d-line2);margin-top:6px;padding-top:6px;display:flex;justify-content:flex-end}
.dispo .sparte-pop .sp-all{border:1px solid var(--d-line);background:#fff;border-radius:7px;padding:3px 10px;cursor:pointer;font-size:11px;font-weight:700;color:var(--d-ink2)}
.dispo .sparte-pop .sp-all:hover{border-color:var(--cyan);color:var(--cyan-d)}


/* ---- Globale Collapse-Stufen (2x2) ---- */
.dispo #d-level{flex-wrap:wrap;gap:2px}
.dispo #d-level button{flex:1 1 44%;padding:0 4px;font-size:calc(10px * var(--fs))}


/* ---- Ebenen-Wähler im Board-Kopf ---- */
.dispo .corner .c2 .lvl-btn{flex:none;cursor:pointer;display:inline-flex;align-items:center;color:#fff;opacity:.8;margin-left:2px}
.dispo .corner .c2 .lvl-btn:hover{opacity:1}
.dispo .corner .c2 .lvl-btn svg{width:calc(15px * var(--fs));height:calc(15px * var(--fs))}
.dispo .lvl-pop .lvl-opt{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:7px;padding:6px 9px;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--d-ink)}
.dispo .lvl-pop .lvl-opt:hover{background:var(--d-paper)}
.dispo .lvl-pop .lvl-opt.act{background:var(--d-ink);color:#fff}
