/* Giebel Dispo v0.2 — based on the Giebel Mobile palette, tuned for high contrast. */
:root{--bg:#edf2f9;--paper:#fff;--ink:#14223a;--muted:#566980;--blue:#176fe5;--blue-dark:#1059bc;--nav:#0b1729;--stroke:#cbd7e6;--green:#16835d;--red:#b83342;--amber:#a66b00;--shadow:0 4px 18px rgba(17,35,59,.08);--font:Inter,'Segoe UI',Arial,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px var(--font)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #89b7ff;outline-offset:2px}.app-shell{display:flex;min-height:100vh}.rail{width:62px;flex-shrink:0;background:var(--nav);display:flex;flex-direction:column;align-items:center;gap:11px;padding:18px 6px 13px;min-height:100vh;position:sticky;top:0;height:100vh}.rail-logo{width:40px;height:40px;color:#fff;font-size:26px;font-weight:900;display:grid;place-items:center;letter-spacing:-2px;margin-bottom:27px}.rail-logo span{color:#75aaff}.rail-button{border:0;width:43px;height:42px;color:#b5c7df;background:transparent;border-radius:9px;font-size:23px}.rail-button.active,.rail-button:hover{background:#214675;color:#fff}.rail-spacer{flex:1}.rail-version{font-weight:800;font-size:10px;color:#b0bfd3}.main{min-width:0;flex:1}.top{display:flex;min-height:79px;align-items:center;justify-content:space-between;background:var(--paper);padding:12px 30px;border-bottom:1px solid var(--stroke);gap:18px}.eyebrow,.overline{font-size:10px;font-weight:800;letter-spacing:1.3px;color:#4176ae}.brand h1{margin:4px 0 0;font-size:23px;letter-spacing:-.65px}.version-pill{font-size:10px;vertical-align:middle;border:1px solid #b9d2f5;background:#eaf3ff;border-radius:5px;padding:4px 7px;color:#1761bb}.top-actions{display:flex;align-items:center;gap:20px}.local-label{font-size:10px;color:#29664e;font-weight:900;letter-spacing:.5px}.local-label i,.save-label i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#20aa70;margin-right:6px}.save-label{font-size:12px;font-weight:700;color:#426456}.save-label i.saving{background:#e2a437}.button{border-radius:8px;border:1px solid var(--stroke);padding:10px 13px;font-weight:750;white-space:nowrap;background:var(--paper);color:#253b57}.button:hover{border-color:#7fa9de;background:#f1f7ff}.button-primary{background:var(--blue);color:white;border-color:var(--blue);box-shadow:0 3px 9px #176fe524}.button-primary:hover{background:var(--blue-dark);color:#fff}.button-quiet{background:#f8fbff}.subnav{height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 30px;background:#fff;border-bottom:1px solid var(--stroke)}.tabs{display:flex;height:100%;gap:18px}.tab{background:none;border:0;border-bottom:3px solid transparent;font-weight:730;color:#66778c;padding:0 4px}.tab.active{color:#145fbe;border-bottom-color:#176fe5}.tab span{font-size:10px;background:#e7edf5;border-radius:5px;padding:2px 5px}.source{font-size:11px;color:#64748b;font-weight:700}.view{display:none;padding:23px 27px}.view.active{display:block}.page-title-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.page-title-row h2{margin:5px 0;font-size:25px;letter-spacing:-.8px}.page-title-row p{margin:3px 0;color:var(--muted);font-size:12px}.date-bubble{background:#fff;border:1px solid var(--stroke);border-radius:9px;min-width:146px;padding:10px 15px}.date-bubble small{display:block;font-size:9px;font-weight:800;color:#627c97;letter-spacing:.8px;margin-bottom:6px}.date-bubble strong{font-size:13px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat{border:1px solid var(--stroke);border-radius:9px;background:#fff;min-height:78px;padding:13px 17px;display:flex;justify-content:center;flex-direction:column;gap:6px;box-shadow:0 2px 9px #182c4308}.stat small{font-size:9px;color:#5b708a;font-weight:830;letter-spacing:.9px}.stat strong{font-size:19px;font-weight:850}.board-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid var(--stroke);background:#fff;border-radius:10px 10px 0 0}.toolbar-info{display:flex;align-items:center;gap:13px;white-space:nowrap}.toolbar-info strong{font-size:13px}.toolbar-info span{color:#5c7085;font-size:11px}.toolbar-actions{display:flex;align-items:center;gap:7px}.toolbar-actions .button{padding:8px 11px}.search{background:#f4f7fc;border:1px solid var(--stroke);border-radius:7px;padding:0 9px;display:flex;align-items:center;gap:4px}.search span{font-size:20px;color:#5b728e}.search input{width:195px;border:0;background:transparent;height:35px;outline:0;font-size:11px;color:#1e3550}.board-scroll{background:#eaf0f7;border:1px solid var(--stroke);border-top:0;padding:13px;overflow:auto;min-height:380px;max-height:calc(100vh - 385px);border-radius:0 0 10px 10px;scrollbar-width:thin}.board{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:9px;align-items:stretch}.column-heading{font-size:10px;display:flex;align-items:center;justify-content:space-between;color:#3e5570;gap:6px;padding:0 3px 6px}.column-heading strong{font-size:11px}.column-heading span{color:#5d738d}.empty-slot{min-height:1px}.site-card{background:#fff;display:flex;flex-direction:column;border:1px solid #c3d1e0;border-radius:8px;box-shadow:0 2px 5px rgba(17,35,59,.05);min-width:0;overflow:hidden;transition:border .1s,background .1s}.site-card.drop-target{outline:2px solid #176fe5;outline-offset:-2px;background:#f0f7ff}.site-header{background:#dce7f4;display:flex;align-items:flex-start;gap:7px;padding:9px 8px;border-bottom:1px solid #c6d4e5;min-height:45px}.site-card.is-status .site-header{background:#e8e8f0}.site-card.relocated{border-color:#d9a72f}.site-card.relocated .site-header{background:#ffe8a4;border-bottom-color:#deb645}.site-card.superseded{border-color:#d3a3a3;background:#f9f5f5}.site-card.superseded .site-header{background:#ecdfe1}.site-card.superseded .site-title-line{text-decoration:line-through;color:#9c4650}.site-title{flex:1;min-width:0}.site-title-line{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;overflow-wrap:anywhere;line-height:1.25}.site-number{font-size:11px;color:#1c62a9}.site-name{font-size:11px;color:#1d344e}.site-subtitle,.site-change-label{font-size:10px;display:block;margin-top:4px;line-height:1.2;color:#60748a}.site-card.relocated .site-change-label{color:#8a5800;font-weight:800}.site-card.superseded .site-change-label{color:#a14852;font-weight:800}.site-count{font-size:10px;font-weight:750;color:#48617c;white-space:nowrap;margin-top:2px}.collapse{border:0;background:#ffffff90;border-radius:5px;color:#476078;font-size:15px;width:21px;height:21px;line-height:1}.site-body{padding:5px;flex:1;min-height:27px}.site-card.collapsed .site-body{display:none}.person,.former-person{--category:#44546a;display:flex;gap:6px;align-items:center;margin-bottom:4px;border:1px solid #cbd7e5;border-left:4px solid var(--category);background:#f5f8fc;padding:6px 5px;min-width:0;min-height:27px;border-radius:5px;font-size:11px;color:#243d57}.person{cursor:grab}.person[data-category="vorarbeiter"],.former-person[data-category="vorarbeiter"]{--category:#3684f7}.person[data-category="maschinist"],.former-person[data-category="maschinist"]{--category:#e78c33}.person[data-category="azubi"],.former-person[data-category="azubi"]{--category:#08a69c}.person[data-category="rentner"],.former-person[data-category="rentner"]{--category:#8565d6}.person[data-category="fahrer"],.former-person[data-category="fahrer"]{--category:#9d704a}.person[data-category="werkstatt"],.former-person[data-category="werkstatt"]{--category:#628caa}.person[data-category="polier"],.former-person[data-category="polier"]{--category:#bb577f}.person.moved{background:#ffe8a7;border-color:#e3be5c;border-left-color:var(--category);color:#4b3a0e}.person.status-frei{background:#c9f3da;border-color:#81cda2;border-left-color:var(--category)}.person.status-krank{background:#fce0e3;border-color:#e2a2ab;border-left-color:var(--category)}.person.status-urlaub{background:#dceefa;border-color:#a0cce9;border-left-color:var(--category)}.person.status-schule{background:#eee5ff;border-color:#c3a9ed;border-left-color:var(--category)}.person.status-rentner{background:#f2ebff;border-color:#d1bce9;border-left-color:var(--category)}.person.expired{background:#c9f3da;border-color:#71c99b;border-left-color:var(--category)}.person:hover{box-shadow:0 1px 9px #47749d2b;border-color:#6e9bc9;border-left-color:var(--category)}.person.dragging{opacity:.35}.drag-handle{font-size:12px;opacity:.55;color:#4d637a;flex:0 0 auto}.person-main{flex:1;min-width:0;overflow-wrap:anywhere}.person-name{font-weight:800;display:block;line-height:1.25}.person-detail{display:block;font-size:9px;font-weight:650;color:#546676;margin-top:4px}.person-tag{font-size:8px;flex-shrink:0;border-radius:3px;padding:2px 3px;font-weight:850}.tag-return,.tag-free{background:#74d5a1;color:#164b33}.tag-moved{background:#ffc94f;color:#745012}.former-person{background:#f3e9eb;color:#98515b;border-color:#ebc5cc;opacity:.9;cursor:default}.former-mark{font-weight:800;font-size:12px}.former-name{text-decoration:line-through;font-weight:750;overflow-wrap:anywhere}.empty-site{font-size:10px;color:#899aab;padding:8px 4px;text-align:center}.follow-up-sites{padding:7px 8px 6px 27px;margin:8px 0 2px;background:#f1f5fb;border:1px dashed #b5c8e0;border-radius:6px;color:#354f6e;font-size:10px;line-height:1.65}.board-footer{display:flex;justify-content:space-between;gap:10px;color:#486584;padding:11px 3px;font-size:10px;font-weight:650}.legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#fff;border:1px solid var(--stroke);border-radius:8px;padding:11px 13px;margin-top:5px;font-size:10px}.legend b{margin-right:6px}.legend-chip{border-left:4px solid var(--category);background:#f1f4f8;padding:4px 8px;border-radius:4px;font-weight:750}.tablebox{border-radius:9px;background:#fff;border:1px solid var(--stroke);overflow:auto}table{width:100%;border-collapse:collapse}th{text-align:left;background:#e8eff8;color:#45607f;font-size:10px;letter-spacing:.5px;padding:12px 14px}td{padding:11px 14px;border-top:1px solid var(--stroke);font-size:12px}.empty-rows{color:#60778d;text-align:center;padding:34px}.change-list{display:flex;flex-direction:column;gap:8px}.change-item{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border:1px solid var(--stroke);border-radius:8px}.change-icon{width:34px;height:34px;border-radius:8px;background:#e5f0ff;color:#176fe5;display:grid;place-items:center;font-size:18px;font-weight:850}.change-copy{flex:1;display:flex;flex-direction:column;gap:4px}.change-copy small{color:#566d86}.change-time{font-size:10px;color:#60738b;font-weight:650;white-space:nowrap}.context-menu{position:fixed;z-index:1200;min-width:226px;padding:6px;background:#fff;box-shadow:0 15px 37px rgba(11,23,41,.23);border:1px solid #b6c8db;border-radius:10px}.context-menu[hidden]{display:none}.menu-item{display:block;text-align:left;width:100%;background:transparent;border:0;border-radius:6px;padding:10px 11px;color:#1c3551;font-weight:700;font-size:12px}.menu-item:hover{background:#e7f1ff;color:#124f9d}.menu-divider{height:1px;background:#d9e3ee;margin:4px}.dialog{border:1px solid #c5d4e6;border-radius:13px;box-shadow:0 15px 65px #0b172955;padding:22px;min-width:min(440px,92vw);max-width:min(530px,95vw);color:var(--ink);background:#fff}.dialog::backdrop{background:#07142991}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:18px}.dialog p{color:#526780;line-height:1.5;font-size:12px;margin:15px 0}.xbtn{border:0;background:#edf2f8;border-radius:7px;width:29px;height:29px;color:#4b5d71;font-size:21px}.field-label{display:block;margin:14px 0 6px;font-weight:800;font-size:11px}.field{width:100%;background:#fbfdff;color:#183351;border:1px solid #b9cadc;border-radius:7px;padding:10px 11px;outline-color:#176fe5}.field-hint{font-size:11px!important;color:#506a86!important;margin:7px 0 12px!important}.dialog-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:23px}.multi-rows{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow:auto}.multi-row{display:grid;grid-template-columns:26px 104px 1fr;align-items:center;gap:7px}.multi-index{font-size:12px;font-weight:900;color:#2368bb}.toast{position:fixed;z-index:3000;bottom:18px;right:18px;max-width:450px;display:none;background:#123d65;color:white;padding:13px 17px;border-radius:9px;font-weight:700;box-shadow:0 9px 28px #132c5d50}.toast.show{display:block}.toast.error{background:#a42f41}
@media(max-width:1440px){.board{grid-template-columns:repeat(5,minmax(190px,1fr))}.view{padding:20px 17px}.top,.subnav{padding-left:20px;padding-right:20px}.toolbar-info span{display:none}.search input{width:160px}}
@media(max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.top{flex-wrap:wrap}.top-actions{gap:9px}.board-toolbar{flex-wrap:wrap}.board-scroll{max-height:none}.board{grid-template-columns:repeat(5,minmax(190px,1fr))}.board-footer{flex-wrap:wrap}}
@media print{.rail,.top,.subnav,.board-toolbar,.board-footer,.stats,.legend{display:none!important}.main{width:100%}.view{padding:0}.board-scroll{overflow:visible;max-height:none;border:0;padding:0}.board{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.site-card{break-inside:avoid}.person{font-size:8px;padding:3px}.page-title-row h2{font-size:15px}}
/* V0.3 – compact, neutral, high-contrast dispatch workspace. Intentionally no all-over pale blue. */
:root{--bg:#e7e9e8;--paper:#fff;--ink:#172025;--muted:#445057;--blue:#1760ae;--blue-dark:#10487f;--nav:#151d24;--stroke:#adb6bb;--green:#126641;--red:#9c2934;--amber:#805500;--shadow:0 2px 8px rgba(0,0,0,.085)}
body{background:var(--bg);color:var(--ink)}
.rail{background:#131b22}.rail-button.active,.rail-button:hover{background:#394a58}
.top,.subnav{background:#f7f8f7;border-color:#abb3b7}.top{min-height:59px;padding:8px 20px}.subnav{height:38px;padding:0 20px}
.brand h1{font-size:20px}.eyebrow,.overline{color:#32526d}.version-pill{background:#dfe5e7;border-color:#b1bac0;color:#183746}
.button{padding:7px 10px;border-color:#89969c;background:#fff;color:#263238}.button:hover{background:#e2e7e9;border-color:#51616a}.button-primary{background:#1a566c;border-color:#1a566c;color:white;box-shadow:none}.button-primary:hover{background:#103e50}
.button-quiet{background:#f8f9f8}.view{padding:12px 15px}.page-title-row{margin-bottom:8px}.page-title-row h2{font-size:19px}.page-title-row p{color:#414f54}.stats{display:none}
.board-toolbar{background:#f9faf9;border-color:#9aa7ae;padding:6px 8px;gap:6px;border-radius:6px 6px 0 0}.toolbar-info span{font-size:10px}.toolbar-actions{flex-wrap:wrap}.toolbar-actions .button{padding:6px 9px}
.search{background:white;border-color:#a8b5bb}.search input{height:28px;color:#182b32;width:165px}
.board-scroll{background:#e3e6e5;border-color:#9da9ae;border-top:0;padding:7px;overflow-x:hidden;overflow-y:auto;min-height:390px;max-height:none;border-radius:0 0 6px 6px}
.board{display:grid;gap:6px;align-items:start;min-width:0;width:100%;grid-template-columns:repeat(5,minmax(0,1fr))}
.board-lane{display:flex;flex-direction:column;gap:6px;min-width:0}.empty-slot,.column-heading{display:none}
.site-card{border:1px solid #a2abae;border-radius:5px;background:white;box-shadow:0 1px 2px #00000017;min-width:0;break-inside:avoid}
.site-header{background:#273640;min-height:29px;padding:4px 5px;gap:3px;border-bottom:1px solid #17232a;color:#fff;align-items:center}
.site-title-line{line-height:1.12;gap:4px}.site-name,.site-number{font-size:10px;line-height:1.15;color:#fff;font-weight:800}.site-number{color:#fbdc98}.site-subtitle,.site-change-label{font-size:9px;color:#dce4ea;margin-top:2px}.site-count{font-size:9px;color:#e3ebed;margin:0}.collapse{width:17px;height:17px;font-size:12px;background:#ffffff25;color:#fff}
.site-card.is-status .site-header{background:#4c4352}.site-card.relocated .site-header{background:#9e6d00;border-bottom-color:#805700}.site-card.relocated .site-name,.site-card.relocated .site-number,.site-card.relocated .site-count{color:#fff}
.site-card.superseded .site-header{background:#784750}.site-card.superseded .site-title-line{text-decoration:line-through;color:white}.site-card.superseded .site-change-label{color:#f5dadf}.site-card.relocated .site-change-label{color:#ffebbd}
.site-body{padding:3px;min-height:0}.person,.former-person{font-size:10px;line-height:1.1;padding:3px 4px;min-height:20px;margin-bottom:2px;gap:3px;border:1px solid #aab3b6;border-left:3px solid var(--category);border-radius:3px;color:#1e2b30;background:#fafbfa}
.person-main{line-height:1.1}.person[data-category="vorarbeiter"],.former-person[data-category="vorarbeiter"]{--category:#2863aa}.person[data-category="maschinist"],.former-person[data-category="maschinist"]{--category:#a45b1b}.person[data-category="azubi"],.former-person[data-category="azubi"]{--category:#086f64}.person[data-category="rentner"],.former-person[data-category="rentner"]{--category:#6342a5}.person[data-category="fahrer"],.former-person[data-category="fahrer"]{--category:#81512f}.person[data-category="werkstatt"],.former-person[data-category="werkstatt"]{--category:#455c68}.person[data-category="polier"],.former-person[data-category="polier"]{--category:#983c60}
.drag-handle{font-size:9px}.person-name{font-weight:750;white-space:normal}.person-detail{font-size:8px;margin-top:1px;color:#455257}.person-tag{font-size:8px}.person.moved{background:#ffe7a2;border-color:#d3a43c;border-left-color:var(--category)}.person.status-frei,.person.expired{background:#bceccf;border-color:#5baf78;border-left-color:var(--category)}.person.status-krank{background:#f3cad0;border-color:#ca7887;border-left-color:var(--category)}.person.status-urlaub{background:#d0e5ed;border-color:#6ca1b7;border-left-color:var(--category)}.person.status-schule{background:#e4d7f1;border-color:#a58bb7;border-left-color:var(--category)}.former-person{background:#efdee0;color:#7f3340;border-color:#d5a6af;border-left-color:var(--category)}.empty-site{font-size:9px;color:#788285;padding:3px}.follow-up-sites{background:#f3f3ef;border-color:#a9b0ae;font-size:9px;padding:3px 3px 3px 23px;margin:2px 0}
.site-fleet{border-top:1px dashed #9aa4a8;margin-top:3px;padding-top:3px;display:flex;flex-direction:column;gap:2px}.site-truck{display:flex;align-items:center;gap:5px;background:#d8ddd9;border:1px solid #8e9d9a;border-radius:3px;padding:3px 4px;font-size:9px;cursor:pointer;min-width:0;color:#213b38}.site-truck strong{background:#314943;color:white;font-size:8px;border-radius:2px;padding:2px 3px}.site-truck span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-truck:hover{background:#c1d1c9}
.board-footer{color:#414d50;font-size:9px;padding:5px 0}.legend{padding:7px;border-color:#aab3b6;background:#f8f8f6}.legend-chip{background:#f1f1ef}
.context-menu{border-color:#8c979c}.menu-item{color:#1a2b31}.menu-item:hover{background:#e2e8e8;color:#1b4958}.dialog{border-color:#87969d}.dialog p{color:#364b52}.field{border-color:#9caab0;background:#fff;color:#15272e}.field-hint{color:#415056!important}
.fleet-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.fleet-group{min-width:0;background:#f5f6f4;border:1px solid #909a9b;border-radius:7px;overflow:hidden}.fleet-group-heading{background:#25343a;color:#fff;padding:11px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px}.fleet-group-heading strong{font-size:15px}.fleet-group-heading span{font-size:11px;color:#d2dedf}.fleet-section{padding:8px 10px;border-bottom:1px solid #bbc3c1}.fleet-section-label{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px;padding:3px 4px;color:#293b41;font-size:11px}.fleet-section-label span{color:#5c686b}.fleet-row{display:grid;grid-template-columns:105px minmax(90px,1.2fr) minmax(90px,1fr) auto;gap:7px;align-items:center;background:white;border:1px solid #aeb8b9;border-left:4px solid #4e685c;margin-bottom:4px;padding:5px 6px;border-radius:4px;min-width:0}.fleet-group:nth-child(2) .fleet-row{border-left-color:#87643c}.fleet-plate{font-weight:850;font-size:11px;color:#142d36}.fleet-main{display:flex;flex-direction:column;gap:2px;min-width:0}.fleet-main strong{font-size:11px;overflow-wrap:anywhere}.fleet-main small{color:#586368;font-size:10px}.fleet-project{font-size:10px;color:#29383a;overflow-wrap:anywhere}.fleet-edit{background:#f0f2f1;border:1px solid #a4b0ad;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:750;color:#233b40;cursor:pointer}.fleet-edit:hover{background:#dce4e0}
.truck-dialog{width:min(670px,95vw);max-width:min(670px,95vw)}.truck-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px}.truck-form-grid .span-2{grid-column:span 2}.truck-form-grid .field-label{margin-top:10px}.button-danger{margin-right:auto;border-color:#af7880;color:#9c2934;background:#fff4f5}.button-danger:hover{background:#fbe3e6}
body.overview-max .top,body.overview-max .subnav,body.overview-max .page-title-row,body.overview-max .stats,body.overview-max .board-footer,body.overview-max .legend{display:none}
body.overview-max #boardView{padding:4px}body.overview-max .board-toolbar{border-radius:0}body.overview-max .board-scroll{min-height:calc(100vh - 51px)}body.overview-max .main{min-height:100vh}
@media(max-width:1250px){.fleet-groups{grid-template-columns:1fr}.view{padding:10px}.top{padding:8px 10px}.board-toolbar{flex-wrap:wrap}}
@media(max-width:780px){.fleet-row{grid-template-columns:80px minmax(60px,1fr) 90px auto;gap:3px}.fleet-plate{font-size:9px}.board-scroll{padding:4px}.board{gap:4px}.page-title-row h2{font-size:17px}.top{flex-wrap:wrap}.top-actions{gap:8px}}
@media print{.board{grid-template-columns:repeat(6,minmax(0,1fr))!important}.site-card{break-inside:avoid}.board-scroll{overflow:visible!important}.site-truck{font-size:8px}}
.source{max-width:36vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#41545a}

/* V0.4 – Gleich hohe Karten je Rasterzeile, auch bei unterschiedlicher Personalzahl. */
.board{align-items:stretch}
.board>.site-card{height:100%;display:flex;flex-direction:column}
.board>.site-card>.site-body{flex:1}
@media print{.board{align-items:stretch}}

/* V0.4 – Dark Mode: local-only preference, all board and fleet panels stay readable. */
:root[data-theme="dark"]{color-scheme:dark;--bg:#12191d;--paper:#1d292e;--ink:#edf3f4;--muted:#b0c0c4;--stroke:#465960;--nav:#0b1115;--blue:#80b5ef;--blue-dark:#5293d9;--green:#75d3a3;--red:#f29aa3;--amber:#e5bd6a;--shadow:0 4px 18px #0005}
[data-theme="dark"] .top,[data-theme="dark"] .subnav,[data-theme="dark"] .stat,[data-theme="dark"] .date-bubble,[data-theme="dark"] .board-toolbar,[data-theme="dark"] .legend,[data-theme="dark"] .site-card,[data-theme="dark"] .fleet-group,[data-theme="dark"] .fleet-row,[data-theme="dark"] .dialog,[data-theme="dark"] .context-menu{background:var(--paper);color:var(--ink);border-color:var(--stroke)}
[data-theme="dark"] .board-scroll{background:#141f24;border-color:var(--stroke)}
[data-theme="dark"] .site-header{background:#34454c;color:#f3f6f7}
[data-theme="dark"] .site-card.is-status .site-header{background:#453e4d}
[data-theme="dark"] .site-name,[data-theme="dark"] .site-number,[data-theme="dark"] .site-subtitle,[data-theme="dark"] .site-count,[data-theme="dark"] .site-change-label{color:#f0f4f5}
[data-theme="dark"] .person,[data-theme="dark"] .former-person{background:#26343a;color:#f1f5f5;border-color:var(--category,#72868d)}
[data-theme="dark"] .person-detail,[data-theme="dark"] .fleet-main small,[data-theme="dark"] .fleet-project,[data-theme="dark"] .fleet-plate,[data-theme="dark"] .fleet-section-label,[data-theme="dark"] .board-footer,[data-theme="dark"] .toolbar-info span,[data-theme="dark"] .source,[data-theme="dark"] .stat small,[data-theme="dark"] .page-title-row p{color:#b8c9ce}
[data-theme="dark"] .person.moved{background:#5d4a23}[data-theme="dark"] .person.status-frei,[data-theme="dark"] .person.expired{background:#214b3c}[data-theme="dark"] .person.status-krank{background:#63343d}[data-theme="dark"] .person.status-urlaub{background:#294c5a}[data-theme="dark"] .person.status-schule{background:#463655}
[data-theme="dark"] .button,[data-theme="dark"] .fleet-edit,[data-theme="dark"] .search,[data-theme="dark"] .field,[data-theme="dark"] .menu-item{background:#293a40;color:#edf3f4;border-color:#52666c}
[data-theme="dark"] .button-primary{background:#245b87;color:#fff}[data-theme="dark"] .button:hover,[data-theme="dark"] .fleet-edit:hover{background:#3c5058}
[data-theme="dark"] .search input,[data-theme="dark"] .field{color:#edf3f4}[data-theme="dark"] .search input::placeholder{color:#a8b9bd}
[data-theme="dark"] .fleet-group-heading{background:#101a1e}[data-theme="dark"] .fleet-section{border-color:#465960}
[data-theme="dark"] .site-truck{background:#30454a;color:#eef4f5;border-color:#61767b}[data-theme="dark"] .follow-up-sites{background:#2c3b40;color:#eef4f5}
[data-theme="dark"] .legend-chip{background:#29383e;color:#edf3f4}[data-theme="dark"] .tab{color:#a9bec7}[data-theme="dark"] .tab.active{color:#a8d2ff}
@media print{:root[data-theme="dark"]{color-scheme:light;--bg:#fff;--paper:#fff;--ink:#15252b;--stroke:#b5c0c2}}

/* V0.4 – Kategorien als vollständige Umrandung; Sonderrolle Wassermeister vollfarbig. */
.person,.former-person{border:2px solid var(--category,#44546a);border-left-width:2px}
.person.moved,.person.status-frei,.person.status-krank,.person.status-urlaub,.person.status-schule,.person.expired,.former-person{border-color:var(--category,#44546a)}
.person[data-category="facharbeiter"],.former-person[data-category="facharbeiter"]{--category:#44546a}
.person[data-category="wassermeister"],.former-person[data-category="wassermeister"],.person.is-wassermeister{--category:#187eab}
.person.is-wassermeister,.person[data-category="wassermeister"]{background:var(--category);color:#fff;font-weight:750}
.person.is-wassermeister .person-detail,.person[data-category="wassermeister"] .person-detail{color:#fff}
[data-theme="dark"] .person.is-wassermeister,[data-theme="dark"] .person[data-category="wassermeister"]{background:#146c93;color:#fff;border-color:#64b9df}
[data-theme="dark"] .person.is-wassermeister .person-detail,[data-theme="dark"] .person[data-category="wassermeister"] .person-detail{color:#f2f9fc}

/* V0.4 – ein gemeinsamer Umsetzungsblock, gleichberechtigte Mehrfachbaustellen. */
.site-title-line .relocation-from{font-size:11px;font-weight:750;color:inherit}
.site-title-line .relocation-arrow{font-size:13px;font-weight:900;color:inherit}
.site-card.relocated .site-title-line{align-items:center}
.equal-sites{list-style:none;margin:0 0 5px;padding:3px 5px;display:flex;flex-direction:column;gap:2px;border-radius:4px}
.equal-site{display:flex;align-items:baseline;gap:6px;font-size:10px;line-height:1.35;min-width:0}
.equal-site-index{flex:none;min-width:15px}
.equal-site-label{overflow-wrap:anywhere;font-weight:650}
[data-theme="dark"] .equal-sites{background:#304146;color:#f2f6f6}

/* V0.5 – Fuhrpark-Schnellfilter und transparente Zuordnung. */
.fleet-filters{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-bottom:2px}
.fleet-filter{border:1px solid var(--stroke);border-radius:7px;padding:7px 11px;background:var(--paper);color:var(--ink);font-weight:750;font-size:11px;cursor:pointer}
.fleet-filter.active{background:#225b85;border-color:#225b85;color:#fff}
.fleet-row{grid-template-columns:105px minmax(90px,1.2fr) minmax(90px,1fr) auto auto}
.fleet-assignment{font-size:9px;font-weight:800;border-radius:4px;padding:4px 6px;white-space:nowrap;background:#dcefe5;color:#195c40}
.fleet-assignment.unassigned{background:#f5e6c9;color:#77500d}
[data-theme="dark"] .fleet-filter{background:#293a40;color:#edf3f4;border-color:#52666c}
[data-theme="dark"] .fleet-filter.active{background:#245b87;color:#fff}
[data-theme="dark"] .fleet-assignment.assigned{background:#244d3c;color:#baf2d0}
[data-theme="dark"] .fleet-assignment.unassigned{background:#56452c;color:#ffe3a7}
@media(max-width:780px){.fleet-row{grid-template-columns:75px minmax(60px,1fr) 70px auto auto;gap:3px}.fleet-assignment{font-size:8px;padding:3px}}

/* V0.5 – Fahrzeug-Schnellstatus und zusätzliche Fahrzeugarten. */
.fleet-row{grid-template-columns:105px minmax(90px,1.2fr) minmax(90px,1fr) auto auto auto}
.fleet-quick-status{border-radius:5px;padding:4px 7px;font-size:9px;font-weight:800;white-space:nowrap;background:#d8e9ee;color:#194f62}
.fleet-quick-status.status-einsatz{background:#dce8fb;color:#194d8b}
.fleet-quick-status.status-werkstatt{background:#f5e6c9;color:#77500d}
.fleet-quick-status.status-ausfall{background:#f8d6d9;color:#8b2534}
[data-theme="dark"] .fleet-quick-status{background:#30515d;color:#d5f3fc}
[data-theme="dark"] .fleet-quick-status.status-einsatz{background:#29486c;color:#d5e9ff}
[data-theme="dark"] .fleet-quick-status.status-werkstatt{background:#57462c;color:#ffe5b0}
[data-theme="dark"] .fleet-quick-status.status-ausfall{background:#60343a;color:#ffced3}
@media(max-width:780px){.fleet-row{grid-template-columns:75px minmax(60px,1fr) 70px auto auto auto;gap:3px}.fleet-quick-status{font-size:8px;padding:3px}}

/* V0.7 – Benachrichtigung der betroffenen Kollegen nachvollziehen. */
.changes-summary{padding:9px 12px;font-weight:750;color:var(--ink);border-bottom:1px solid var(--stroke)}
.change-notified{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:650;white-space:nowrap;cursor:pointer}
.change-notified input{accent-color:#21754d;width:15px;height:15px;cursor:pointer}
.change-done{opacity:.7}
.change-done .change-copy strong{text-decoration:line-through;text-decoration-thickness:1px}

/* V0.6/V0.7 – Personalübersicht, Sollbedarf, Kolonnentransfer, Verlauf. */
.people-list{border:1px solid var(--stroke);border-radius:0 0 10px 10px;background:var(--paper);overflow:hidden}
.people-summary{padding:10px 13px;font-weight:800;font-size:11px;border-bottom:1px solid var(--stroke);color:var(--muted)}
.people-row{display:grid;grid-template-columns:minmax(115px,1.3fr) minmax(88px,.8fr) minmax(130px,1.6fr) auto auto;gap:10px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--stroke);border-left:4px solid #44546a}
.people-row:nth-child(even){background:rgba(100,125,150,.045)}
.people-row[data-category="vorarbeiter"]{border-left-color:#2863aa}
.people-row[data-category="wassermeister"]{border-left-color:#187eab}
.people-row[data-category="maschinist"]{border-left-color:#a45b1b}
.people-row[data-category="azubi"]{border-left-color:#086f64}
.people-row[data-category="fahrer"]{border-left-color:#81512f}
.people-row[data-category="polier"]{border-left-color:#983c60}
.people-row[data-category="rentner"]{border-left-color:#6342a5}
.people-row:last-child{border-bottom:0}
.people-name{overflow-wrap:anywhere}.people-category,.people-location{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.people-action{padding:6px 9px;font-size:10px}
.site-card.site-understaffed{box-shadow:inset 0 0 0 1px #d99b2e}
.site-count.count-short{border:1px solid #dbac52;background:#fff0cc;color:#795015}
.change-filter{max-width:195px;min-width:165px}
.crew-trucks{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;margin:14px 0}
.crew-trucks input{width:16px;height:16px;accent-color:var(--blue)}
[data-theme="dark"] .people-list{background:var(--paper)}
[data-theme="dark"] .people-row:nth-child(even){background:rgba(215,230,240,.045)}
[data-theme="dark"] .site-count.count-short{background:#594628;border-color:#8e733e;color:#ffe1a5}
@media(max-width:880px){.people-row{grid-template-columns:minmax(110px,1.2fr) minmax(80px,.6fr) minmax(125px,1.2fr) auto;gap:5px}.people-row .people-action:first-of-type{display:none}}
@media(max-width:650px){.people-row{grid-template-columns:minmax(110px,1fr) minmax(80px,1fr) auto}.people-location{display:none}.change-filter{min-width:120px;max-width:150px}.board-toolbar{flex-wrap:wrap}.people-action{padding:5px 7px}}

/* V0.9 – Einteilung: klare Schnitte, durchgehende einzeilige Baustellen, offene Bedarfe */
.board,.board-changes{display:flex;flex-direction:column;gap:19px;align-items:stretch;grid-template-columns:none!important}
.board-section{min-width:0}
.board-section-title{font-size:12px;font-weight:850;letter-spacing:.35px;color:var(--ink);margin:0 0 7px;padding:8px 9px 7px;border-bottom:2px solid #7da1c5}
.board-section-tk .board-section-title{border-bottom-color:#238a9f}
.board-section-quarry .board-section-title{border-bottom-color:#b58b43}
.board-section-status .board-section-title{border-bottom-color:#777c99}
.board-section-grid{display:grid;gap:8px;align-items:stretch;min-width:0}
.board-section-grid>.site-card,.board-section-grid>.crew-group-card{min-width:0}
.site-card .site-header{min-height:32px;padding:5px 6px;align-items:center;gap:4px}
.site-card .site-title{min-width:0;overflow:hidden}
.site-card .site-title-line{display:flex;flex-wrap:nowrap;align-items:baseline;gap:4px;min-width:0;max-width:100%;line-height:1.2}
.site-card .site-number{flex:none;font-size:10px}
.site-card .site-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px}
.site-card .site-subtitle{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.site-card .collapse{flex:none;margin-left:auto;width:17px;height:18px;padding:0;font-size:12px}
.site-card .site-attention{font-weight:900;border-radius:50%;font-size:10px;flex:none;background:#f8d58b;color:#6e4300;width:15px;height:15px;display:grid;place-items:center}
.site-card.relocated .site-title-line{display:flex;flex-direction:column;align-items:stretch;gap:2px}
.site-card.relocated .site-header{background:#e9edf1}
.site-card.relocated .relocation-from{font-size:10px;font-weight:750;background:#fff4cb;color:#725e2a;text-decoration:line-through;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;border-radius:3px;padding:2px 4px}
.site-card.relocated .relocation-to{font-size:10px;font-weight:900;background:#ffe28a;color:#4f4008;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;border-radius:3px;padding:2px 4px}
.crew-group-card{border:1px solid #728e9b;border-radius:7px;overflow:hidden;background:var(--paper);min-width:0}
.crew-group-header{padding:7px 8px;font-size:11px;font-weight:850;background:#d5e5ec;color:#20384b}
.crew-group-members{padding:5px;display:flex;flex-direction:column;gap:6px}
.crew-group-members .site-card{border-radius:5px;box-shadow:none}
.needs-panel{border:1px solid var(--stroke);border-top:0;background:var(--paper);padding:8px 11px}
.needs-header{display:flex;gap:12px;align-items:center;margin-bottom:6px}
.needs-header strong{font-size:11px}
.needs-header span{font-size:10px;color:var(--muted)}
.needs-palette{display:flex;flex-wrap:wrap;gap:5px}
.need-template{padding:5px 8px;border-radius:5px;border:1px solid #e0bd46;background:#ffe992;color:#4a3900;font-size:10px;font-weight:750;cursor:grab}
.need-template:hover,.need-template.selected{background:#f7cc53;border-color:#95700b}
.site-staff-needs{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:5px}
.site-need{display:flex;align-items:center;gap:3px;border:1px solid #d7a334;border-radius:4px;background:#fff0b6;color:#594104;font-size:10px;font-weight:700;padding:2px 4px}
.site-need-remove{border:0;background:none;color:#6c4810;font-size:14px;font-weight:900;line-height:1}
.board-changes{margin:8px 0 18px}
.changes-heading{display:flex;flex-wrap:wrap;gap:9px;align-items:baseline;padding-bottom:8px;margin:13px 0 3px;border-bottom:1px solid var(--stroke)}
.changes-heading strong{font-size:13px}.changes-heading span{font-size:11px;color:var(--muted)}
.open-topics{margin:14px 0 12px}
.open-topic{display:grid;grid-template-columns:minmax(120px,1fr) minmax(150px,3fr) auto;gap:12px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--stroke);background:var(--paper);font-size:11px}
.open-topic strong{font-size:11px}
.open-topic>span{overflow-wrap:anywhere;color:var(--muted)}
.open-topic.unresolved-topic{border-left:3px solid #d89f31}
.change-history{background:var(--paper);border:1px solid var(--stroke);border-radius:8px;padding:11px}
.change-history>summary{font-size:12px;font-weight:750;cursor:pointer}
.change-history .change-list{margin-top:10px}
[data-theme="dark"] .site-card.relocated .site-header{background:#303f46}
[data-theme="dark"] .site-card.relocated .relocation-from{background:#4d4937;color:#f4dcaa}
[data-theme="dark"] .site-card.relocated .relocation-to{background:#96752d;color:#fff1c1}
[data-theme="dark"] .crew-group-header{background:#2d4d59;color:#dceef3}
[data-theme="dark"] .crew-group-card{background:#1d2b31;border-color:#5e7d83}
[data-theme="dark"] .need-template{background:#665522;color:#ffebad;border-color:#a38738}
[data-theme="dark"] .need-template:hover,[data-theme="dark"] .need-template.selected{background:#927424}
[data-theme="dark"] .site-need{background:#604e2d;color:#ffe3a6;border-color:#b79847}
[data-theme="dark"] .site-need-remove{color:#fff2c3}
[data-theme="dark"] .board-section-title{color:#eaf0f4}
@media(max-width:800px){.board-section-grid{gap:5px}.needs-header{display:block}.open-topic{grid-template-columns:minmax(100px,1fr) minmax(120px,2fr) auto;gap:5px}.need-template{padding:4px 6px}}

/* V0.10 – LKW genau in Excel-Zeilenfolge, Zellen direkt bearbeitbar */
.truck-top-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.truck-color-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:7px 10px;margin-bottom:6px;font-size:10px;color:var(--ink);background:var(--paper);border:1px solid var(--stroke);border-radius:7px}
.truck-legend-note{color:var(--muted);margin-left:auto}
.truck-color-chip{border:1px solid #8999a7;border-radius:3px;padding:2px 6px;font-weight:700}
.truck-color-chip.color-grey{background:#d1d5d9;color:#20272d}
.truck-color-chip.color-white{background:#fff;color:#1c2d3c}
.truck-color-chip.color-green{background:#b6dfc1;color:#204930}
.truck-color-chip.color-yellow{background:#ffe492;color:#634609}
.truck-color-chip.color-blue{background:#b9d7f5;color:#174367}
.truck-color-chip.color-red{background:#f8bcbc;color:#632326}
.truck-sheet-container{border:1px solid var(--stroke);border-radius:7px;background:var(--paper);overflow:auto;max-height:calc(100vh - 260px);scrollbar-width:thin}
.truck-sheet-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:11px}
.truck-sheet-table col{min-width:0}
.truck-sheet-table th{position:sticky;top:0;z-index:2;background:#244e75;color:#fff;text-align:left;font-size:10px;letter-spacing:.14px;padding:5px 5px;height:29px;line-height:1.1;border-right:1px solid rgba(255,255,255,.16);white-space:nowrap}
.truck-sheet-table th:first-child{left:0;z-index:4}
.truck-sheet-table td{padding:0 3px;border-right:1px solid rgba(75,95,115,.22);border-bottom:1px solid rgba(75,95,115,.24);white-space:nowrap;line-height:1}
.truck-sheet-row{height:24px;--truck-row-bg:#d3d8de;--truck-row-fg:#202c39;background:var(--truck-row-bg);color:var(--truck-row-fg)}
.truck-sheet-row.color-grey{--truck-row-bg:#d3d8de;--truck-row-fg:#202c39}
.truck-sheet-row.color-white{--truck-row-bg:#fff;--truck-row-fg:#1a2c3c}
.truck-sheet-row.color-green{--truck-row-bg:#b7e5c2;--truck-row-fg:#173d27}
.truck-sheet-row.color-yellow{--truck-row-bg:#ffea9e;--truck-row-fg:#503c0b}
.truck-sheet-row.color-blue{--truck-row-bg:#bddafa;--truck-row-fg:#153b65}
.truck-sheet-row.color-red{--truck-row-bg:#f8c5c5;--truck-row-fg:#622627}
.truck-sheet-row>td{background:var(--truck-row-bg);color:var(--truck-row-fg)}
.truck-sheet-row:hover>td{filter:brightness(.98)}
.truck-sheet-row>td:first-child{position:sticky;left:0;z-index:1;border-right:2px solid #8494a1}
.truck-sheet-row:focus-within>td{outline-offset:-1px}
.truck-cell-input{width:100%;min-width:0;height:23px;line-height:22px;padding:0 3px;border:0;border-radius:0;background:transparent;color:inherit;font-size:10px;font-weight:650;text-overflow:ellipsis;outline:none}
.truck-cell-input::placeholder{color:#7e8994;opacity:.64}
.truck-cell-input:hover{background:rgba(255,255,255,.3)}
.truck-cell-input:focus{background:#fff;color:#111f2c;box-shadow:inset 0 0 0 2px #438ed2;outline:0;text-overflow:clip}
.truck-table-colors{padding:0 3px!important}
.truck-row-swatches{height:23px;display:flex;align-items:center;gap:3px;justify-content:center}
.truck-swatch{width:15px;height:15px;min-width:15px;border-radius:3px;border:1px solid #72838f;padding:0;box-shadow:none}
.truck-swatch.selected{outline:2px solid #344e68;outline-offset:1px}
.truck-swatch:hover{transform:scale(1.12)}
.truck-swatch.swatch-grey{background:#aeb6be}
.truck-swatch.swatch-white{background:#fff}
.truck-swatch.swatch-green{background:#70c888}
.truck-swatch.swatch-yellow{background:#f4d156}
.truck-swatch.swatch-blue{background:#81b3ed}
.truck-swatch.swatch-red{background:#ef9c9c}
.truck-type-input{font-weight:850;border-left:3px solid #8995a2;background:rgba(255,255,255,.2);padding-left:4px}
.truck-type-input.type-da{border-left-color:#d99b17;color:#7d4f03}
.truck-type-input.type-va{border-left-color:#1f83b7;color:#0d5580}
.truck-type-input.type-c{border-left-color:#8360ac;color:#52377d}
.truck-type-input.type-sattel{border-left-color:#bd5361;color:#9f2834}
.truck-type-input.type-traktor{border-left-color:#2f965f;color:#13603a}
.truck-type-input.type-other{border-left-color:#6c808f}
.truck-cell-status{width:100%;height:22px;border:0;background:transparent;color:inherit;font-size:10px;font-weight:700}
.truck-sheet-section td{position:static!important;background:#486276!important;color:#fff!important;font-size:10px;font-weight:850;height:22px;padding:4px 8px;letter-spacing:.35px}
[data-theme="dark"] .truck-sheet-table th{background:#1c4a70}
[data-theme="dark"] .truck-sheet-row>td{color:var(--truck-row-fg)}
[data-theme="dark"] .truck-cell-input{color:var(--truck-row-fg)}
[data-theme="dark"] .truck-type-input.type-da{color:#7d4f03}
[data-theme="dark"] .truck-type-input.type-va{color:#0d5580}
[data-theme="dark"] .truck-type-input.type-c{color:#52377d}
[data-theme="dark"] .truck-type-input.type-sattel{color:#9f2834}
[data-theme="dark"] .truck-type-input.type-traktor{color:#13603a}
[data-theme="dark"] .truck-cell-input:focus{color:#111f2c}
@media(max-width:900px){.truck-sheet-container{max-height:calc(100vh - 225px)}.truck-color-legend{font-size:9px}.truck-top-actions .button{padding:7px 9px}}
