:root{font:15px/1.5 system-ui,sans-serif;color:#e3eadb;background:#171f17;--bg:#171f17;--card:#222e20;--line:#41503a;--muted:#b5c3ab;--accent:#a3d854;--ink:#e3eadb}*{box-sizing:border-box}body{margin:0}header{padding:16px 28px;display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line)}header strong{margin-right:auto}a{color:var(--accent)}main{max-width:1700px;margin:auto;padding:28px}.intro{display:flex;justify-content:space-between;align-items:center}h1{font-size:30px;letter-spacing:-.8px;margin:6px 0}h2{font-size:20px}h3{font-size:17px}p{color:var(--muted)}small{letter-spacing:1.3px}button,input,select,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:7px;padding:9px 12px;min-height:40px;min-width:0}button{cursor:pointer;font-weight:600}button:hover,button.active{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%}label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}nav{display:flex;gap:8px;margin:24px 0}nav button.active{background:var(--card)}.toolbar{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.toolbar label{flex:1;min-width:140px}.toolbar label:has(#filter){flex:2}.cards{display:flex;gap:14px;margin:20px 0}.card,.service,.box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:14px}.card{flex:1}.card b{font-size:26px;display:block}.legend{font-size:13px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 12px}.plan{background:#4c9c66}.actual{background:#e8bb42}.timeline-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:620px;margin-bottom:24px}.timeline-row{display:grid;min-width:900px;border-bottom:1px solid var(--line);position:relative}.vehicle{position:sticky;left:0;background:var(--card);padding:12px;z-index:2;border-right:1px solid var(--line);font-size:13px}.track{position:relative;min-height:100px;background-image:linear-gradient(to right,var(--line) 1px,transparent 1px);background-size:var(--step) 100%}.bar{position:absolute;background:#316849;color:white;font-size:12px;border:1px solid #75b582;border-radius:5px;padding:5px;overflow:hidden;white-space:nowrap;height:29px;text-align:left;min-height:0;top:8px}.bar.actual{background:#e8bb42;color:#332b10;top:46px;border-color:#f9d56c}.ruler{display:flex;position:relative;height:58px;align-items:center;font-size:11px}.tick{position:absolute;white-space:nowrap;padding-left:4px;border-left:1px solid var(--line)}.service h3{margin:0 0 8px}.service .actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.badge{display:inline-block;border:1px solid var(--line);border-radius:20px;padding:2px 8px;margin:2px;font-size:12px}.warn,#error{white-space:pre-line;color:#ffc477}.notification{padding:12px;border-left:4px solid var(--accent);background:var(--card);margin-bottom:12px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.fields .wide{grid-column:1/-1}dialog{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:12px;width:min(850px,95vw);max-height:90vh;padding:24px}dialog::backdrop{background:#0009}.dialoghead,footer{display:flex;justify-content:space-between;align-items:center;gap:12px}footer{justify-content:flex-end;margin-top:20px}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left}#status:not(:empty){padding:12px;border:1px solid var(--accent);margin:14px 0}.demo{--bg:#f3fafb;--card:#fff;--line:#c9e2e4;--muted:#506c73;--accent:#008d96;--ink:#173b43;background:var(--bg);color:var(--ink)}.demo .vehicle{background:#fff}.demo-banner{background:#d2f4f1;color:#12545b;padding:10px;text-align:center}.muted{color:var(--muted)}@media(max-width:700px){main{padding:14px}header{padding:12px;gap:8px;flex-wrap:wrap}.fields{grid-template-columns:1fr}.fields .wide{grid-column:auto}nav{overflow:auto}h1{font-size:25px}.cards{flex-wrap:wrap}.card{min-width:120px;padding:12px}.toolbar>*{flex:1}.intro{gap:10px}}@media print{@page{size:A4 landscape;margin:10mm}header,nav,.toolbar,.actions,#notices{display:none}body,main{background:white;color:black;padding:0}.timeline-wrap{max-height:none}.service{break-inside:avoid}}

.vehicle-swatch{display:inline-block;width:14px;height:14px;margin-right:5px;border-radius:3px;border:1px solid #142019}.bar:not(.actual){border:2px solid #398553}.bar.actual{border-style:dashed}.bar:focus-visible{outline:3px solid white;z-index:3}.bar:hover{z-index:3;min-width:max-content;overflow:visible}

.contact-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border:1px solid var(--line);border-radius:8px;min-width:0}.contact-fields legend{padding:0 6px}.contact-card{margin:8px 0;overflow-wrap:anywhere}.bar{height:60px;white-space:normal;overflow:auto}.bar span{display:block;overflow-wrap:anywhere}.bar:hover{min-width:0;overflow:auto}.bar:focus-visible{overflow:auto}@media(max-width:700px){.contact-fields{grid-template-columns:1fr}}

/* Compact planning layout: content determines height; no clipped form labels. */
:root{font-size:14px;line-height:1.4}header{padding:10px 20px;gap:16px}main{padding:16px 20px}h1{font-size:25px;margin:3px 0}h2{font-size:18px}h3{font-size:16px}p{margin:6px 0}.intro p{margin:3px 0 8px}nav{margin:12px 0;gap:6px}button,input,select,textarea{padding:5px 9px;min-height:32px;line-height:1.4}label{gap:3px}.toolbar{gap:7px}.toolbar label{min-width:125px}.card,.service,.box{padding:10px 12px;margin-bottom:8px;border-radius:8px}.cards{gap:8px;margin:10px 0;flex-wrap:wrap}.card{display:flex;align-items:center;gap:10px;margin:0;min-height:44px}.card b{font-size:22px;line-height:1.1;display:inline}.legend{font-size:12px;margin:7px 0}#vehicleCount{margin:8px 0;font-size:12px}.timeline-wrap{margin-bottom:12px}.vehicle{padding:6px 8px;font-size:12px;line-height:1.3}.vehicle p{margin:3px 0}.vehicle button{padding:3px 8px;min-height:27px;font-size:12px}.vehicle .badge{font-size:11px;padding:1px 5px;margin:1px}.ruler{height:40px}.track{min-height:76px}.bar{height:44px;padding:3px 5px;font-size:12px;line-height:16px}.bar.actual{height:44px}.service h3{margin:0 0 4px}.service .actions{gap:5px;margin-top:8px}.service .actions button{font-size:13px}.badge{padding:1px 7px;font-size:11px}.notification{padding:8px;margin-bottom:8px}.fields{gap:9px}dialog{padding:16px}.dialoghead h2{margin:0 0 8px}footer{margin-top:12px}.contact-fold{border:1px solid var(--line);border-radius:7px;margin:5px 0;background:var(--card)}.contact-fold summary{cursor:pointer;padding:7px 10px;font-size:13px;font-weight:600;overflow-wrap:anywhere}.contact-fold[open]>summary{border-bottom:1px solid var(--line)}.contact-fold .contact-fields{border:0;margin:0;padding:10px;gap:9px}.contact-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;padding:8px 10px}.contact-card{margin:0}.contact-card-grid>p{grid-column:1/-1}#shiftHistory>summary{cursor:pointer}#status:not(:empty){padding:8px;margin:8px 0}
@media(max-width:700px){main{padding:12px}header{padding:8px 12px}h1{font-size:23px}.card{padding:8px;min-width:130px}.contact-card-grid{grid-template-columns:1fr}.toolbar label{min-width:135px}button,input,select{min-height:36px}.vehicle button{min-height:30px}.contact-fold summary{padding:9px 10px}}

.archive-wagonlists{padding:8px 10px;overflow-wrap:anywhere}.archive-wagonlists small{letter-spacing:normal}

/* Each sticky cell must belong to the full time-axis width, not just the viewport. */
#timeline{width:max-content;min-width:100%}.timeline-row{width:max-content;min-width:100%}.timeline-row>.vehicle{position:sticky;left:0;z-index:3;background:var(--card);box-shadow:2px 0 3px #0002}.timeline-row:first-child{position:sticky;top:0;z-index:6;background:var(--card)}.timeline-row:first-child>.vehicle{z-index:7}.assignment-segment{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border:1px solid var(--line);border-radius:7px;padding:10px;min-width:0}.assignment-segment legend{padding:0 6px}.assignment-segment p{align-self:center}.assignment-segment button{justify-self:start}@media(max-width:700px){.assignment-segment{grid-template-columns:1fr}}
.timeline-row>.vehicle{z-index:10}.timeline-row:first-child{z-index:20}.timeline-row:first-child>.vehicle{z-index:21}

.run-editor{width:min(1040px,96vw)}.run-section{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 14px;margin:0;padding:12px;border:1px solid var(--line);border-radius:8px;min-width:0}.run-section legend{padding:0 6px;font-size:15px;font-weight:650}.run-section legend span,.run-contacts h3 span{color:var(--accent);margin-right:6px}.run-section.route-fields{grid-template-columns:1.4fr 1fr .75fr}.run-section-body{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:12px}.run-section .wide,.run-section-body .wide{grid-column:1/-1}.run-help{font-size:12px;margin:2px 0}.run-contacts h3{margin:4px 0}.run-contacts .contact-fold{margin:5px 0}.run-editor textarea{resize:vertical;min-height:60px}.run-editor footer{position:sticky;bottom:-16px;background:var(--bg);padding:10px 0;margin-top:8px;border-top:1px solid var(--line)}@media(max-width:700px){.run-section,.run-section.route-fields,.run-section-body{grid-template-columns:1fr}.run-editor{padding:12px}.run-editor footer{bottom:-12px}.run-section{padding:10px}}

.danger-numbers:not([hidden]){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 14px}.danger-numbers[hidden]{display:none}@media(max-width:700px){.danger-numbers:not([hidden]){grid-template-columns:1fr}}

/* Dense overview: expand a service for all existing fields and actions. */
header{padding:6px 16px;gap:12px}main{padding:10px 16px}.intro small{display:none}.intro h1{font-size:21px;margin:0;line-height:1.25}.intro{gap:8px}nav{margin:8px 0;gap:5px;flex-wrap:wrap}button,input,select{min-height:30px;padding:4px 8px;font-size:13px}#shiftHistory{padding:5px 9px;margin:5px 0 8px;font-size:12px}#shiftHistory>summary{line-height:1.5}.toolbar{gap:5px}.toolbar label{min-width:110px;flex:0 1 130px;font-size:12px;gap:2px}.toolbar label:has(#filter){flex:1 1 180px}.toolbar label:has(#vehicleLimit){flex:0 1 140px}.planning-legend{font-size:11px;color:var(--muted);margin:5px 0}.planning-legend summary{cursor:pointer}.cards{gap:6px;margin:6px 0}.card{flex:0 1 auto;padding:4px 10px;min-height:29px;gap:6px;font-size:12px}.card b{font-size:17px}#vehicleCount{margin:5px 0;font-size:11px}.ruler{height:32px}.timeline-wrap{margin-bottom:8px}.service.compact-run{padding:0;margin-bottom:5px}.compact-run>summary{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(200px,2fr) minmax(170px,1.5fr) auto;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;list-style:none;min-height:46px}.compact-run>summary::-webkit-details-marker{display:none}.run-summary-title{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.run-summary-title strong{font-size:15px}.run-summary-route,.run-summary-crew{font-size:12px;min-width:0;overflow-wrap:anywhere}.compact-run summary small{display:block;font-size:11px;letter-spacing:normal;color:var(--muted)}.run-summary-toggle{font-size:11px;color:var(--accent);white-space:nowrap}.run-summary-toggle:before{content:'▸ ';}.compact-run[open] .run-summary-toggle:before{content:'▾ ';}.compact-run>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.run-details{border-top:1px solid var(--line);padding:8px 10px}.run-details p{margin:4px 0}.run-details .actions{margin-top:6px}.run-details .contact-fold summary{padding:5px 8px}
@media(max-width:900px){.compact-run>summary{grid-template-columns:1fr 2fr}.run-summary-toggle{justify-self:end}.toolbar{flex-wrap:wrap}}
@media(max-width:600px){main{padding:8px}header{padding:7px 8px}.intro h1{font-size:19px}.toolbar label,.toolbar label:has(#vehicleLimit){flex:1 1 130px}.toolbar label:has(#filter){flex:1 1 100%}.compact-run>summary{grid-template-columns:1fr;gap:4px}.run-summary-toggle{justify-self:start}button,input,select{min-height:36px}nav button{flex:1 1 auto}.card{min-width:0;flex:1 1 40%}.compact-run>summary{padding:8px}.timeline-wrap{max-height:55vh}}
@media print{.planning-legend{display:none}.compact-run>summary{display:block}.compact-run>.run-details{display:block!important}}

.personal-calendar>.toolbar,.personal-calendar>.planning-legend,.personal-calendar>#summary,.personal-calendar>#vehicleCount,.personal-calendar>.timeline-wrap,.personal-calendar>#services{display:none}.month-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}.month-toolbar h2{margin:0;min-width:150px;text-align:center}.month-toolbar>span{margin-left:auto;color:var(--muted);font-size:12px}.month-hint{font-size:12px}.month-scroll{overflow:auto}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));min-width:700px;border-left:1px solid var(--line);border-top:1px solid var(--line)}.month-weekday{padding:6px;background:var(--card);text-align:center;font-weight:600}.month-day,.month-weekday{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.month-day{min-height:115px;padding:5px;min-width:0}.month-day.outside{background:#0002}.month-day.today{box-shadow:inset 0 0 0 2px var(--accent)}.month-date{font-size:12px;margin-bottom:4px;color:var(--muted)}.month-event{display:block;width:100%;text-align:left;padding:5px;margin:4px 0;font-size:12px;white-space:normal;overflow-wrap:anywhere;border-left:3px solid var(--accent)}.month-event span,.month-event small{display:block}.month-event small{letter-spacing:normal;font-size:11px;color:var(--muted)}.duty-notes{white-space:pre-wrap}.duty-details{overflow-wrap:anywhere}.duty-details .actions{display:flex;gap:6px;flex-wrap:wrap}@media(max-width:600px){.month-toolbar{gap:5px}.month-day{min-height:100px}.month-toolbar>span{margin:0}.month-toolbar h2{font-size:16px;min-width:130px}}

.parking-fields{min-width:0;border:1px solid var(--line);border-radius:7px;padding:8px;display:grid;gap:6px}.staff-calendar>#services{display:none}.rhythm-day{position:absolute;top:0;bottom:0;font-size:10px;color:var(--muted);padding:1px 3px;pointer-events:none;background:#a3d85408}.rhythm-day.rest{background:#8899aa20}.track>.bar{z-index:1}#employerFields[hidden]{display:none}

.profile-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:8px}.profile-preview input{width:100%}@media(max-width:600px){.profile-preview{grid-template-columns:1fr}}

.vehicle-drop-target{outline:3px dashed var(--accent);outline-offset:-3px;background-color:#a3d85418}.right-drag-label{position:fixed;z-index:10000;pointer-events:none;background:var(--card);color:var(--ink);border:1px solid var(--accent);padding:6px 10px;border-radius:6px;font-size:13px;box-shadow:0 4px 15px #0005}

.uic-label{font-weight:400}.uic-label strong{font-weight:800}.ruler.has-days{height:50px}.ruler.has-days>.tick{top:27px}.timeline-day{position:absolute;top:0;height:24px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);background:var(--card);font-size:12px;font-weight:600;white-space:nowrap;padding:3px 6px}.timeline-day>span{position:sticky;left:228px}

.block-bar{position:absolute;height:36px;min-height:0;padding:2px 5px;text-align:left;font-size:12px;line-height:14px;overflow:auto;border-radius:4px;z-index:2}.block-bar.blocked{background:#e45757;color:#160404;border:2px solid #a82020}.block-bar.maintenance{background:#f5ce53;color:#292000;border:2px solid #a08119}.block-bar span{display:block;white-space:normal;overflow-wrap:anywhere}.block-bar:focus-visible{outline:3px solid white;outline-offset:1px}
