:root{font-family:Inter,system-ui,-apple-system,sans-serif;color:#203146;background:#f3f6fa;font-size:15px}*{box-sizing:border-box}body{margin:0}header{display:flex;justify-content:space-between;align-items:center;background:white;padding:22px 5%;border-bottom:1px solid #e1e7ef}.brand{display:flex;gap:12px;align-items:center;font-size:20px;font-weight:750;text-decoration:none;color:inherit}.logo{background:#e63842;color:white;border-radius:12px;padding:8px 14px;font-size:29px}small{display:block;color:#748196;font-size:12px;font-weight:450;line-height:1.7}.brand small{font-size:9px;letter-spacing:2px}.account{display:flex;align-items:center;gap:14px;font-size:12px}main{max-width:1450px;margin:auto;padding:24px 5% 50px}nav{display:flex;gap:26px;margin-bottom:35px}nav a{color:#748196;text-decoration:none;padding:10px 0}a[aria-current=page]{color:#db3541;font-weight:700}h1{font-size:38px;letter-spacing:-1.3px;margin:6px 0 10px}h2{font-size:19px;margin:4px 0}h3{font-size:13px}.eyebrow{letter-spacing:2px;font-size:10px;font-weight:750;color:#8190a3}.titlebar{display:flex;justify-content:space-between;align-items:center}.titlebar p{color:#758397}.clock{font-size:31px;font-weight:650;letter-spacing:-1px}.notice{background:#fff6dd;border:1px solid #f2e4b8;border-radius:10px;padding:12px 16px;font-size:12px;line-height:1.7}.toolbar{display:flex;align-items:center;justify-content:space-between;margin:26px 0}.segmented{display:flex;background:#e5eaf1;border-radius:10px;padding:4px}.segmented a{padding:9px 28px;border-radius:7px;color:#637187;text-decoration:none}.segmented a[aria-current]{background:white;color:#24364d;box-shadow:0 2px 5px #142e4210}.toggle{display:flex;gap:8px;align-items:center;font-size:13px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.card{background:white;border:1px solid #e1e8f0;box-shadow:0 5px 18px #1a3e5c05;border-radius:16px;overflow:hidden}.cardhead{display:flex;align-items:center;gap:14px;padding:22px 20px}.cardhead small{font-size:9px;letter-spacing:1px}.unit-icon{display:grid;place-items:center;width:45px;height:45px;background:#eaf2ff;color:#4778c7;border-radius:12px;font-size:27px}.nef .unit-icon{background:#fff0f0;color:#db3541}.dispatch .unit-icon{background:#f1edff;color:#8061cd}.current{margin:0 18px;padding:17px;background:#edf8f3;border:1px solid #dceee4;border-radius:10px}.status{font-size:9px;color:#32866a;letter-spacing:1.2px;font-weight:750}.current p{margin:12px 0 0}.current strong{font-size:14px}.daylist{padding:12px 20px 18px}.daylist h3{color:#8a96a6;font-size:10px;text-transform:uppercase;letter-spacing:1px}.shift{display:grid;grid-template-columns:105px 1fr;gap:8px;border-top:1px solid #edf1f6;padding:13px 0;font-size:12px}.shift .time{font-size:11px;font-weight:650}.shift small{font-size:10px}.panel{background:white;border:1px solid #e1e8f0;border-radius:14px;padding:24px;margin-bottom:20px}.filters{display:flex;align-items:end;gap:16px;flex-wrap:wrap}.filters label,label{display:block;font-size:12px}input:not([type=checkbox]),select{display:block;padding:11px;border:1px solid #ced8e4;border-radius:7px;font:inherit;margin:6px 0;width:100%;background:white}button{cursor:pointer;border:1px solid #dbe2ec;background:white;border-radius:7px;padding:10px 15px;color:#33445c;font:inherit;font-size:12px}.primary{background:#253a54;color:white;border-color:#253a54}.login{max-width:410px;margin:70px auto;background:white;padding:35px;border-radius:18px}.login h1{font-size:28px}.login label{margin-top:18px}.login button{margin-top:20px;width:100%}footer{text-align:center;color:#8b96a5;font-size:11px;padding:22px}[hidden]{display:none!important}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #5f94e9;outline-offset:3px}@media(max-width:1100px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.cards{grid-template-columns:1fr}.account{flex-direction:column;gap:4px}header{padding:16px}.brand{font-size:16px}h1{font-size:30px}.clock{font-size:22px}.toolbar{align-items:start;gap:18px;flex-direction:column}main{padding:20px 16px}nav{margin-bottom:20px}}

/* Kompakte aktuelle Besetzung: eine gemeinsame Endzeit pro Team. */
.current{margin:0 14px;padding:10px 12px}.status{display:block;line-height:1.3;letter-spacing:.8px}.current-crew{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:start;margin-top:6px}.crew-until{grid-column:2;grid-row:1;font-size:12px;font-weight:650;color:#456b5d;line-height:1.4;white-space:nowrap}.crew-people{grid-column:1;grid-row:1;min-width:0;display:grid;gap:2px}.crew-person{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 7px;line-height:1.4}.crew-person strong{font-size:14px;line-height:1.4}.crew-person small{display:inline;font-size:11px;line-height:1.4;color:#647b71}.current .current-empty{margin:6px 0 0;font-size:12px;line-height:1.4}.current-crew+.current-crew{border-top:1px solid #dceee4;padding-top:6px;margin-top:6px}.cardhead{padding:14px 16px;gap:10px}.cards{gap:16px}.unit-icon{width:38px;height:38px;font-size:23px;border-radius:9px}.cardhead h2{font-size:17px}.daylist{padding:8px 16px 14px}

/* Variante 1: kompakte Fahrzeugkarten, Leitstelle unter allen Fahrzeugen. */
header{padding:12px 3%}.logo{font-size:22px;padding:4px 10px;border-radius:8px}main{max-width:1600px;padding:14px 3% 30px}nav{margin-bottom:12px}nav a{padding:7px 0}.titlebar h1{font-size:28px;margin:2px 0 5px}.titlebar p{margin:5px 0}.notice{padding:7px 12px;margin:10px 0}.toolbar{margin:12px 0}.segmented a{padding:7px 22px}.cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start}.card{border-radius:12px;box-shadow:none}.cardhead{padding:12px;gap:9px}.cardhead h2{font-size:15px;line-height:1.35;margin:2px 0}.cardhead small{font-size:8px;letter-spacing:.7px}.unit-icon{width:32px;height:32px;min-width:32px;font-size:22px;border-radius:8px}.current{margin:0 10px;padding:9px 10px}.crew-person strong{font-size:13px}.crew-until{font-size:12px}.crew-people{gap:3px}.current-empty{min-height:36px}.daylist{padding:10px 12px}.daylist summary{cursor:pointer;font-size:11px;color:#637187;font-weight:600}.shift{grid-template-columns:80px minmax(0,1fr);padding:9px 0;margin-top:7px;gap:7px}.shift .time{font-size:10px;white-space:nowrap}.day-crew{display:grid;gap:3px}.day-crew .crew-person strong{font-size:12px}.dispatch-heading{grid-column:1/-1;border-top:1px solid #d8e1ec;padding-top:18px;margin:12px 0 0;font-size:20px}.dispatch-heading small{font-size:12px}.dispatch{grid-column:1/-1}.dispatch .current{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.dispatch .status{grid-column:1/-1}.dispatch .current-crew{margin:0}.dispatch .current-crew+.current-crew{border:0;padding:0;margin:0}.dispatch .daylist[open]{display:block}.dispatch .shift{grid-template-columns:100px minmax(0,1fr)}.dispatch .day-crew{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1150px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))}.dispatch .current{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:850px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.dispatch .current,.dispatch .day-crew{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.cards{grid-template-columns:1fr}main{padding:12px}.dispatch .current,.dispatch .day-crew{grid-template-columns:1fr}.titlebar h1{font-size:25px}.clock{font-size:20px}}

/* Aktuelle Besatzung / gemeinsame Tagesübersicht. */
.titlebar{margin:4px 0 10px}.titlebar h1.plan-date{font-size:22px;letter-spacing:0;margin:0}.overview-switch{display:flex;align-items:center;gap:9px;text-decoration:none;color:#263b54;font-size:13px;font-weight:600}.switch-track{width:34px;height:20px;border-radius:20px;background:#c5ceda;padding:3px}.switch-track:before{content:'';display:block;width:14px;height:14px;border-radius:50%;background:white}.overview-switch[aria-checked=true] .switch-track{background:#32866a}.overview-switch[aria-checked=true] .switch-track:before{transform:translateX(14px)}.card .current{margin-bottom:10px}.dispatch{margin-top:8px}.dispatch-blocks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0 12px 12px}.dispatch-block{background:#f5f3fc;border:1px solid #e7e1f4;border-radius:9px;padding:12px}.dispatch-block h3{margin:0 0 8px;color:#655184;font-size:13px}.dispatch-team+.dispatch-team{border-top:1px solid #e5def0;margin-top:9px;padding-top:9px}.dispatch-team .time{display:block;font-size:11px;color:#6e6380;margin-bottom:4px}.extra-people{margin-top:20px}.extra-people h2{font-size:17px;margin-bottom:16px}.extra-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.extra-person{border-bottom:1px solid #edf1f6;padding-bottom:8px}.card .daylist{padding-top:0}.shift:first-child{border-top:0;margin-top:0}@media(max-width:850px){.dispatch-blocks,.extra-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.dispatch-blocks,.extra-grid{grid-template-columns:1fr}.overview-switch{font-size:12px}}

/* Lehrgang/Klinik: gemeinsame kompakte Liste am Seitenende. */
.training-panel{margin-top:14px;padding:14px 16px}.training-panel h2{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;font-size:15px;margin:0 0 10px}.training-panel h2 small{font-size:11px}.training-people{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px 14px}.training-people .crew-person{gap:5px;line-height:1.35}.training-people .crew-person strong{font-size:12px;font-weight:600}.training-people .crew-person small{font-size:10px;line-height:1.35}@media(max-width:1150px){.training-people{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:850px){.training-people{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.training-people{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:380px){.training-people{grid-template-columns:1fr}}

/* Symbole nach Beschriftung, beide Josefshaus-Fahrzeuge in gemeinsamer Karte. */
.cardhead{justify-content:space-between}.cardhead>div{min-width:0}.cardhead .unit-icon{flex:none}.josef-vehicles{padding:0 12px}.josef-vehicle{padding:8px 0;border-top:1px solid #e7edf3}.josef-vehicle h3{font-size:12px;margin:0 0 6px;display:flex;align-items:center;gap:8px}.operator{font-size:10px;border-radius:4px;background:#edf2f7;color:#53677f;padding:2px 5px}.operator-placeholder{font-size:12px;margin:4px 0 0;color:#60748b}.josef-priority{background:#f6f8fb;color:#607189;font-size:10px;line-height:1.6;padding:7px 12px;margin-top:6px}.josef-priority span{font-variant-numeric:tabular-nums}.josef-team{margin-top:7px}.josef-team>small{font-size:10px}.josef-vehicles .crew-person strong{font-size:12px}.segmented a{padding:7px 18px}

.current.off-duty{background:#f4f6f8;border-color:#e3e8ee;color:#778395}.off-duty .current-empty{min-height:0}.josef-vehicle h3>.crew-until{margin-left:auto;font-size:11px}.current-crew:first-child{margin-top:0}

/* Freiburger RTW: gleiche Kartenhöhe bei zwei oder drei Personen. */
.card.freiburg{align-self:stretch;display:flex;flex-direction:column}.freiburg .cardhead{min-height:66px}.freiburg .current{min-height:82px;flex:1}.freiburg .daylist{flex:1}

/* Dienstzeiten bei pausierenden Fahrzeugen und beide Uniklinik-Besatzungen. */
.service-hours{font-size:11px;font-weight:600;color:#667990;margin:0 0 7px}.vehicle-hours{padding:0 12px 12px;margin:0}.uni-plan{padding:0 12px 12px}.uni-team{padding:7px 9px;margin-top:6px;border:1px solid #e8edf3;border-radius:7px;background:#f7f9fb}.uni-team.is-active{background:#edf8f3;border-color:#dceee4}.uni-team>small{font-size:10px;line-height:1.4;margin-bottom:3px}.uni-team .crew-person strong{font-size:12px}.off-duty-note{font-size:11px;color:#778395;margin:0 0 7px}.freiburg .vehicle-hours{margin-top:auto}

/* Kompakte Uniklinik-Teams und Navigation bis sieben Tage voraus. */
.uni-team{padding:4px 0;margin-top:2px;border:0;border-radius:3px;background:transparent}.uni-team+ .uni-team{border-top:1px solid #e8edf3;padding-top:6px;margin-top:4px}.uni-team.is-active{padding-left:6px;padding-right:6px}.uni-team>small{margin-bottom:1px}.service-hours .off-duty-note{font-size:inherit;font-weight:400;margin:0}.segmented{flex-wrap:wrap}.week-limit{padding:7px 12px;font-size:12px;color:#778395}

/* Deutliche Tagesnavigation, Weiter bewusst abgesetzt. */
.day-navigation{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.next-day{padding:8px 16px;border:1px solid #cbd5e1;border-radius:8px;color:#475b76;background:white;text-decoration:none;font-weight:600}.next-day:hover{background:#edf2f8}.segmented .today-button{font-weight:750;color:#c63143}.segmented .today-button[aria-current]{background:#d93449;color:white;box-shadow:0 2px 5px #d9344926}.titlebar{margin-top:0}.plan-date{font-size:24px}.toolbar{margin-top:8px}.day-navigation .week-limit{border-left:1px solid #d5dce6}

/* Vorschau Punkte 1–4; Zusatzbereiche bleiben geöffnet. */
header{padding:8px 3%}.brand{font-size:16px;gap:8px}.logo{font-size:21px;padding:3px 9px;border-radius:7px}.account{font-size:11px}.account button{padding:6px 10px}main{padding-top:10px}.preview-nav{margin:0 0 6px;gap:18px}.preview-nav a{padding:3px 0;font-size:11px}.preview-nav a:first-child{display:none}.preview-banner{margin:0 0 8px;font-size:11px;color:#7c6427;background:#fff7df;padding:5px 9px;border-radius:5px}.preview-banner a{float:right;color:inherit}.titlebar{margin:0}.plan-date{font-size:22px;margin:0}.toolbar{margin:9px 0 12px}.cardhead small{display:none}.cardhead{padding:10px 12px}.freiburg .cardhead{min-height:44px}.cardhead h2{font-size:14px;margin:0}.unit-icon{width:30px;height:30px;font-size:22px}.daylist{padding:0 12px 9px}.daylist .shift{display:grid;grid-template-columns:1fr;gap:2px;padding:6px 0}.daylist .shift:first-child{border-top:0}.daylist .time{font-size:10px;font-weight:700;margin:0}.daylist .crew-person{line-height:1.35}.daylist .crew-person strong{font-size:12px}.daylist .crew-person small{font-size:10px}.past-shift{opacity:.52}.uni-team{margin-top:2px;padding-top:3px}.cards{gap:12px}footer{padding-top:10px}

/* Tagesansicht: Uhrzeit unmittelbar unter dem Fahrzeug, Namen mit minimalem Abstand. */
.daylist .shift:first-child{padding-top:0}.daylist .shift{gap:3px}.daylist{padding-top:0}.card.freiburg .cardhead{min-height:0}.cardhead{padding-bottom:5px}.day-crew{margin-top:0}

/* Koordination dezent am Ende der Leitstelle; Zusatzfunktionen hinter Namen. */
.dispatch-coordinators{display:flex;gap:8px 22px;flex-wrap:wrap;margin:2px 12px 10px;padding-top:7px;border-top:1px solid #edf1f6;color:#7b8797;font-size:10px}.dispatch-coordinators>span{display:flex;align-items:baseline;gap:7px}.dispatch-coordinators strong{font-weight:500}.dispatch-coordinators small{display:inline;font-size:10px;color:inherit}.extra-line{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.assignment-function{font-size:10px;color:#7b8797;font-weight:400}.extra-grid{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:800px){.extra-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:500px){.extra-grid{grid-template-columns:1fr}}

/* Getrennter Adminbereich und Mitarbeiter-Monatsjournal. */
.admin-switch{border:1px solid #d4dce6;border-radius:6px;padding:6px 10px;color:#52677e;text-decoration:none;font-size:11px}.admin-nav{display:flex;flex-wrap:wrap;gap:8px 20px;margin:0 0 16px}.admin-nav a{padding:5px 0;font-size:12px}.admin-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.admin-options>a{text-decoration:none;color:inherit}.admin-options p{font-size:13px;color:#748196}.journal-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.journal-heading p{margin:5px 0}.journal-totals{font-size:12px;color:#61748c}.journal-totals strong{color:#263b52;font-size:17px}.journal-totals span{padding:0 9px}.journal-note{font-size:11px;color:#7b8797;line-height:1.5}.journal-table-wrap{overflow-x:auto}.journal-table{width:100%;border-collapse:collapse;font-size:12px}.journal-table th{text-align:left;background:#eef2f7;color:#52677e;padding:9px}.journal-table td{padding:7px 9px;border-bottom:1px solid #e8edf3;vertical-align:top}.journal-table th:first-child{width:65px}.journal-table th:nth-child(2){width:42px}.journal-table th:nth-child(4){width:155px}.journal-table th:last-child{width:85px}.journal-weekend{background:#f7f9fc}.journal-today{background:#edf8f3}.journal-empty{color:#8995a5;font-size:11px}.journal-entry{min-height:35px;line-height:1.5}.journal-entry small{font-size:10px;line-height:1.4}.journal-filters select{max-width:100%}@media(max-width:700px){.admin-options{grid-template-columns:1fr}.account{flex-wrap:wrap;gap:7px}.journal{padding:12px}.journal-table{min-width:550px}}

/* Änderungen mit Text und Farbe; vorherige Planung bleibt abrufbar. */
.plan-changes{margin:0 0 12px;border:1px solid #e7cf8e;background:#fffaf0;border-radius:9px;font-size:12px}.plan-changes>summary{cursor:pointer;font-weight:650;padding:9px 12px;color:#826115}.changes-content{padding:0 12px 12px}.changes-content>p{font-size:11px;color:#7b8797}.plan-change{padding:8px 10px;margin:7px 0;border-left:3px solid;border-radius:4px;background:white;line-height:1.5}.change-added{border-color:#288568;background:#eef9f3}.change-changed{border-color:#d49a28;background:#fff5dd}.change-removed{border-color:#c75b65;background:#fff0f1}.change-label{display:inline-block;min-width:65px;font-size:10px;text-transform:uppercase}.plan-change>div{font-size:11px;margin-top:3px}.plan-change>div>span{font-weight:650}.card.has-plan-change{border-color:#dfb75f}.change-badge{display:inline-block;color:#8c6414;background:#fff3d7;padding:1px 5px;border-radius:4px;font-size:9px;margin-top:3px}.changes-content>a{display:inline-block;font-size:11px;color:#52677e;margin-top:6px}

.nef .unit-icon{background:#edf5ff;color:#2684eb}.nef .unit-icon svg{display:block;flex:none}

/* Freigegebenes Mercedes-Vito-NEF, Variante 5. */
.nef .unit-icon{width:48px;height:34px;background:#fff;border-radius:4px}.nef .unit-icon svg{width:48px;height:32px}

.rtw .unit-icon{width:48px;height:34px;background:#fff;border-radius:4px}.rtw .unit-icon svg{display:block;width:48px;height:32px}

/* ITW: gleiches Fahrzeugmotiv wie RTW, 125 Prozent. */
.cardhead .itw-icon{width:60px;height:42.5px;background:#fff;border-radius:4px}.cardhead .itw-icon svg{display:block;width:60px;height:40px}
