
:root{--bg:#f3f5f7;--panel:#fff;--text:#1f2937;--muted:#667085;--line:#d7dde4;--accent:#145f4c;--accent2:#0f766e;--danger:#b42318;--warn:#b54708}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}
.shell{display:grid;grid-template-columns:245px 1fr;min-height:100vh}.sidebar{background:#15212b;color:#fff;padding:18px;position:sticky;top:0;height:100vh}.brand{font-size:20px;font-weight:800;margin-bottom:22px}.nav a{display:block;text-decoration:none;padding:10px 12px;margin:3px 0;border-radius:8px}.nav a:hover,.nav a.active{background:#263746}.main{padding:22px}.top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{font-size:30px;font-weight:800}.muted{color:var(--muted)}.btn{display:inline-block;border:1px solid #bbc4ce;background:#fff;border-radius:8px;padding:8px 12px;text-decoration:none;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{background:#fff5f3;color:var(--danger);border-color:#f2b8b5}.btn.warn{background:#fff8eb;color:#8a4b00;border-color:#fedf89}
table{width:100%;border-collapse:collapse;background:#fff}th,td{border:1px solid var(--line);padding:8px;vertical-align:top}th{background:#f0f3f5;text-align:left}.scroll{overflow:auto}.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{margin-bottom:10px}.field label{display:block;font-weight:650;margin-bottom:4px}.field input,.field select,.field textarea{width:100%;padding:9px;border:1px solid #bdc6cf;border-radius:7px;background:#fff}.badge{display:inline-block;border-radius:999px;padding:3px 8px;font-size:12px;background:#eef2f6}.badge.ok{background:#dcfae6;color:#067647}.badge.warn{background:#fff0d6;color:#8a4b00}.badge.danger{background:#fee4e2;color:#b42318}.notice{padding:10px 12px;border-radius:8px;background:#fff8eb;border:1px solid #fedf89;color:#8a4b00}.login{max-width:430px;margin:10vh auto}.small{font-size:12px}.schedule-cell{min-width:180px}.block{border:1px solid #d7dde4;background:#fafafa;border-radius:6px;padding:5px 7px;margin:3px 0}.holiday{background:#fff4e5!important}.approved{box-shadow:inset 4px 0 0 #12b76a}.draft{box-shadow:inset 4px 0 0 #f79009}
.theme-admin{--bg:#e6e9ec;--panel:#f7f8f9}.theme-admin .sidebar{background:#444b52}.theme-admin .card,.theme-admin .btn,.theme-admin .field input,.theme-admin .field select,.theme-admin .field textarea{border-radius:2px}.theme-admin .card{box-shadow:none}.theme-admin th{background:#dfe3e7}.theme-modern .card{box-shadow:0 8px 24px rgba(20,30,40,.05)}
@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.main{padding:10px}.grid{grid-template-columns:1fr 1fr}.row{grid-template-columns:1fr}}

.absence-chip{display:flex;flex-direction:column;gap:1px;padding:6px 8px;border-radius:7px;margin:3px 0;border:1px solid #d8dee6;background:#f8fafc;font-size:12px}
.absence-chip strong{font-size:12px;letter-spacing:.02em}.absence-chip span{font-size:11px;opacity:.9}.absence-chip small{font-size:11px;color:#667085}
.absence-chip.ok{background:#ecfdf3;border-color:#abefc6;color:#067647}
.absence-chip.warn{background:#fff8eb;border-color:#fedf89;color:#8a4b00}
.absence-chip.danger{background:#fff1f0;border-color:#f4c7c2;color:#9b1c1c}
.conflict{margin:4px 0;padding:5px 7px;border-radius:6px;background:#fff1f0;border:1px solid #f4c7c2;color:#9b1c1c;font-size:11px;font-weight:700}

.group-row td{background:#e9eef2!important;border-top:2px solid #aeb8c2;font-size:13px;letter-spacing:.01em}
.minijob-list{margin-top:28px;padding-top:12px;border-top:3px solid #98a2b3}
@media print{
  .minijob-list{page-break-before:always;border-top:0}
  .planning-group h3{page-break-after:avoid}
  .group-row{page-break-after:avoid}
}

.rep-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;margin-left:7px;padding:0 7px;border-radius:6px;background:#17212b;color:#fff;font-size:12px;font-weight:900;vertical-align:middle}
.theme-admin .rep-badge{border-radius:2px}

.rep-day{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:3px 0 6px;padding:6px 7px;border:1px solid #b9c4cf;background:#eef4f7;border-radius:7px;font-size:11px;font-weight:700}
.rep-day small{width:100%;font-weight:400;color:#667085}

.block-actions{margin-top:5px;padding-top:4px;border-top:1px dashed #d1d7de;font-size:11px}
.block-actions a{text-decoration:none}
.block-actions a:last-child{color:#b42318}

.entry-actions{margin-top:5px;padding-top:4px;border-top:1px dashed rgba(0,0,0,.15);font-size:11px}
.entry-actions a{color:#b42318;text-decoration:none;font-weight:700}

.link-delete{border:0;background:transparent;padding:0;color:#b42318;font:inherit;font-weight:700;cursor:pointer}

.responsible-label{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.03em;color:#145f4c;margin-bottom:3px}

.responsible-person-row>th,.responsible-person-row>td{border-top:3px solid #145f4c!important}
.responsible-person-row>th:first-child,.responsible-person-row>td:first-child{background:#eef8f4!important}

.trainee-list{margin-top:24px;padding-top:10px;border-top:2px solid #c4ccd4}
.group-row td{font-weight:700}

.editable-cell{cursor:pointer;position:relative}
.editable-cell:hover{outline:2px solid rgba(20,95,76,.35);outline-offset:-2px}
.editable-cell:hover:after{content:"Klicken zum Bearbeiten";position:absolute;right:4px;bottom:3px;font-size:9px;opacity:.55;pointer-events:none}
.leadership-list{margin-top:8px}
.leadership-list table tbody tr:nth-child(2) th:first-child,
.leadership-list table tbody tr:nth-child(3) th:first-child,
.leadership-list table tbody tr:nth-child(4) th:first-child{font-weight:800}
.planner-modal{display:none;position:fixed;inset:0;background:rgba(10,20,30,.55);z-index:9999;padding:24px;align-items:center;justify-content:center}
.planner-modal.open{display:flex}
.planner-modal-dialog{width:min(920px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.25);padding:18px}
.planner-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.planner-modal-close{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer}
.planner-modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.theme-admin .planner-modal-dialog{border-radius:3px}
@media print{.editable-cell:hover:after{display:none}.planner-modal{display:none!important}}

/* v1.8: klar erkennbare, direkt anklickbare Einsatzplanungszellen */
.schedule-cell.editable-cell{cursor:pointer;min-width:118px;transition:box-shadow .12s ease,background .12s ease}
.schedule-cell.editable-cell:hover{box-shadow:inset 0 0 0 2px #145f4c;background:#f5fbf8}
.cell-create-hint{min-height:42px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#667085;border:1px dashed #c7ced6;border-radius:6px}
.schedule-cell.editable-cell:hover .cell-create-hint{color:#145f4c;border-color:#145f4c}
.leadership-list{border:2px solid #99b6ad;padding:8px;border-radius:10px}
.leadership-list h3{margin-top:4px!important}
.leadership-list tbody tr:not(:first-child) th:first-child{white-space:normal}

/* v1.9 - direkte Zellbearbeitung */
.schedule-cell.editable-cell{cursor:pointer;min-width:118px;transition:background .12s ease,box-shadow .12s ease}
.schedule-cell.editable-cell:hover{background:#f4fbf8;box-shadow:inset 0 0 0 2px #146b54}
.cell-create-hint{display:flex;min-height:42px;align-items:center;justify-content:center;border:1px dashed #aab5bf;border-radius:6px;font-size:11px;font-weight:800;color:#68727d}
.schedule-cell.editable-cell:hover .cell-create-hint{border-color:#146b54;color:#146b54}
.leadership-list{border:2px solid #a8beb7;border-radius:10px;padding:8px;margin-top:8px}
.planner-modal{display:none;position:fixed;inset:0;z-index:10000;background:rgba(10,18,24,.58);padding:24px;align-items:center;justify-content:center}
.planner-modal.open{display:flex}
.planner-modal-dialog{width:min(900px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:12px;padding:18px;box-shadow:0 24px 70px rgba(0,0,0,.3)}
.planner-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.planner-modal-close{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer}
.planner-modal-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
@media print{.planner-modal{display:none!important}}

/* v2.0: feste Hierarchiezeilen in der Einsatzplanung */
.leadership-list table .leadership-fixed-row:nth-of-type(2) th:first-child,
.leadership-list table .leadership-fixed-row:nth-of-type(3) th:first-child,
.leadership-list table .leadership-fixed-row:nth-of-type(4) th:first-child{font-weight:800}
.leadership-list .leadership-fixed-row>th:first-child{background:#eef8f4}
.leadership-list .leadership-missing>th:first-child{background:#f7f7f7}
.locked-cell{background:#fafafa}

/* v2.1 – Wochenvorgaben und Stundenkontrolle */
.cell-create-hint{display:none!important}
.week-planning-card{margin-top:14px}
.week-kpis{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px;margin:12px 0 18px}
.week-kpi{border:1px solid #d7dde4;border-radius:10px;padding:12px;background:#f8fafc}
.week-kpi span{display:block;font-size:11px;color:#667085;margin-bottom:5px}
.week-kpi strong{display:block;font-size:16px}
.week-kpi.ok{background:#ecfdf3;border-color:#abefc6}
.week-kpi.warn{background:#fffaeb;border-color:#fedf89}
.week-kpi.danger{background:#fef3f2;border-color:#fecdca}
.field-wide{flex:1 1 100%}
.field-wide textarea{width:100%;resize:vertical}
#cellWeekHoursCheck{margin-top:12px}
@media(max-width:900px){.week-kpis{grid-template-columns:repeat(2,minmax(150px,1fr))}}
@media(max-width:560px){.week-kpis{grid-template-columns:1fr}}

/* v2.2 – Übersichten, Statistiken und Urlaubskalender */
.dashboard-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:14px 0}
.kpi-card span{display:block;font-size:12px;color:#667085;margin-bottom:6px}.kpi-card strong{display:block;font-size:24px}
.dashboard-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}
.progress-big{height:14px;background:#e9eef2;border-radius:999px;overflow:hidden;margin:16px 0 8px}
.progress-big>div{height:100%;background:#376f61;border-radius:999px}
.legend-line{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#667085}
.chart-number{font-size:30px;font-weight:800;margin-top:10px}.metric-note{margin-top:8px;font-weight:700}
.bar-chart{display:grid;gap:12px;margin-top:14px}.bar-row{display:grid;grid-template-columns:110px 1fr 36px;gap:10px;align-items:center}
.bar-track{height:12px;background:#e9eef2;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:#376f61;border-radius:999px}
.mini-list{display:grid;gap:8px}.mini-list-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #edf0f2}
.mini-list-row div{display:grid;gap:2px}.mini-list-row div span{font-size:12px;color:#667085}
.next-shift{display:flex;flex-direction:column;gap:6px;padding:18px;border:1px solid #dce4e1;border-radius:10px;background:#f6faf8}.next-shift strong{font-size:22px}
.donut-wrap{display:flex;align-items:center;gap:24px;padding:10px 0}.donut{--p:50%;width:150px;height:150px;border-radius:50%;background:conic-gradient(#376f61 0 var(--p),#d7a54a var(--p) 100%);display:grid;place-items:center}
.donut:before{content:"";position:absolute}.donut>div{width:104px;height:104px;background:#fff;border-radius:50%;display:grid;place-content:center;text-align:center}.donut>div strong{font-size:28px}.donut>div span{font-size:11px;color:#667085}
.donut-legend{display:grid;gap:8px;font-weight:700}

.vacation-calendar{display:grid;grid-template-columns:44px repeat(7,minmax(120px,1fr));border-left:1px solid #d9dee4;border-top:1px solid #d9dee4;overflow:auto}
.cal-head{padding:8px;background:#eef2f5;font-weight:800;text-align:center;border-right:1px solid #d9dee4;border-bottom:1px solid #d9dee4}
.cal-week-head{font-size:10px;color:#56616c}
.cal-week-number{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:115px;padding:4px 2px;border-right:1px solid #d9dee4;border-bottom:1px solid #d9dee4;background:#eef2f5;color:#4e5964;text-align:center}
.cal-week-number span{font-size:8px;font-weight:800;line-height:1}
.cal-week-number strong{font-size:12px;line-height:1}
.cal-day{min-height:115px;padding:7px;border-right:1px solid #d9dee4;border-bottom:1px solid #d9dee4;background:#fff}.cal-empty{background:#f7f8f9}.cal-day.today{box-shadow:inset 0 0 0 2px #376f61}
.cal-date{display:flex;justify-content:space-between;gap:4px;margin-bottom:6px}.cal-date span{font-size:9px;color:#a15c00;text-align:right}
.cal-event{font-size:10px;font-weight:700;padding:4px 5px;border-radius:5px;margin:3px 0;overflow:hidden;text-overflow:ellipsis}
.vac-status,.calendar-legend span{display:inline-block;padding:4px 7px;border-radius:999px;font-size:11px;font-weight:800}
.status-requested{background:#fff3cd;color:#7a5400}.status-booked{background:#e8f1ff;color:#184b85}.status-approved{background:#dcfce7;color:#17633a}.status-recorded{background:#dff7ec;color:#17633a}.status-rejected{background:#fee2e2;color:#991b1b}.status-cancelled{background:#eceff1;color:#5f6670}
.calendar-legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.inline-form{display:inline-flex;gap:6px;align-items:center}.inline-form select{min-width:130px}
@media(max-width:900px){.dashboard-grid-2{grid-template-columns:1fr}.vacation-calendar{grid-template-columns:36px repeat(7,minmax(95px,1fr))}}

/* v2.3 – Drag & Drop in der Einsatzplanung */
.draggable-shift[draggable="true"]{cursor:grab;user-select:none}
.draggable-shift[draggable="true"]:active{cursor:grabbing}
.draggable-shift.is-dragging{opacity:.42;outline:2px dashed #376f61;outline-offset:2px}
.planning-drag-active .drop-zone{transition:background .1s ease,box-shadow .1s ease}
.planning-drag-active .drop-zone:not(.drag-over){background-image:linear-gradient(rgba(55,111,97,.035),rgba(55,111,97,.035))}
.drop-zone.drag-over{background:#eaf7f1!important;box-shadow:inset 0 0 0 3px #376f61!important}
.drop-zone.drag-over:after{content:"Hier ablegen";position:absolute;left:6px;right:6px;bottom:5px;padding:3px 5px;border-radius:5px;background:#376f61;color:#fff;font-size:10px;font-weight:800;text-align:center;pointer-events:none}
.planning-drop-saving{cursor:wait}
.planning-drop-saving .draggable-shift{pointer-events:none}
.drag-help{margin:10px 0 14px}
@media (hover:none),(pointer:coarse){
  .draggable-shift[draggable="true"]{cursor:pointer}
}

/* v2.4 – Monats-/Jahresumschalter und Export im Urlaubskalender */
.vacation-toolbar-card{padding-top:10px;padding-bottom:10px}
.vacation-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.view-switch,.export-switch{display:flex;gap:7px;flex-wrap:wrap}
.vacation-year-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}
.vacation-mini-month{border:1px solid #d7dde4;border-radius:10px;padding:8px;background:#fff;min-width:0}
.mini-month-title{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px}
.mini-month-title a{font-size:10px}
.mini-calendar{display:grid;grid-template-columns:24px repeat(7,minmax(0,1fr))}
.mini-cal-head,.mini-cal-day{border:1px solid #e2e7eb;margin:-1px 0 0 -1px;min-width:0}
.mini-cal-head{padding:3px 1px;text-align:center;font-size:9px;font-weight:800;background:#eef2f5}
.mini-cal-week-head{font-size:7px;color:#56616c}
.mini-cal-week-number{display:flex;align-items:center;justify-content:center;min-width:0;min-height:52px;padding:1px;border:1px solid #e2e7eb;margin:-1px 0 0 -1px;background:#eef2f5;color:#56616c;font-size:7px;font-weight:900}
.mini-cal-day{min-height:52px;padding:3px;font-size:9px;overflow:hidden}
.mini-cal-day.today{box-shadow:inset 0 0 0 2px #376f61}
.mini-cal-empty{background:#f7f8f9}
.mini-event-stack{display:grid;gap:2px;margin-top:2px}
.mini-vac-event{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px;padding:1px 2px;font-size:7px;font-weight:700}
.mini-more{font-size:7px;color:#667085}
@media(max-width:1100px){.vacation-year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.vacation-year-grid{grid-template-columns:1fr}.vacation-toolbar{align-items:stretch}.view-switch,.export-switch{width:100%}}
@media print{.vacation-toolbar-card{display:none!important}}

/* v2.5 – Ist-Zeiten und rollenbezogene Hilfe */
.time-explanation p{margin:8px 0;line-height:1.5}
.positive-diff{font-weight:800;color:#17633a}
.negative-diff{font-weight:800;color:#991b1b}
.help-intro{margin-bottom:14px}
.help-intro h2{margin-top:0}
.help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.help-section{min-width:0}
.help-section h3{margin-top:0}
.help-section p,.help-section li,.help-section dd{line-height:1.5}
.help-section ul{margin:8px 0 0;padding-left:20px}
.help-defs{display:grid;grid-template-columns:90px 1fr;gap:7px 12px;margin:12px 0}
.help-defs dt{font-weight:800}
.help-defs dd{margin:0}
@media(max-width:900px){.help-grid{grid-template-columns:1fr}}

/* v2.6 – Urlaubseinträge direkt öffnen/bearbeiten */
.vacation-entry{cursor:pointer;border:0;font:inherit;text-align:left;width:100%}
.cal-event.vacation-entry{display:block}
.mini-vac-event.vacation-entry{display:block;appearance:none}
.vacation-entry:hover{outline:2px solid rgba(55,111,97,.35);outline-offset:1px}
.vacation-list-row{cursor:pointer}
.vacation-list-row:hover td{background:#f6faf8}
.vacation-modal .planner-modal-dialog{width:min(860px,96vw)}
#vacationStatusReasonWrap{border-left:3px solid #a15c00;padding-left:12px}

/* v2.7 – intelligenter Planungsvorschlag */
.smart-planner-card{margin:14px 0;border:1px solid #b9cec7}
.smart-planner-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.smart-planner-head h3{margin:0 0 4px}
.smart-switch{display:flex;align-items:center;gap:9px;cursor:pointer;user-select:none}
.smart-switch input{position:absolute;opacity:0;pointer-events:none}
.smart-switch-ui{width:44px;height:24px;border-radius:999px;background:#cfd6da;position:relative;transition:.16s}
.smart-switch-ui:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.16s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.smart-switch input:checked+.smart-switch-ui{background:#376f61}
.smart-switch input:checked+.smart-switch-ui:after{transform:translateX(20px)}
.smart-criteria{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}
.smart-criteria span{font-size:11px;font-weight:700;padding:5px 8px;border-radius:999px;background:#eef3f1;border:1px solid #d4e0dc}
.suggestion-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.choice-card{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid #d6dde1;border-radius:10px;cursor:pointer}
.choice-card:has(input:checked){border-color:#376f61;background:#f3f9f6}
.choice-card input{margin-top:3px}
.choice-card span{display:grid;gap:3px}.choice-card small{color:#667085;line-height:1.35}
.smart-planner-note{margin:10px 0 12px}
.suggestion-preview{margin-top:18px;padding-top:16px;border-top:2px solid #dce6e2}
.suggestion-warnings{margin:12px 0;padding:12px;border:1px solid #f0c36d;background:#fff8e7;border-radius:8px}
.suggestion-warnings ul{margin:7px 0 0;padding-left:20px}
.suggestion-table th,.suggestion-table td{white-space:nowrap}
.suggestion-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-top:14px}
.suggestion-actions form:first-child{flex:1 1 420px}
.suggestion-method{margin-top:12px;line-height:1.45}
.suggestion-block{border:2px dashed #376f61!important;background:#eef8f4!important;opacity:.9}
.suggestion-block strong{font-size:10px;text-transform:uppercase;letter-spacing:.03em}
@media(max-width:760px){.suggestion-mode-grid{grid-template-columns:1fr}}

/* v2.9 – Heute-Schalter in zeitbezogenen Ansichten */
.date-nav{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.today-btn{font-weight:800}
.today-btn:not(.primary){border-color:#9db5ad;background:#f6faf8}
@media(max-width:650px){.date-nav{width:100%;justify-content:flex-start}}


/* v3.0 – zentraler Begründungsdialog */
.pep-reason-modal{
  display:none;
  position:fixed;
  inset:0;
  z-index:20000;
  background:rgba(15,23,42,.48);
  padding:24px;
  align-items:center;
  justify-content:center
}
.pep-reason-modal.open{display:flex}
.pep-reason-dialog{
  width:min(620px,96vw);
  max-height:90vh;
  overflow:auto;
  background:var(--panel);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:12px;
  padding:18px;
  box-shadow:0 24px 60px rgba(15,23,42,.24)
}
.pep-reason-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.pep-reason-head strong{font-size:18px}
.pep-reason-close{border:0;background:transparent;font-size:25px;line-height:1;cursor:pointer;color:var(--muted);padding:2px 6px}
.pep-reason-message{line-height:1.5;margin:10px 0 14px}
.pep-reason-error{min-height:18px;margin-top:5px;color:var(--danger);font-weight:700}
.pep-reason-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}

/* v3.0 – Ein-/Ausblenden einzelner Ein- und Ausgabeblöcke */
.collapsible-block{position:relative}
.collapse-heading{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.collapse-toggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  min-width:28px;
  padding:0;
  border:1px solid var(--line);
  border-radius:6px;
  background:#fff;
  color:var(--text);
  font-size:17px;
  line-height:1;
  cursor:pointer;
  vertical-align:middle
}
.collapse-toggle:hover{background:#f0f4f2}
.collapsible-block.collapsed > :not(h2):not(h3):not(.top):not(.smart-planner-head){
  display:none!important
}
.collapsible-block.collapsed{padding-bottom:10px}
.planning-group.collapsed{padding-bottom:0}
.planning-group .collapse-heading{margin-bottom:0}
.theme-admin .collapse-toggle,.theme-admin .pep-reason-dialog{border-radius:2px}
@media(max-width:600px){
  .pep-reason-modal{padding:10px}
  .pep-reason-actions .btn{flex:1 1 auto;text-align:center}
}

/* v3.1 – gemeinsamer Abwesenheitskalender */
.absence-calendar-entry{border-left-width:5px!important;border-left-style:solid!important}
.type-vacation{--absence-type-color:#2176ae}
.type-timeoff_request{--absence-type-color:#7c3aed}
.type-sick{--absence-type-color:#c2410c}
.type-unavailable{--absence-type-color:#475467}
.absence-calendar-entry.type-vacation{border-left-color:#2176ae!important}
.absence-calendar-entry.type-timeoff_request{border-left-color:#7c3aed!important}
.absence-calendar-entry.type-sick{border-left-color:#c2410c!important}
.absence-calendar-entry.type-unavailable{border-left-color:#475467!important}
.absence-type-badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:800;border:1px solid #d7dde4;background:#f8fafc}
.absence-type-badge.type-vacation{border-color:#9ec8e5;background:#eef7fc}
.absence-type-badge.type-timeoff_request{border-color:#c4b5fd;background:#f5f3ff}
.absence-type-badge.type-sick{border-color:#fdba74;background:#fff7ed}
.absence-type-badge.type-unavailable{border-color:#98a2b3;background:#f2f4f7}
.type-legend span{border-left:5px solid var(--absence-type-color,#888);border-radius:5px!important}
.absence-calendar-legends{display:grid;gap:5px;margin-top:10px}
.absence-calendar-legends .calendar-legend{margin-top:0}
.absence-bar.type-vacation{background:#2176ae}
.absence-bar.type-timeoff_request{background:#7c3aed}
.absence-bar.type-sick{background:#c2410c}
.absence-bar.type-unavailable{background:#475467}
.calendar-illness-field,.calendar-edit-illness-field{transition:opacity .12s ease}


/* v3.2 – vollständige mobile Hauptnavigation */
.sidebar-head{display:block}
.mobile-sidebar-close,
.mobile-menu-bar,
.mobile-nav-backdrop,
.mobile-sidebar-account{display:none}

@media(max-width:900px){
  .shell{display:block;min-height:100vh}
  .main{padding:10px;padding-top:0;min-width:0}

  .mobile-menu-bar{
    display:flex;
    position:sticky;
    top:0;
    z-index:12000;
    align-items:center;
    gap:12px;
    min-height:62px;
    margin:0 -10px 12px;
    padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;
    background:var(--panel);
    border-bottom:1px solid var(--line);
    box-shadow:0 3px 12px rgba(15,23,42,.08)
  }

  .mobile-menu-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    min-height:44px;
    min-width:84px;
    padding:8px 11px;
    border:1px solid var(--line);
    border-radius:9px;
    background:#fff;
    color:var(--text);
    font:inherit;
    font-weight:800;
    cursor:pointer
  }

  .hamburger-icon{
    display:grid;
    gap:3px;
    width:18px
  }
  .hamburger-icon span{
    display:block;
    height:2px;
    border-radius:2px;
    background:currentColor
  }

  .mobile-page-title{
    min-width:0;
    display:grid;
    gap:1px;
    line-height:1.2
  }
  .mobile-page-title>span{
    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.06em;
    color:var(--muted);
    font-weight:800
  }
  .mobile-page-title>strong{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:15px
  }

  .desktop-page-head{display:none!important}

  .sidebar{
    display:flex!important;
    flex-direction:column;
    position:fixed;
    inset:0 auto 0 0;
    z-index:15010;
    width:min(330px,88vw);
    max-width:88vw;
    height:100dvh;
    padding:calc(14px + env(safe-area-inset-top,0px)) 14px calc(14px + env(safe-area-inset-bottom,0px));
    overflow-y:auto;
    overscroll-behavior:contain;
    transform:translateX(-105%);
    transition:transform .2s ease;
    box-shadow:10px 0 32px rgba(0,0,0,.24)
  }
  .sidebar.mobile-open{transform:translateX(0)}

  .sidebar-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-bottom:12px
  }
  .sidebar .brand{
    margin:0;
    font-size:21px
  }
  .mobile-sidebar-close{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    flex:0 0 44px;
    padding:0;
    border:1px solid rgba(255,255,255,.22);
    border-radius:8px;
    background:rgba(255,255,255,.08);
    color:#fff;
    font-size:28px;
    line-height:1;
    cursor:pointer
  }

  .sidebar .nav{
    flex:1 1 auto;
    display:block;
    min-height:0
  }
  .sidebar .nav a{
    display:flex;
    align-items:center;
    min-height:48px;
    margin:3px 0;
    padding:11px 13px;
    border-radius:8px;
    font-size:15px
  }

  .mobile-sidebar-account{
    display:grid;
    gap:9px;
    flex:0 0 auto;
    margin-top:16px;
    padding-top:14px;
    padding-bottom:max(4px,env(safe-area-inset-bottom,0px));
    border-top:1px solid rgba(255,255,255,.17)
  }
  .mobile-account-user{
    display:grid;
    gap:2px;
    color:#fff
  }
  .mobile-account-user span{
    font-size:12px;
    opacity:.72
  }
  .mobile-sidebar-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:7px
  }
  .mobile-sidebar-account .btn{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:44px
  }
  .mobile-logout{
    width:100%;
    box-sizing:border-box
  }

  .mobile-nav-backdrop{
    display:block;
    position:fixed;
    inset:0;
    z-index:15000;
    width:100%;
    height:100%;
    border:0;
    padding:0;
    background:rgba(15,23,42,.55);
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease
  }
  .mobile-nav-backdrop.open{
    opacity:1;
    pointer-events:auto
  }

  body.mobile-nav-open{overflow:hidden;touch-action:none}

  /* Touch-Ziele und horizontale Tabellen auf kleinen Displays */
  .btn{min-height:40px;box-sizing:border-box}
  .scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
}

@media(max-width:520px){
  .mobile-menu-bar{min-height:58px}
  .mobile-menu-toggle{min-width:76px;padding-left:9px;padding-right:9px}
  .mobile-page-title>strong{font-size:14px}
}

@media print{
  .mobile-menu-bar,.mobile-nav-backdrop,.mobile-sidebar-close,.mobile-sidebar-account{display:none!important}
}


/* v3.3 – responsive Monatsübersicht im Abwesenheitskalender */
.event-mobile{display:none}

@media(max-width:700px){
  /* Alte Mindestbreiten vollständig überschreiben: alle 7 Tage passen in den Viewport. */
  .vacation-calendar{
    width:100%;
    max-width:100%;
    grid-template-columns:28px repeat(7,minmax(0,1fr))!important;
    overflow:visible;
    border-left:1px solid #d9dee4;
    box-sizing:border-box
  }

  .vacation-calendar > *{min-width:0}

  .vacation-calendar .cal-head{
    min-width:0;
    padding:5px 0;
    font-size:10px;
    line-height:1.1
  }

  .vacation-calendar .cal-week-head{
    font-size:8px
  }

  .vacation-calendar .cal-week-number{
    min-width:0;
    min-height:72px;
    padding:2px 0;
    gap:1px;
    overflow:hidden
  }

  .vacation-calendar .cal-week-number span{
    display:none
  }

  .vacation-calendar .cal-week-number strong{
    font-size:9px
  }

  .vacation-calendar .cal-day{
    min-width:0;
    min-height:72px;
    padding:3px 2px;
    overflow:hidden
  }

  .vacation-calendar .cal-date{
    min-width:0;
    margin-bottom:3px;
    padding:0 1px;
    align-items:center
  }

  .vacation-calendar .cal-date strong{
    font-size:11px;
    line-height:1
  }

  /* Lange Feiertagsbezeichnungen würden einzelne Spalten verbreitern. */
  .vacation-calendar .cal-date span{
    display:none
  }

  .vacation-calendar .cal-event{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
    margin:2px 0;
    padding:2px 2px;
    border-radius:4px;
    border-left-width:3px!important;
    overflow:hidden;
    font-size:8px;
    line-height:1.2;
    text-align:left
  }

  .vacation-calendar .event-full{display:none}
  .vacation-calendar .event-mobile{
    display:block;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:8px;
    font-weight:800
  }

  /* Auf Mobilgeräten bleibt die Abwesenheitsart auch bei sehr schmalen Zellen eindeutig. */
  .vacation-calendar .absence-calendar-entry .event-mobile::before{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:12px;
    height:12px;
    margin-right:2px;
    padding:0 2px;
    border-radius:3px;
    background:rgba(255,255,255,.7);
    font-size:7px;
    font-weight:900;
    vertical-align:middle
  }
  .vacation-calendar .absence-calendar-entry.type-vacation .event-mobile::before{content:"U"}
  .vacation-calendar .absence-calendar-entry.type-timeoff_request .event-mobile::before{content:"F"}
  .vacation-calendar .absence-calendar-entry.type-sick .event-mobile::before{content:"K"}
  .vacation-calendar .absence-calendar-entry.type-unavailable .event-mobile::before{content:"N"}

  .absence-calendar-legends{
    font-size:10px
  }

  .absence-calendar-legends .calendar-legend{
    gap:5px
  }

  .absence-calendar-legends .calendar-legend span{
    padding:3px 5px;
    font-size:9px
  }

  /* Der komplette Kalenderblock soll niemals die mobile Hauptseite verbreitern. */
  .vacation-calendar,
  .vacation-calendar + .absence-calendar-legends{
    min-width:0
  }
}

@media(max-width:420px){
  .vacation-calendar .cal-head{
    font-size:9px;
    padding:4px 0
  }

  .vacation-calendar{
    grid-template-columns:24px repeat(7,minmax(0,1fr))!important
  }

  .vacation-calendar .cal-week-number{
    min-height:62px
  }

  .vacation-calendar .cal-week-number strong{
    font-size:8px
  }

  .vacation-calendar .cal-day{
    min-height:62px;
    padding:2px 1px
  }

  .vacation-calendar .cal-date strong{font-size:10px}

  .vacation-calendar .cal-event{
    padding:1px;
    margin:1px 0
  }

  .vacation-calendar .event-mobile{
    font-size:7px
  }

  .vacation-calendar .absence-calendar-entry .event-mobile::before{
    min-width:10px;
    height:10px;
    margin-right:1px;
    padding:0 1px;
    font-size:6px
  }
}


/* v3.4 – portalweit responsive Tabellen */
.mobile-table-hint{display:none}

@media screen and (max-width:700px){
  /* Allgemeine Tabellen werden auf Mobilgeräten zu Datensätzen in Kartenform. */
  table.mobile-card-table{
    display:block;
    width:100%;
    min-width:0!important;
    border:0;
    background:transparent
  }

  table.mobile-card-table > tbody{
    display:block;
    width:100%
  }

  table.mobile-card-table .mobile-table-header{
    display:none!important
  }

  table.mobile-card-table .mobile-table-row{
    display:block;
    width:100%;
    box-sizing:border-box;
    margin:0 0 10px;
    border:1px solid var(--line);
    border-radius:10px;
    background:var(--panel);
    overflow:hidden;
    box-shadow:0 2px 7px rgba(15,23,42,.035)
  }

  table.mobile-card-table .mobile-table-row > td,
  table.mobile-card-table .mobile-table-row > th{
    display:grid;
    grid-template-columns:minmax(104px,36%) minmax(0,1fr);
    align-items:start;
    gap:9px;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    box-sizing:border-box;
    padding:8px 9px;
    border:0;
    border-bottom:1px solid var(--line);
    background:transparent!important;
    text-align:left;
    white-space:normal!important;
    overflow-wrap:anywhere;
    word-break:normal
  }

  table.mobile-card-table .mobile-table-row > td:last-child,
  table.mobile-card-table .mobile-table-row > th:last-child{
    border-bottom:0
  }

  table.mobile-card-table .mobile-table-row > td::before,
  table.mobile-card-table .mobile-table-row > th::before{
    content:attr(data-label);
    display:block;
    min-width:0;
    color:var(--muted);
    font-size:10px;
    line-height:1.25;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.025em
  }

  table.mobile-card-table .mobile-full-cell{
    display:block!important;
    padding:10px!important
  }

  table.mobile-card-table .mobile-full-cell::before{
    display:none!important;
    content:""!important
  }

  table.mobile-card-table .inline-form{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
    min-width:0;
    gap:6px
  }

  table.mobile-card-table .inline-form select,
  table.mobile-card-table .inline-form input,
  table.mobile-card-table .inline-form textarea{
    min-width:0!important;
    width:100%
  }

  table.mobile-card-table .btn{
    max-width:100%;
    margin:1px 2px 1px 0;
    white-space:normal
  }

  table.mobile-card-table .responsible-label{
    white-space:normal
  }

  table.mobile-card-table .vac-status,
  table.mobile-card-table .absence-type-badge{
    max-width:100%;
    white-space:normal
  }

  /* Der bisherige Scroll-Container soll die Karten nicht künstlich verbreitern. */
  .scroll:has(> table.mobile-card-table){
    overflow:visible;
    width:100%;
    max-width:100%
  }

  /* Falls eine Tabelle keine verwertbare Kopfzeile besitzt, bleibt sie sicher scrollbar. */
  table.mobile-scroll-table{
    min-width:600px
  }

  /* Einsatzplanung: Matrix erhalten, aber für Touch-Bedienung optimieren. */
  .mobile-table-hint{
    display:flex;
    align-items:center;
    gap:6px;
    margin:2px 0 6px;
    color:var(--muted);
    font-size:10px;
    font-weight:700
  }

  .mobile-matrix-scroll{
    width:100%;
    max-width:100%;
    overflow-x:auto!important;
    overflow-y:visible;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    border:1px solid var(--line);
    border-radius:8px
  }

  table.mobile-matrix-table{
    width:max-content!important;
    min-width:100%!important;
    table-layout:auto
  }

  table.mobile-matrix-table th,
  table.mobile-matrix-table td{
    padding:6px 5px;
    font-size:10px
  }

  table.mobile-matrix-table tr > :first-child{
    position:sticky;
    left:0;
    z-index:4;
    width:142px;
    min-width:142px!important;
    max-width:142px;
    box-sizing:border-box;
    background:#f4f7f8!important;
    box-shadow:2px 0 4px rgba(15,23,42,.08);
    white-space:normal
  }

  table.mobile-matrix-table tr:first-child > :first-child{
    z-index:6
  }

  table.mobile-matrix-table .schedule-cell{
    min-width:96px!important;
    width:96px
  }

  table.mobile-matrix-table .block,
  table.mobile-matrix-table .absence-chip,
  table.mobile-matrix-table .rep-day{
    font-size:9px
  }

  table.mobile-matrix-table .block .small,
  table.mobile-matrix-table .absence-chip span,
  table.mobile-matrix-table .absence-chip small{
    font-size:8px
  }

  /* Die äußere Karte darf auf kleinen Displays nie breiter als das Gerät werden. */
  .card,
  .planning-group,
  .scroll{
    min-width:0;
    max-width:100%;
    box-sizing:border-box
  }
}

@media screen and (max-width:430px){
  table.mobile-card-table .mobile-table-row > td,
  table.mobile-card-table .mobile-table-row > th{
    grid-template-columns:minmax(88px,34%) minmax(0,1fr);
    gap:7px;
    padding:7px
  }

  table.mobile-card-table .mobile-table-row > td::before,
  table.mobile-card-table .mobile-table-row > th::before{
    font-size:9px
  }

  table.mobile-matrix-table tr > :first-child{
    width:126px;
    min-width:126px!important;
    max-width:126px
  }

  table.mobile-matrix-table .schedule-cell{
    min-width:88px!important;
    width:88px
  }
}

@media print{
  .mobile-table-hint{display:none!important}
}


/* v3.5 – sichtbare Aktionen im mobilen Menü */
@media(max-width:900px){
  .mobile-sidebar-section-label{
    margin-top:3px;
    color:rgba(255,255,255,.58);
    font-size:10px;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase
  }

  .mobile-sidebar-account .btn,
  .mobile-sidebar-actions .btn{
    color:#1f2937!important;
    background:#fff!important;
    border-color:rgba(255,255,255,.72)!important;
    font-weight:800!important;
    text-decoration:none!important;
    opacity:1!important
  }

  .mobile-sidebar-account .btn:hover,
  .mobile-sidebar-actions .btn:hover{
    background:#f1f5f3!important;
    color:#0f4f40!important
  }

  .mobile-theme-btn{
    gap:6px
  }

  .mobile-theme-btn.selected{
    background:#dff3ea!important;
    color:#0d5b46!important;
    border-color:#8ec9b6!important;
    box-shadow:inset 0 0 0 1px rgba(20,95,76,.12)
  }

  .mobile-logout{
    gap:7px;
    color:#9f1c16!important;
    background:#fff1f0!important;
    border-color:#f1a9a5!important
  }

  .mobile-logout:hover{
    background:#fee4e2!important;
    color:#8f1712!important
  }
}

/* v3.5 – Zoomsteuerung für horizontal wischbare mobile Strukturen */
.mobile-zoom-controls{display:none}

@media screen and (max-width:700px){
  .mobile-zoom-controls{
    display:flex;
    align-items:center;
    gap:5px;
    width:100%;
    max-width:100%;
    margin:4px 0 6px;
    padding:6px;
    border:1px solid var(--line);
    border-radius:8px;
    background:#f8faf9;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch
  }

  .mobile-zoom-title{
    flex:0 0 auto;
    margin-right:2px;
    color:var(--muted);
    font-size:10px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.03em
  }

  .mobile-zoom-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    min-width:36px;
    min-height:36px;
    padding:5px 8px;
    border:1px solid #b9c3c9;
    border-radius:7px;
    background:#fff;
    color:var(--text);
    font:inherit;
    font-size:12px;
    font-weight:800;
    cursor:pointer
  }

  .mobile-zoom-btn[data-zoom-action="out"],
  .mobile-zoom-btn[data-zoom-action="in"]{
    min-width:38px;
    font-size:20px;
    line-height:1
  }

  .mobile-zoom-value{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 58px;
    min-height:34px;
    padding:3px 5px;
    border-radius:6px;
    background:#fff;
    color:var(--text);
    font-size:11px;
    font-weight:900;
    border:1px solid #dce2e6
  }

  .mobile-zoom-fit{
    color:#0f5b49;
    border-color:#9fcabd;
    background:#edf8f4
  }

  .mobile-zoom-reset{
    color:#475467
  }

  .mobile-zoom-controls.is-reduced .mobile-zoom-value{
    background:#eef6ff;
    color:#194f86
  }

  .mobile-zoom-controls.is-enlarged .mobile-zoom-value{
    background:#fff7ed;
    color:#9a4b0a
  }

  .mobile-zoom-scroll{
    position:relative
  }

  /* Zoom darf Breite/Touchscroll des Containers nicht selbst vergrößern. */
  .mobile-zoom-scroll > table{
    transform-origin:top left
  }
}

@media(max-width:430px){
  .mobile-zoom-controls{
    gap:4px;
    padding:5px
  }
  .mobile-zoom-title{display:none}
  .mobile-zoom-btn{
    min-height:34px;
    min-width:34px;
    padding:4px 6px;
    font-size:11px
  }
  .mobile-zoom-value{
    flex-basis:52px;
    min-height:32px;
    font-size:10px
  }
}

@media print{
  .mobile-zoom-controls{display:none!important}
}


/* v3.6 – Schnellerfassung direkt über Tagesfelder im Abwesenheitskalender */
.calendar-quick-create-hint{
  display:flex;
  align-items:center;
  gap:7px;
  margin:-6px 0 10px;
  padding:7px 9px;
  border:1px dashed #9dbab1;
  border-radius:8px;
  background:#f5faf8;
  color:#356055;
  font-size:11px;
  font-weight:700
}
.calendar-quick-create-hint>span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  flex:0 0 22px;
  border-radius:50%;
  background:#376f61;
  color:#fff;
  font-size:16px;
  line-height:1
}

.calendar-day-create{
  position:relative;
  cursor:pointer;
  transition:background .12s ease,box-shadow .12s ease
}
.calendar-day-create:hover{
  background:#f2faf6!important;
  box-shadow:inset 0 0 0 2px rgba(55,111,97,.42)
}
.calendar-day-create:focus-visible{
  outline:3px solid rgba(55,111,97,.55);
  outline-offset:-3px
}

/* Vorhandene Einträge liegen funktional über der Tages-Schnellanlage. */
.calendar-day-create .vacation-entry{
  position:relative;
  z-index:2
}

.quick-absence-modal .planner-modal-dialog{
  width:min(780px,96vw)
}
.quick-create-info{
  margin:4px 0 12px;
  padding:8px 10px;
  border-radius:7px;
  background:#eef7f3;
  border:1px solid #c8ddd5;
  color:#365f54;
  font-size:11px;
  line-height:1.45
}

@media(max-width:700px){
  .calendar-quick-create-hint{
    margin-top:-3px;
    font-size:10px;
    line-height:1.35
  }

  .quick-absence-modal .planner-modal-dialog{
    width:calc(100vw - 16px);
    max-height:94dvh;
    margin:8px
  }

  .quick-absence-modal .row{
    grid-template-columns:1fr
  }

  .quick-absence-modal .planner-modal-actions{
    position:sticky;
    bottom:0;
    margin:12px -18px -18px;
    padding:10px 18px calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--panel);
    border-top:1px solid var(--line)
  }

  .quick-absence-modal .planner-modal-actions .btn{
    flex:1 1 auto
  }
}

@media print{
  .calendar-quick-create-hint{display:none!important}
}


/* v3.7 – vollständige Benutzerverwaltung */
.user-admin-intro .notice{margin-top:10px}
.user-edit-card{border-color:#9dbeb2;box-shadow:0 0 0 1px rgba(55,111,97,.08)}
.check-line{display:flex!important;align-items:center;gap:8px;font-weight:700!important;cursor:pointer}
.check-line input{width:auto!important;margin:0}
.user-form-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}
.user-actions{min-width:180px}
.user-actions .inline-form{display:inline-flex;margin:2px 0}
@media(max-width:700px){
  .user-actions{min-width:0}
  .user-actions .inline-form{display:inline-flex;width:auto}
  .user-edit-card .top{align-items:flex-start}
}


/* v3.9 – stabiler Abwesenheitskalender mit einer einzigen Schnellerfassungsform */
.calendar-fast-entry-bar{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin:-6px 0 10px;padding:8px 10px;border:1px solid #c8d9d3;border-radius:8px;
  background:#f5faf8;color:#315f53;font-size:11px
}
.calendar-quick-day{cursor:pointer;position:relative;transition:background .12s ease,box-shadow .12s ease}
.calendar-quick-day:hover{background:#f2faf6!important;box-shadow:inset 0 0 0 2px rgba(55,111,97,.35)}
.calendar-quick-day:focus-visible{outline:3px solid rgba(55,111,97,.5);outline-offset:-3px}
.calendar-quick-day .vacation-entry{position:relative;z-index:3}

.calendar-create-modal{
  display:none;position:fixed;inset:0;z-index:22000;align-items:center;justify-content:center;padding:20px;
  background:rgba(15,23,42,.52)
}
.calendar-create-modal.open{display:flex}
.calendar-create-modal-dialog{
  width:min(820px,96vw);max-height:92vh;overflow:auto;background:var(--panel);color:var(--text);
  border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 70px rgba(15,23,42,.28)
}
.calendar-create-modal-head{
  position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:14px 16px;background:var(--panel);border-bottom:1px solid var(--line)
}
.calendar-create-modal-head>div{display:grid;gap:2px}
.calendar-create-modal-close{
  display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:0 0 40px;padding:0;
  border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font-size:25px;line-height:1;cursor:pointer
}
.calendar-create-modal-body{padding:16px}
.calendar-create-card.inside-calendar-modal{margin:0;padding:0;border:0;box-shadow:none;background:transparent}
.calendar-create-card.inside-calendar-modal>h3{display:none}
body.calendar-modal-open{overflow:hidden}

@media(max-width:700px){
  .calendar-fast-entry-bar{align-items:stretch}
  .calendar-fast-entry-bar .btn{width:100%;text-align:center}
  .calendar-create-modal{align-items:flex-end;padding:0}
  .calendar-create-modal-dialog{width:100%;max-width:none;max-height:94dvh;border-radius:14px 14px 0 0}
  .calendar-create-modal-body{padding:12px}
  .calendar-create-modal-body .row{grid-template-columns:1fr}
}
@media print{
  .calendar-fast-entry-bar,.calendar-create-modal{display:none!important}
}


/* v4.0 – Einsatzplanung mobil komplett neu */
.planning-mobile-board,
.mobile-planning-help{display:none}

@media screen and (max-width:760px){
  /* Desktop-Matrix und alte Wisch-/Zoomhilfen in der Einsatzplanung verschwinden mobil vollständig. */
  .planning-group .planning-desktop-matrix{
    display:none!important
  }
  .planning-group > .mobile-table-hint,
  .planning-group > .mobile-zoom-controls{
    display:none!important
  }
  .desktop-planning-help{display:none!important}
  .mobile-planning-help{display:block!important}

  /* Oberer Wochenkopf wird kompakt und touchfreundlich. */
  .main > .card > .top{
    align-items:flex-start;
    flex-direction:column
  }
  .main > .card > .top .date-nav{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr 1fr;
    gap:6px
  }
  .main > .card > .top .date-nav .btn{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:0;
    padding:8px 5px;
    text-align:center;
    font-size:11px
  }

  .planning-group{
    margin:14px 0 18px;
    padding:0;
    border:0;
    background:transparent
  }
  .planning-group > h3{
    margin:14px 0 8px!important;
    padding:0 2px;
    font-size:16px
  }

  .planning-mobile-board{
    display:grid;
    gap:10px
  }

  .mobile-plan-employee{
    min-width:0;
    overflow:hidden;
    border:1px solid var(--line);
    border-radius:12px;
    background:var(--panel);
    box-shadow:0 2px 8px rgba(15,23,42,.055)
  }

  .mobile-plan-responsible{
    border-color:#8fb9ab;
    box-shadow:0 0 0 1px rgba(55,111,97,.08),0 2px 8px rgba(15,23,42,.055)
  }

  .mobile-plan-placeholder{
    border-style:dashed;
    background:#fafbfc
  }

  .mobile-plan-employee-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:8px;
    padding:11px 12px;
    background:#f5f7f8;
    border-bottom:1px solid var(--line)
  }

  .mobile-plan-responsible .mobile-plan-employee-head{
    background:#eef7f3
  }

  .mobile-plan-identity{
    min-width:0;
    font-size:14px;
    font-weight:800;
    line-height:1.3
  }
  .mobile-plan-identity .responsible-label{
    margin-bottom:3px;
    white-space:normal
  }
  .mobile-plan-identity .small{
    margin-top:2px;
    font-size:10px
  }

  .mobile-plan-employee-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 36px;
    width:36px;
    height:36px;
    padding:0;
    border:1px solid var(--line);
    border-radius:8px;
    background:#fff;
    color:var(--text);
    font-size:18px;
    cursor:pointer
  }

  .mobile-plan-summary{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1px;
    background:var(--line);
    border-bottom:1px solid var(--line)
  }

  .mobile-plan-summary-item{
    min-width:0;
    padding:7px 6px;
    background:var(--panel);
    text-align:center
  }
  .mobile-plan-summary-item>span{
    display:block;
    margin-bottom:2px;
    color:var(--muted);
    font-size:8px;
    line-height:1.15;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.02em
  }
  .mobile-plan-summary-item>strong{
    display:block;
    min-width:0;
    font-size:11px;
    line-height:1.25;
    overflow-wrap:anywhere
  }
  .mobile-plan-summary-item .badge{
    display:block;
    margin-top:3px;
    padding:2px 4px;
    font-size:8px;
    white-space:normal
  }
  .mobile-plan-summary-item .small{
    display:block;
    margin-top:2px;
    font-size:8px
  }

  .mobile-plan-week{
    display:grid;
    gap:0
  }

  .mobile-plan-day{
    min-width:0;
    border-bottom:1px solid var(--line);
    background:#fff
  }
  .mobile-plan-day:last-child{border-bottom:0}

  .mobile-plan-day-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-height:35px;
    padding:6px 9px;
    background:#f8fafb;
    border-bottom:1px solid #edf0f2
  }
  .mobile-plan-day-head>strong{
    min-width:0;
    font-size:11px;
    line-height:1.2
  }
  .mobile-plan-day-action{
    flex:0 0 auto;
    color:var(--accent);
    font-size:9px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.025em
  }

  .mobile-plan-day-content{
    display:grid;
    gap:5px;
    min-width:0;
    padding:7px 9px
  }

  .mobile-plan-day-editable{
    cursor:pointer
  }
  .mobile-plan-day-editable:active{
    background:#edf8f4
  }
  .mobile-plan-day-editable:focus-visible{
    outline:3px solid rgba(55,111,97,.45);
    outline-offset:-3px
  }
  .mobile-plan-day-absence .mobile-plan-day-head{
    background:#fff9ed
  }

  .mobile-plan-day-content .block{
    margin:0;
    padding:7px 8px;
    border-radius:7px;
    font-size:12px;
    line-height:1.3
  }
  .mobile-plan-day-content .block .small{
    font-size:9px
  }
  .mobile-plan-day-content .absence-chip,
  .mobile-plan-day-content .rep-day{
    margin:0;
    font-size:10px
  }
  .mobile-plan-day-content .conflict{
    font-size:9px;
    line-height:1.3
  }
  .mobile-plan-day-content .suggestion-block{
    border-width:1px!important
  }

  .mobile-plan-day-empty{
    padding:5px 0;
    color:var(--muted);
    font-size:10px;
    font-style:italic
  }

  .mobile-plan-missing-note{
    padding:12px;
    color:var(--muted);
    font-size:11px
  }

  .mobile-plan-employee-collapsed .mobile-plan-summary,
  .mobile-plan-employee-collapsed .mobile-plan-week{
    display:none
  }
  .mobile-plan-employee-collapsed .mobile-plan-employee-head{
    border-bottom:0
  }

  /* Planungsdialog wie ein mobiles Bottom-Sheet. */
  #cellPlannerModal{
    align-items:flex-end
  }
  #cellPlannerModal .planner-modal-dialog{
    width:100%;
    max-width:none;
    max-height:94dvh;
    margin:0;
    border-radius:15px 15px 0 0
  }
  #cellPlannerModal .planner-modal-head{
    position:sticky;
    top:0;
    z-index:3;
    background:var(--panel);
    border-bottom:1px solid var(--line)
  }
  #cellPlannerModal .row{
    grid-template-columns:1fr
  }
  #cellPlannerModal .planner-modal-actions{
    position:sticky;
    bottom:0;
    z-index:3;
    margin:12px -18px -18px;
    padding:10px 18px calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--panel);
    border-top:1px solid var(--line)
  }
  #cellPlannerModal .planner-modal-actions .btn{
    flex:1 1 120px;
    text-align:center
  }

  /* Wochenvorgaben und Vorschlagsmodus bleiben kompakt. */
  .week-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr))!important
  }
  .week-kpi{
    min-width:0
  }
  .week-kpi span{font-size:9px}
  .week-kpi strong{font-size:12px}

  .smart-planner-head{
    gap:10px
  }
  .smart-switch{
    width:100%;
    justify-content:space-between
  }
}

@media screen and (max-width:430px){
  .mobile-plan-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .mobile-plan-employee-head{
    padding:9px 10px
  }
  .mobile-plan-day-head{
    padding:6px 8px
  }
  .mobile-plan-day-content{
    padding:6px 8px
  }
}

/* Desktop: neue mobile Struktur nie anzeigen. */
@media screen and (min-width:761px){
  .planning-mobile-board{display:none!important}
  .mobile-planning-help{display:none!important}
}


/* v4.1 – Löschen von Abwesenheitseinträgen */
#vacationDeleteButton{
  margin-left:auto
}
@media(max-width:700px){
  #vacationDeleteButton{
    margin-left:0
  }
}


/* v4.2 – intelligente Auswirkungsprüfung bei Abwesenheiten */
.absence-impact-panel{
  margin:10px 0 12px;
  border:1px solid #d5dde2;
  border-left:5px solid #8b98a5;
  border-radius:9px;
  background:#f8fafb;
  overflow:hidden
}
.absence-impact-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 10px;
  border-bottom:1px solid rgba(0,0,0,.06)
}
.absence-impact-state{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  padding:3px 7px;
  border-radius:999px;
  background:#eef1f3;
  font-size:10px;
  font-weight:900
}
.absence-impact-body{
  padding:9px 10px;
  line-height:1.45
}
.absence-impact-summary{margin-bottom:6px}
.absence-impact-list{
  margin:6px 0;
  padding-left:20px
}
.absence-impact-list li{
  margin:4px 0
}
.absence-impact-meta{
  margin-top:6px;
  padding-top:5px;
  border-top:1px dashed rgba(0,0,0,.10);
  color:var(--muted);
  font-size:9px
}
.absence-impact-panel.impact-ok{
  border-left-color:#14804a;
  background:#f0faf5
}
.absence-impact-panel.impact-ok .absence-impact-state{
  background:#dcfae6;
  color:#067647
}
.absence-impact-panel.impact-info{
  border-left-color:#2878b5;
  background:#f2f8fc
}
.absence-impact-panel.impact-info .absence-impact-state{
  background:#e3f1fb;
  color:#185c8d
}
.absence-impact-panel.impact-warn{
  border-left-color:#d28a08;
  background:#fff9ed
}
.absence-impact-panel.impact-warn .absence-impact-state{
  background:#fff0d6;
  color:#8a4b00
}
.absence-impact-panel.impact-critical{
  border-left-color:#c4322b;
  background:#fff4f3
}
.absence-impact-panel.impact-critical .absence-impact-state{
  background:#fee4e2;
  color:#b42318
}
.absence-impact-panel.impact-loading{
  opacity:.82
}
.impact-item-critical{font-weight:800;color:#9f1c16}
.impact-item-warn{font-weight:700;color:#8a4b00}
.impact-item-info{color:#365e7d}
.impact-item-ok{color:#067647}

@media(max-width:700px){
  .absence-impact-head{
    align-items:flex-start
  }
  .absence-impact-state{
    font-size:9px
  }
}


/* v4.3 – Stornierungsanträge genehmigter Abwesenheiten */
.cancellation-request-badge{
  display:inline-block;
  margin-top:4px;
  padding:3px 7px;
  border-radius:999px;
  background:#fff0d6;
  color:#8a4b00;
  font-size:9px;
  font-weight:900
}
.cancellation-request-badge.rejected{
  background:#f1f3f5;
  color:#59636e
}
.cancellation-request-area{
  padding:10px;
  border:1px solid #e6c88f;
  border-radius:9px;
  background:#fffaf0
}
.cancellation-request-status{
  margin-top:10px;
  padding:10px;
  border-radius:9px;
  border:1px solid #d7dde4;
  background:#f8fafc
}
.cancellation-request-status.pending{
  border-color:#e6c88f;
  background:#fff9ed;
  color:#7a4700
}
.cancellation-request-status.rejected{
  border-color:#d9dde2;
  background:#f6f7f8;
  color:#59636e
}
.cancellation-request-status.approved{
  border-color:#a8d4bf;
  background:#effaf4;
  color:#086845
}
.warn-btn{
  background:#fff0d6!important;
  color:#8a4b00!important;
  border-color:#e1b768!important
}


/* v4.4 – Abwesenheitskalender ohne Plus-Platzhaltersymbole */
.calendar-quick-day::after,
.calendar-day-create::after{
  content:none!important;
  display:none!important
}


/* v4.5 – Mitarbeiterverwaltung und zentrale Tätigkeitsvorgaben */
.employee-admin-overview .top{align-items:flex-start}
.employee-counts{display:flex;gap:6px;flex-wrap:wrap}
.employee-filter-nav{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.employee-form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.employee-actions{min-width:280px}
.employee-actions .inline-form{display:inline-flex;margin:2px 0}
.employee-deleted-row{opacity:.76}
.employee-deleted-row td{background:#fafafa}

.function-title-field input{font-weight:700}
.function-catalog-dialog{
  width:min(620px,calc(100vw - 28px));
  padding:0;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel);
  color:var(--text);
  box-shadow:0 24px 70px rgba(15,23,42,.28)
}
.function-catalog-dialog::backdrop{background:rgba(15,23,42,.54)}
.function-dialog-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:14px 16px;border-bottom:1px solid var(--line)
}
.function-dialog-body{padding:16px}
.function-dialog-body p:first-child{margin-top:0}
.function-dialog-actions{
  display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;
  padding:12px 16px;border-top:1px solid var(--line)
}

.function-catalog-add{
  display:flex;
  align-items:flex-end;
  gap:10px;
  margin:14px 0
}
.function-catalog-add .field{flex:1;margin:0}
.function-catalog-list{
  display:grid;
  gap:7px;
  margin:10px 0
}
.function-catalog-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc
}

@media(max-width:700px){
  .employee-counts{width:100%}
  .employee-filter-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .employee-filter-nav .btn{text-align:center}
  .employee-actions{min-width:0}
  .employee-actions .inline-form{display:inline-flex;width:auto}
  .function-catalog-add{display:grid;grid-template-columns:1fr}
  .function-catalog-add .btn{width:100%}
  .function-catalog-item{align-items:flex-start;flex-direction:column}
  .function-dialog-actions{display:grid;grid-template-columns:1fr}
  .function-dialog-actions .btn{width:100%}
}


/* v4.6 – inaktive Mitarbeiter in historischen Planungen */
.historical-employee-row{
  opacity:.82
}
.historical-employee-row>th{
  background:#f4f5f6!important
}
.historical-employee-row .schedule-cell{
  background:#fafafa
}
.historical-badge{
  margin-top:4px;
  background:#e9edf1!important;
  color:#515d68!important;
  border:1px solid #ccd3da
}
.employee-status-rule{
  margin-top:12px
}
@media(max-width:760px){
  .mobile-plan-employee:has(.historical-badge){
    opacity:.86
  }
  .mobile-plan-employee:has(.historical-badge) .mobile-plan-day-action{
    display:none
  }
}


/* v4.7 – Administrationszentrale komplett neu */
.admin-intro{
  border-top:4px solid var(--accent)
}
.admin-save-notice{
  position:relative;
  margin-bottom:12px;
  font-weight:800
}
.admin-section-nav{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  margin:14px 0
}
.admin-section-nav a{
  display:inline-flex;
  align-items:center;
  min-height:36px;
  padding:7px 11px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fff;
  color:var(--text);
  text-decoration:none;
  font-size:11px;
  font-weight:800
}
.admin-section-nav a:hover{
  border-color:var(--accent);
  color:var(--accent)
}
.admin-kpi-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  margin:12px 0
}
.admin-kpi{
  display:grid;
  gap:4px;
  min-width:0;
  padding:10px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#fafbfc;
  color:var(--text);
  text-decoration:none
}
.admin-kpi span{
  color:var(--muted);
  font-size:9px;
  font-weight:800
}
.admin-kpi strong{
  font-size:20px;
  line-height:1
}
.admin-kpi:hover{
  border-color:var(--accent);
  background:#f3f8f6
}
.admin-quick-actions{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
  margin-top:12px
}

.admin-function-card{
  scroll-margin-top:12px
}
.admin-catalog-add{
  margin:14px 0
}
.admin-function-table{
  display:grid;
  gap:0;
  margin:14px 0;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:9px
}
.admin-function-table-head,
.admin-function-row{
  display:grid;
  grid-template-columns:minmax(180px,1.2fr) minmax(90px,.5fr) minmax(310px,1.7fr) minmax(100px,.5fr);
  align-items:center;
  gap:10px;
  padding:8px 10px
}
.admin-function-table-head{
  background:#eef2f4;
  color:var(--muted);
  font-size:9px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.03em
}
.admin-function-row{
  border-top:1px solid var(--line);
  background:#fff
}
.admin-function-row:first-of-type{
  border-top:0
}
.admin-function-name{
  min-width:0;
  overflow-wrap:anywhere
}
.admin-function-rename{
  display:grid;
  grid-template-columns:minmax(130px,1fr) auto auto;
  align-items:center;
  gap:6px
}
.admin-function-rename input[type="text"],
.admin-function-rename input:not([type]){
  min-width:0
}
.compact-check{
  white-space:nowrap;
  font-size:9px!important
}
.admin-existing-titles{
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid var(--line)
}
.admin-uncatalogued-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px
}
.admin-uncatalogued-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 10px;
  border:1px solid #e3c990;
  border-radius:8px;
  background:#fffaf0
}
.admin-empty-state{
  display:grid;
  gap:4px;
  padding:14px;
  border:1px dashed #b7c0c8;
  border-radius:9px;
  background:#fafbfc;
  color:var(--muted)
}
.admin-empty-state strong{
  color:var(--text)
}

.admin-settings-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 14px;
  margin-top:12px
}
.admin-setting-field{
  margin:0;
  padding:10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc
}
.admin-setting-field label{
  margin-bottom:5px
}
.admin-setting-field .small{
  margin-top:5px;
  line-height:1.35
}
.admin-form-actions{
  display:flex;
  justify-content:flex-end;
  margin-top:12px
}

.admin-system-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin:12px 0
}
.admin-system-grid>div{
  display:grid;
  gap:3px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc
}
.admin-system-grid span{
  color:var(--muted);
  font-size:9px;
  font-weight:800
}
.admin-system-grid strong{
  overflow-wrap:anywhere
}
.admin-schema-checks{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  margin:12px 0
}
.admin-schema-row{
  display:flex;
  align-items:center;
  gap:9px;
  padding:8px 9px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fff
}

#taetigkeitsvorgaben,
#einsatzplanung,
#ausgabe,
#sicherheit,
#system{
  scroll-margin-top:10px
}

@media(max-width:1100px){
  .admin-kpi-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))
  }
  .admin-function-table-head{
    display:none
  }
  .admin-function-row{
    grid-template-columns:1fr auto;
    padding:11px
  }
  .admin-function-rename{
    grid-column:1/-1;
    grid-template-columns:minmax(150px,1fr) auto auto
  }
}

@media(max-width:700px){
  .admin-section-nav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .admin-section-nav a{
    justify-content:center;
    text-align:center
  }
  .admin-kpi-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .admin-quick-actions{
    display:grid;
    grid-template-columns:1fr
  }
  .admin-quick-actions .btn{
    width:100%;
    text-align:center
  }
  .admin-settings-grid{
    grid-template-columns:1fr
  }
  .admin-uncatalogued-list{
    grid-template-columns:1fr
  }
  .admin-uncatalogued-item{
    align-items:flex-start;
    flex-direction:column
  }
  .admin-uncatalogued-item form,
  .admin-uncatalogued-item .btn{
    width:100%
  }
  .admin-function-row{
    grid-template-columns:1fr
  }
  .admin-function-row>.inline-form,
  .admin-function-row>.inline-form .btn{
    width:100%
  }
  .admin-function-rename{
    grid-template-columns:1fr
  }
  .admin-function-rename .btn{
    width:100%
  }
  .compact-check{
    white-space:normal
  }
  .admin-system-grid,
  .admin-schema-checks{
    grid-template-columns:1fr
  }
  .admin-form-actions{
    justify-content:stretch
  }
  .admin-form-actions .btn{
    width:100%
  }
}


/* v4.8 – verbindliche Wochenstunden + Umsatzstatistiken */
.week-kpi.hard-limit{
  border-color:#b9c8d4;
  background:#f7fafc
}
.hard-week-limit-notice.danger,
#cellWeekHoursCheck.danger{
  border-color:#efb4af!important;
  background:#fff3f2!important;
  color:#9f1c16!important
}
.hard-week-limit-notice.ok,
#cellWeekHoursCheck.ok{
  border-color:#aad6bf!important;
  background:#f0faf5!important;
  color:#067647!important
}
#cellSaveBtn:disabled{
  opacity:.48;
  cursor:not-allowed
}

.revenue-entry-card{
  scroll-margin-top:12px
}
.revenue-week-kpis{
  margin-top:12px
}
.actual-revenue-form{
  margin-top:14px
}
.actual-week-revenue-field{
  max-width:360px
}
.daily-revenue-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:7px;
  margin:10px 0 12px
}
.daily-revenue-field{
  min-width:0;
  margin:0;
  padding:8px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc
}
.daily-revenue-field label{
  font-size:10px
}
.daily-revenue-field input{
  min-width:0
}
.revenue-reconciliation{
  margin-top:10px
}

/* Dashboard – Tagesumsatzdiagramm */
.revenue-dashboard-section{
  margin-top:0
}
.revenue-chart-card,
.revenue-stats-card,
.revenue-history-card{
  overflow:hidden
}
.revenue-daily-chart{
  display:flex;
  align-items:flex-end;
  justify-content:stretch;
  gap:8px;
  min-height:235px;
  margin:14px 0 10px;
  padding:18px 8px 0;
  border-bottom:1px solid var(--line)
}
.revenue-day-bar{
  display:grid;
  grid-template-rows:auto 150px auto auto;
  align-items:end;
  justify-items:center;
  flex:1 1 0;
  min-width:0;
  gap:4px
}
.revenue-bar-value{
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--muted);
  font-size:9px;
  font-weight:800
}
.revenue-bar-column{
  display:flex;
  align-items:flex-end;
  width:min(42px,78%);
  height:150px;
  border-radius:7px 7px 0 0;
  background:#eef2f4;
  overflow:hidden
}
.revenue-bar-column span{
  display:block;
  width:100%;
  min-height:0;
  border-radius:7px 7px 0 0;
  background:var(--accent)
}
.revenue-day-bar>strong{
  font-size:11px
}
.revenue-day-bar>small{
  color:var(--muted);
  font-size:8px
}

.revenue-stat-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin:12px 0
}
.revenue-stat-grid>div{
  display:grid;
  gap:4px;
  min-width:0;
  padding:10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc
}
.revenue-stat-grid span{
  color:var(--muted);
  font-size:9px;
  font-weight:800
}
.revenue-stat-grid strong{
  overflow-wrap:anywhere;
  font-size:15px
}
.revenue-stat-grid small{
  color:var(--muted);
  font-size:9px
}

/* Dashboard – Wochenvergleich Plan / Ist */
.revenue-history-chart{
  display:flex;
  align-items:flex-end;
  gap:10px;
  min-height:250px;
  margin-top:14px;
  padding:18px 10px 0;
  border-bottom:1px solid var(--line)
}
.revenue-history-week{
  display:grid;
  grid-template-rows:190px auto;
  align-items:end;
  justify-items:center;
  flex:1 1 0;
  min-width:0;
  gap:5px
}
.revenue-history-values{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:3px;
  width:100%;
  height:190px
}
.revenue-history-values span,
.revenue-history-values strong{
  display:block;
  width:min(24px,36%);
  min-height:0;
  border-radius:5px 5px 0 0
}
.revenue-history-values span{
  background:#b9c4cd
}
.revenue-history-values strong{
  background:var(--accent)
}
.revenue-history-week small{
  color:var(--muted);
  font-size:9px;
  font-weight:800
}
.revenue-chart-legend{
  display:flex;
  gap:16px;
  flex-wrap:wrap;
  margin:10px 0 2px;
  color:var(--muted);
  font-size:10px
}
.revenue-chart-legend span{
  display:inline-flex;
  align-items:center;
  gap:5px
}
.revenue-chart-legend i{
  display:inline-block;
  width:12px;
  height:12px;
  border-radius:3px
}
.revenue-chart-legend i.planned{
  background:#b9c4cd
}
.revenue-chart-legend i.actual{
  background:var(--accent)
}

@media(max-width:1000px){
  .daily-revenue-grid{
    grid-template-columns:repeat(4,minmax(0,1fr))
  }
}
@media(max-width:700px){
  .daily-revenue-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .revenue-daily-chart{
    gap:4px;
    min-height:190px;
    padding-left:2px;
    padding-right:2px
  }
  .revenue-day-bar{
    grid-template-rows:auto 110px auto auto
  }
  .revenue-bar-column{
    width:min(30px,86%);
    height:110px
  }
  .revenue-bar-value{
    font-size:7px;
    writing-mode:vertical-rl;
    transform:rotate(180deg);
    max-height:55px
  }
  .revenue-stat-grid{
    grid-template-columns:1fr
  }
  .revenue-history-chart{
    gap:4px;
    min-height:200px;
    padding-left:3px;
    padding-right:3px
  }
  .revenue-history-week{
    grid-template-rows:145px auto
  }
  .revenue-history-values{
    height:145px;
    gap:2px
  }
  .revenue-history-values span,
  .revenue-history-values strong{
    width:min(15px,42%)
  }
}


/* v4.9 – ISO-Kalenderwochen in Abwesenheiten */
.absence-kw-preview{display:flex;align-items:center;min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#f3f6f8;font-weight:900;color:var(--text)}
.absence-kw-preview-field{min-width:120px}
@media(max-width:700px){
  .mini-calendar{grid-template-columns:20px repeat(7,minmax(0,1fr))}
  .mini-cal-week-number{font-size:6px;padding:0}
}

/* v5.0 – Einzeltermin oder gesamte mehrtägige Terminserie löschen */
.series-delete-dialog{
  width:min(650px,calc(100vw - 28px));
  max-height:min(86vh,720px);
  padding:0;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel);
  color:var(--text);
  box-shadow:0 24px 70px rgba(15,23,42,.30)
}
.series-delete-dialog::backdrop{background:rgba(15,23,42,.56)}
.series-delete-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:14px 16px;
  border-bottom:1px solid var(--line)
}
.series-delete-body{
  display:grid;
  gap:12px;
  padding:16px;
  overflow:auto
}
.series-delete-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));
  border-top:1px solid var(--line);
  background:var(--panel)
}
.series-delete-dialog .field{margin:0}
.series-delete-dialog .notice{margin:8px 0 0}
.absence-series-delete-trigger{white-space:nowrap}

@media(max-width:700px){
  .series-delete-dialog{
    width:100%;
    max-width:none;
    max-height:92dvh;
    margin:auto 0 0;
    border-radius:15px 15px 0 0
  }
  .series-delete-actions{
    display:grid;
    grid-template-columns:1fr
  }
  .series-delete-actions .btn{width:100%;text-align:center}
}


/* v5.1 – Abwesenheitskalender: echte Wochenzeilen Mo–So mit KW in Spalte 1 */
.vacation-calendar.weekly-calendar{
  display:block!important;
  width:100%;
  max-width:100%;
  overflow-x:auto;
  border:1px solid #d9dee4;
  border-bottom:0;
  box-sizing:border-box
}
.calendar-header-row,
.calendar-week-row{
  display:grid;
  grid-template-columns:52px repeat(7,minmax(115px,1fr));
  width:100%;
  min-width:857px
}
.calendar-header-row{
  position:sticky;
  top:0;
  z-index:4
}
.calendar-header-row>*:last-child,
.calendar-week-row>*:last-child{
  border-right:0
}
.calendar-week-row{
  position:relative
}
.calendar-week-row:nth-child(even) .cal-day:not(.today):not(.cal-outside-month){
  background:#fcfdfd
}
.calendar-week-row .cal-week-number,
.calendar-week-row .cal-day,
.calendar-header-row .cal-head{
  border-bottom:1px solid #d9dee4
}
.calendar-week-row .cal-week-number{
  min-height:115px
}
.cal-week-number small{
  display:block;
  margin-top:3px;
  color:#7b8792;
  font-size:7px;
  font-weight:700;
  line-height:1
}
.cal-outside-month{
  background:#f3f5f6!important;
  color:#9aa2aa
}
.cal-outside-month .cal-date{
  opacity:.85
}
.cal-outside-month .outside-month-label{
  display:inline!important;
  color:#8a949d!important;
  font-size:8px!important;
  font-weight:700
}
.calendar-week-structure-note{
  margin:8px 0 10px;
  padding:7px 9px;
  border-left:3px solid #9db5ad;
  background:#f7faf9;
  color:#4c5963;
  font-size:10px;
  line-height:1.35
}

/* Jahresansicht ebenfalls ausdrücklich zeilenweise nach Kalenderwochen. */
.mini-calendar.weekly-mini-calendar{
  display:block!important;
  border:1px solid #e2e7eb;
  border-bottom:0
}
.mini-calendar-header-row,
.mini-calendar-week-row{
  display:grid;
  grid-template-columns:27px repeat(7,minmax(0,1fr));
  width:100%
}
.mini-calendar-header-row>*:last-child,
.mini-calendar-week-row>*:last-child{
  border-right:0
}
.mini-calendar-header-row .mini-cal-head,
.mini-calendar-week-row .mini-cal-week-number,
.mini-calendar-week-row .mini-cal-day{
  margin:0;
  border-left:0;
  border-top:0;
  border-right:1px solid #e2e7eb;
  border-bottom:1px solid #e2e7eb
}
.mini-calendar-week-row .mini-cal-week-number{
  display:flex;
  flex-direction:column;
  min-height:52px
}
.mini-cal-week-number small{
  display:block;
  margin-top:2px;
  color:#84909a;
  font-size:5px;
  font-weight:700
}
.mini-cal-outside-month{
  background:#f4f6f7!important;
  color:#a8afb6
}
.mini-cal-outside-month strong{
  font-weight:600
}

@media(max-width:700px){
  .vacation-calendar.weekly-calendar{
    overflow:visible!important
  }
  .calendar-header-row,
  .calendar-week-row{
    grid-template-columns:30px repeat(7,minmax(0,1fr));
    min-width:0;
    width:100%
  }
  .calendar-week-row .cal-week-number{
    min-height:72px
  }
  .calendar-week-row .cal-week-number span{
    display:none
  }
  .calendar-week-row .cal-week-number strong{
    font-size:9px
  }
  .calendar-week-row .cal-week-number small{
    font-size:5px;
    writing-mode:vertical-rl;
    transform:rotate(180deg)
  }
  .cal-outside-month .outside-month-label{
    display:none!important
  }
  .cal-outside-month .cal-date strong{
    color:#a9b0b6
  }
  .calendar-week-structure-note{
    font-size:9px
  }
  .mini-calendar-header-row,
  .mini-calendar-week-row{
    grid-template-columns:23px repeat(7,minmax(0,1fr))
  }
}

@media print{
  .calendar-week-structure-note{display:none!important}
}


/* v5.2 – Abwesenheitskalender konsequent horizontal / Landscape */
.calendar-landscape-shell{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  overflow-y:visible;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scrollbar-gutter:stable;
  padding-bottom:4px
}

/* Monatsansicht: eine echte breite Matrix. Keine vertikale Karten-/Listenoptik. */
.calendar-landscape-shell .vacation-calendar.weekly-calendar{
  display:block!important;
  width:100%;
  min-width:980px;
  max-width:none;
  overflow:visible!important;
  border:1px solid #d9dee4;
  border-bottom:0;
  box-sizing:border-box
}
.calendar-landscape-shell .calendar-header-row,
.calendar-landscape-shell .calendar-week-row{
  display:grid!important;
  grid-template-columns:64px repeat(7,minmax(128px,1fr))!important;
  width:100%!important;
  min-width:980px!important
}
.calendar-landscape-shell .calendar-header-row{
  position:sticky;
  top:0;
  z-index:5
}
.calendar-landscape-shell .calendar-header-row .cal-head{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:7px 5px;
  white-space:nowrap
}
.calendar-landscape-shell .calendar-week-row .cal-week-number,
.calendar-landscape-shell .calendar-week-row .cal-day{
  min-height:104px
}
.calendar-landscape-shell .calendar-week-row .cal-week-number{
  position:sticky;
  left:0;
  z-index:3;
  min-width:64px;
  background:#eef2f5!important;
  box-shadow:1px 0 0 #d9dee4
}
.calendar-landscape-shell .calendar-header-row .cal-week-head{
  position:sticky;
  left:0;
  z-index:6;
  background:#e6ecef
}
.calendar-landscape-shell .calendar-week-row .cal-week-number span{
  display:block!important;
  font-size:8px
}
.calendar-landscape-shell .calendar-week-row .cal-week-number strong{
  font-size:14px
}
.calendar-landscape-shell .calendar-week-row .cal-week-number small{
  writing-mode:horizontal-tb!important;
  transform:none!important;
  font-size:7px
}
.calendar-landscape-shell .cal-day{
  padding:6px 7px
}
.calendar-landscape-shell .cal-date strong{
  font-size:12px
}
.calendar-landscape-shell .cal-event{
  max-width:100%;
  white-space:normal;
  line-height:1.2
}
.calendar-landscape-shell .event-full{
  display:block!important
}
.calendar-landscape-shell .event-mobile{
  display:none!important
}

/* Jahresansicht: Monate ebenfalls horizontal statt untereinander gestapelt. */
.year-landscape-shell{
  margin-top:12px
}
.year-landscape-shell .vacation-year-grid{
  display:flex!important;
  flex-flow:row nowrap!important;
  align-items:flex-start;
  gap:12px;
  width:max-content;
  min-width:100%;
  margin-top:0
}
.year-landscape-shell .vacation-mini-month{
  flex:0 0 520px;
  width:520px;
  max-width:520px
}
.year-landscape-shell .mini-calendar.weekly-mini-calendar{
  width:100%;
  min-width:0
}
.year-landscape-shell .mini-calendar-header-row,
.year-landscape-shell .mini-calendar-week-row{
  grid-template-columns:34px repeat(7,minmax(58px,1fr))!important;
  min-width:0!important
}
.year-landscape-shell .mini-calendar-week-row .mini-cal-week-number{
  min-height:58px
}
.year-landscape-shell .mini-calendar-week-row .mini-cal-day{
  min-height:58px
}

.calendar-week-structure-note{
  display:flex;
  align-items:center;
  gap:4px;
  margin:8px 0 10px
}

@media(max-width:700px){
  /* Wichtig: horizontal bleibt horizontal. Kein Zusammenquetschen auf 8 Mini-Spalten. */
  .calendar-landscape-shell{
    margin-left:0;
    margin-right:0;
    overflow-x:auto!important;
    touch-action:pan-x pan-y
  }
  .calendar-landscape-shell .vacation-calendar.weekly-calendar{
    min-width:900px!important;
    width:900px!important;
    overflow:visible!important
  }
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    grid-template-columns:52px repeat(7,121px)!important;
    min-width:899px!important;
    width:899px!important
  }
  .calendar-landscape-shell .calendar-week-row .cal-week-number{
    min-width:52px;
    min-height:92px
  }
  .calendar-landscape-shell .calendar-week-row .cal-day{
    min-height:92px;
    padding:5px
  }
  .calendar-landscape-shell .calendar-week-row .cal-week-number span{
    display:block!important
  }
  .calendar-landscape-shell .cal-date span.outside-month-label{
    display:inline!important
  }
  .calendar-landscape-shell .event-full{
    display:block!important;
    font-size:9px
  }
  .calendar-landscape-shell .event-mobile{
    display:none!important
  }
  .year-landscape-shell .vacation-mini-month{
    flex-basis:470px;
    width:470px;
    max-width:470px
  }
  .calendar-week-structure-note{
    font-size:9px
  }
}

@media(max-width:420px){
  .calendar-landscape-shell .vacation-calendar.weekly-calendar{
    min-width:860px!important;
    width:860px!important
  }
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    grid-template-columns:48px repeat(7,116px)!important;
    min-width:860px!important;
    width:860px!important
  }
  .year-landscape-shell .vacation-mini-month{
    flex-basis:440px;
    width:440px;
    max-width:440px
  }
}

@media print{
  .calendar-landscape-shell{
    overflow:visible!important
  }
  .calendar-landscape-shell .vacation-calendar.weekly-calendar,
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    min-width:0!important;
    width:100%!important
  }
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    grid-template-columns:38px repeat(7,minmax(0,1fr))!important
  }
  .year-landscape-shell .vacation-year-grid{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    width:100%!important
  }
  .year-landscape-shell .vacation-mini-month{
    width:auto!important;
    max-width:none!important
  }
}


/* v5.5 – mobiler Abwesenheitskalender: responsiv und frei skalierbar */
.calendar-mobile-size-hint{font-weight:400}

@media screen and (max-width:700px){
  .calendar-zoom-controls{
    position:sticky;
    left:0;
    z-index:12;
    margin:6px 0 7px;
    background:#f4f8f6;
    border-color:#b9cec6
  }
  .calendar-zoom-controls .mobile-zoom-title{
    display:inline-flex;
    text-transform:none;
    letter-spacing:0;
    font-size:10px
  }
  .calendar-landscape-shell .vacation-calendar.weekly-calendar{
    width:max(720px,100%)!important;
    min-width:720px!important;
    max-width:none!important;
    transform-origin:top left
  }
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    grid-template-columns:48px repeat(7,minmax(96px,1fr))!important;
    width:100%!important;
    min-width:720px!important
  }
  .calendar-landscape-shell .calendar-week-row .cal-week-number{
    min-width:48px!important
  }
  .year-landscape-shell .vacation-mini-month{
    flex:0 0 clamp(300px,88vw,470px)!important;
    width:clamp(300px,88vw,470px)!important;
    max-width:470px!important
  }
  .year-landscape-shell .vacation-year-grid{
    transform-origin:top left
  }
  .calendar-landscape-shell{
    max-width:100%!important;
    overflow-x:auto!important;
    overflow-y:visible!important;
    touch-action:pan-x pan-y;
    -webkit-overflow-scrolling:touch
  }
}

@media screen and (max-width:420px){
  .calendar-landscape-shell .vacation-calendar.weekly-calendar{
    width:max(690px,100%)!important;
    min-width:690px!important
  }
  .calendar-landscape-shell .calendar-header-row,
  .calendar-landscape-shell .calendar-week-row{
    grid-template-columns:46px repeat(7,minmax(92px,1fr))!important;
    min-width:690px!important;
    width:100%!important
  }
  .calendar-landscape-shell .calendar-week-row .cal-week-number{
    min-width:46px!important
  }
}

@media print{
  .calendar-zoom-controls{display:none!important}
}

/* v5.6 – Schließkraft, Putzstunden, K2/8 und Mehrstunden */
.cleaning-shift{
  border-style:dashed!important;
  background:color-mix(in srgb, var(--panel) 82%, #f2e9c9 18%)!important
}
.cleaning-badge{
  background:#f5e9bd!important;
  color:#705600!important;
  border:1px solid #dbc879!important
}
.keyholder-status-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:7px;
  margin-top:12px
}
.keyholder-day{
  display:grid;
  gap:5px;
  padding:9px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfc;
  font-size:10px
}
.keyholder-day.ok{border-color:#a9d9bd;background:#f1faf5}
.keyholder-day.missing{border-color:#efb4af;background:#fff4f2}
.keyholder-day span{font-weight:800}
.overtime-summary-card{scroll-margin-top:12px}
.overtime-table .k28-row>td:first-child{border-left:3px solid var(--accent)}
.overtime-table .positive-diff{font-weight:900}

@media(max-width:900px){
  .keyholder-status-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:600px){
  .keyholder-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v5.8 – benutzerindividuelle Seiten-/Blockansichten */
.ui-layout-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 12px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel,#fff);
  box-shadow:0 6px 18px rgba(22,31,41,.04)
}
.ui-layout-toolbar-main,
.ui-layout-toolbar-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap
}
.ui-layout-toolbar-actions[hidden]{display:none!important}
.ui-layout-unavailable{opacity:.82}
.ui-layout-unavailable .ui-layout-edit-button{cursor:not-allowed}

.ui-customizable-block{position:relative}
.ui-block-controls{
  display:none;
  position:relative;
  align-items:center;
  gap:7px;
  margin:-4px -4px 10px;
  padding:7px 8px;
  border:1px dashed #9aa8b5;
  border-radius:9px;
  background:#f7f9fb;
  color:#354052;
  z-index:3
}
.ui-layout-editing .ui-block-controls{display:flex}
.ui-block-control-label{
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
  font-weight:800
}
.ui-block-drag{
  cursor:grab;
  user-select:none;
  font-weight:900;
  letter-spacing:-2px;
  padding:0 3px
}
.ui-block-move,
.ui-block-visibility{
  border:1px solid var(--line);
  background:#fff;
  color:inherit;
  border-radius:7px;
  min-height:30px;
  padding:4px 8px;
  font:inherit;
  font-size:10px;
  font-weight:800;
  cursor:pointer
}
.ui-block-move{min-width:32px;font-size:15px;padding:2px 7px}
.ui-block-visibility:hover,
.ui-block-move:hover{background:#eef3f7}
.ui-block-hidden{display:none!important}
.ui-layout-editing .ui-block-hidden{display:block!important}
.ui-block-hidden-preview{
  opacity:.48;
  outline:2px dashed #9aa8b5;
  outline-offset:-2px
}
.ui-block-dragging{opacity:.55;transform:scale(.995)}
.ui-block-drop-target{outline:2px solid var(--accent);outline-offset:3px}
body.ui-layout-editing .ui-customizable-block{transition:outline-color .15s,opacity .15s,transform .15s}

@media(max-width:900px){
  .ui-layout-toolbar{
    align-items:flex-start;
    flex-direction:column
  }
  .ui-layout-toolbar-main,
  .ui-layout-toolbar-actions{width:100%}
  .ui-layout-toolbar .btn{min-height:38px}
  .ui-block-controls{
    flex-wrap:wrap;
    gap:5px
  }
  .ui-block-control-label{
    flex:1 1 calc(100% - 44px);
    white-space:normal
  }
  .ui-block-drag{display:none}
  .ui-block-move,
  .ui-block-visibility{min-height:36px}
}
body.ui-layout-editing .collapsible-block.collapsed > .ui-block-controls{display:flex!important}

/* v5.9 – Wiederholungsserien und Zeit-Raster */
.absence-series-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin-top:4px;
  padding:2px 7px;
  border:1px solid var(--line);
  border-radius:999px;
  background:#f4f6f8;
  color:var(--muted);
  font-size:9px;
  font-weight:800;
  white-space:nowrap
}
.calendar-recurrence-field,
.general-recurrence-field{
  min-width:180px
}
.series-edit-notice{
  margin-top:2px
}
@media(max-width:700px){
  .absence-series-badge{font-size:8px;white-space:normal}
  .calendar-recurrence-field,.general-recurrence-field{min-width:0}
}


/* v6.0 – erweiterte Administrationszentrale */
.admin-default-reset-form,
.admin-reset-layouts-form{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid var(--border, #d9dde5);
}
.admin-default-reset-form .small,
.admin-reset-layouts-form .small{
  flex:1 1 260px;
}
#portal .admin-settings-grid,
#mitarbeiter .admin-settings-grid,
#abwesenheiten .admin-settings-grid,
#zeiten-auswertung .admin-settings-grid{
  align-items:start;
}
@media (max-width:760px){
  .admin-default-reset-form .btn,
  .admin-reset-layouts-form .btn{
    width:100%;
  }
}

/* v6.1 – horizontale, responsive Arbeitsbereich-Tabs für lange Seiten */
.workspace-tabs{
  position:sticky;
  top:8px;
  z-index:110;
  margin:0 0 16px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb,var(--panel) 96%,transparent);
  box-shadow:0 6px 18px rgba(15,23,42,.08);
  backdrop-filter:blur(8px)
}
.workspace-tabs-head{display:flex;align-items:center;gap:10px;min-width:0}
.workspace-tabs-label{display:none;font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap}
.workspace-tab-list{display:flex;gap:6px;overflow-x:auto;min-width:0;flex:1;padding:1px 1px 4px;scrollbar-width:thin}
.workspace-tab-button{
  appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--text);
  border-radius:9px;padding:8px 11px;min-height:38px;white-space:nowrap;font:inherit;font-weight:750;cursor:pointer
}
.workspace-tab-button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--panel))}
.workspace-tab-button.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 7px rgba(15,23,42,.12)}
.workspace-tab-button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:2px}
.workspace-tab-select{display:none;min-height:42px;width:100%;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);padding:7px 10px;font:inherit;font-weight:750}
.workspace-tab-panel-hidden{display:none!important}
.workspace-tabs-replaced-nav{display:none!important}
.report-tab-panel{margin-top:2px}
.report-tab-panel>h3:first-child{margin-top:4px}

/* Bei der persönlichen Layoutbearbeitung bleiben Tabs bedienbar; ausgeblendete Bereiche anderer Tabs werden nicht erneut vertikal angehängt. */
body.ui-layout-editing .workspace-tabs{z-index:120}

@media(max-width:900px){
  .workspace-tabs{top:68px;margin:0 0 10px;padding:7px;border-radius:10px}
  .workspace-tabs-head{display:grid;grid-template-columns:auto 1fr;gap:8px}
  .workspace-tabs-label{display:block}
  .workspace-tab-select{display:block}
  .workspace-tab-list{display:none}
}

@media print{
  .workspace-tabs{display:none!important}
  .workspace-tab-panel-hidden{display:block!important}
}

/* v6.2 – robuste Administrationstabs und globale Hinweistexte */
.admin-settings-tabs-shell{
  position:sticky;
  top:58px;
  z-index:115;
  margin:0 0 12px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb,var(--panel) 96%,transparent);
  box-shadow:0 5px 18px rgba(15,23,42,.08);
  backdrop-filter:blur(8px)
}
.admin-settings-tabs-shell .admin-global-standard-note{margin:0 0 8px}
.admin-settings-tabs{
  display:flex;
  flex-wrap:nowrap;
  gap:6px;
  overflow-x:auto;
  margin:0;
  padding:1px 1px 4px;
  scrollbar-width:thin
}
.admin-settings-tabs a{
  flex:0 0 auto;
  white-space:nowrap;
  min-height:38px;
  border-radius:9px
}
.admin-settings-tabs a.active,
.admin-settings-tabs a[aria-selected="true"]{
  border-color:var(--accent);
  background:var(--accent);
  color:#fff;
  box-shadow:0 2px 7px rgba(15,23,42,.13)
}
.admin-tabs-ready main.main > .admin-fixed-card.admin-settings-panel-hidden{
  display:none!important
}
.admin-fixed-card:not(.admin-intro) > .top::after{
  content:"Globaler Standard";
  flex:0 0 auto;
  align-self:flex-start;
  padding:4px 7px;
  border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,var(--accent) 8%,var(--panel));
  color:var(--accent);
  font-size:9px;
  line-height:1;
  font-weight:900;
  letter-spacing:.025em;
  text-transform:uppercase
}

/* Der globale Hinweisschalter blendet nur erklärende Texte aus.
   Warnungen, Fehler, Bestätigungen, Statusbadges und die eigene Hilfeseite bleiben sichtbar. */
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .field > .small.muted,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .admin-setting-field > .small.muted,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .card > .top .small.muted,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .card > .small.muted,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .form-hint,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .hint-text,
body[data-hints-enabled="0"]:not([data-pep-page="help"]) main.main .notice:not(.danger):not(.warn):not(.error):not(.ok):not(.admin-save-notice){
  display:none!important
}

@media(max-width:900px){
  .admin-settings-tabs-shell{top:67px;padding:8px;border-radius:10px}
  .admin-settings-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,max-content);overflow-x:auto}
  .admin-settings-tabs a{justify-content:center;text-align:center}
}

@media print{
  .admin-settings-tabs-shell{display:none!important}
  .admin-tabs-ready main.main > .admin-fixed-card.admin-settings-panel-hidden{display:block!important}
}

/* v6.3 – deutlich sichtbarer KW-Kontext auf allen Wochenansichten */
.week-context-banner{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  margin:0 0 12px;
  padding:12px 14px;
  border:2px solid color-mix(in srgb,var(--accent) 55%,var(--line));
  border-radius:12px;
  background:color-mix(in srgb,var(--accent) 8%,var(--panel));
  box-shadow:0 4px 14px rgba(15,23,42,.07)
}
.week-context-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.week-context-main{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.week-context-main strong{font-size:23px;line-height:1;color:var(--text)}
.week-context-main span{font-weight:650;color:var(--muted)}
.week-context-state{margin-left:auto;padding:5px 9px;border-radius:999px;border:1px solid var(--line);font-size:12px;font-weight:800;background:var(--panel)}
.week-context-banner.current .week-context-state{border-color:color-mix(in srgb,#16a34a 45%,var(--line));background:color-mix(in srgb,#16a34a 10%,var(--panel));color:#166534}
.workspace-week-chip{flex:0 0 auto;padding:7px 10px;border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));font-weight:850;white-space:nowrap}
.planning-status-week{font-size:17px}
.smart-planner-disabled{border-style:dashed}

@media(max-width:900px){
  .week-context-banner{gap:8px;padding:10px 11px}
  .week-context-label{width:100%}
  .week-context-main strong{font-size:20px}
  .week-context-state{margin-left:0}
  .workspace-week-chip{grid-column:1/-1;width:100%;text-align:center}
}

@media print{
  .workspace-week-chip{display:none!important}
}

/* v6.4 – robuste zusammenhängende Register-Inhaltsbereiche */
.workspace-tab-content{
  display:block;
  width:100%;
  min-width:0;
}
.workspace-tab-pane{
  display:block;
  width:100%;
  min-width:0;
}
.workspace-tab-pane[hidden],
.workspace-tab-pane.workspace-tab-panel-hidden{
  display:none!important;
}
.admin-settings-tab-content{
  display:block;
  width:100%;
  min-width:0;
}
.admin-tabs-ready .admin-settings-tab-content > .admin-fixed-card.admin-settings-panel-hidden,
.admin-tabs-ready .admin-settings-tab-content > .admin-fixed-card[hidden]{
  display:none!important;
}

/* Jahresübersicht: auf Desktop als übersichtliches Raster statt 12 Monate nebeneinander. */
.year-landscape-shell{
  overflow:visible!important;
}
.year-landscape-shell .vacation-year-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(300px,1fr))!important;
  gap:14px!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  transform:none!important;
}
.year-landscape-shell .vacation-mini-month{
  flex:none!important;
  width:auto!important;
  max-width:none!important;
  min-width:0!important;
}
.year-landscape-shell .mini-calendar.weekly-mini-calendar{
  width:100%!important;
  min-width:0!important;
}
.year-landscape-shell .mini-calendar-header-row,
.year-landscape-shell .mini-calendar-week-row{
  grid-template-columns:34px repeat(7,minmax(0,1fr))!important;
  width:100%!important;
  min-width:0!important;
}
@media(max-width:1250px){
  .year-landscape-shell .vacation-year-grid{
    grid-template-columns:repeat(2,minmax(300px,1fr))!important;
  }
}
@media(max-width:760px){
  .year-landscape-shell .vacation-year-grid{
    grid-template-columns:1fr!important;
  }
  .year-landscape-shell .vacation-mini-month{
    width:100%!important;
  }
}
@media print{
  .workspace-tab-pane[hidden],
  .workspace-tab-pane.workspace-tab-panel-hidden,
  .admin-settings-tab-content > .admin-fixed-card[hidden],
  .admin-settings-tab-content > .admin-fixed-card.admin-settings-panel-hidden{
    display:block!important;
  }
  .year-landscape-shell .vacation-year-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:7px!important;
  }
}

/* v6.4 – direkte Kartenregeln gelten auch innerhalb der neuen Reiter-Panes. */
@media(max-width:700px){
  .workspace-tab-pane > .card > .top,
  .admin-settings-tab-content > .card > .top{
    align-items:flex-start;
    flex-direction:column
  }
  .workspace-tab-pane > .card > .top .date-nav,
  .admin-settings-tab-content > .card > .top .date-nav{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr 1fr;
    gap:6px
  }
  .workspace-tab-pane > .card > .top .date-nav .btn,
  .admin-settings-tab-content > .card > .top .date-nav .btn{
    display:flex;
    align-items:center;
    justify-content:center;
    min-width:0;
    padding:8px 5px;
    text-align:center;
    font-size:11px
  }
}

/* v6.5 – Administration: serverseitige Register, keine JS-Abhängigkeit */
body[data-pep-page^="settings"] .admin-server-panel,
body[data-pep-page^="settings"] .admin-server-panel.admin-server-panel-active{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}
.admin-active-section-banner{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:0 0 10px;
  padding:10px 13px;
  border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));
  border-radius:11px;
  background:color-mix(in srgb,var(--accent) 7%,var(--panel));
}
.admin-active-section-banner span{
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.045em;
}
.admin-active-section-banner strong{
  font-size:17px;
}
.admin-active-section-banner small{
  margin-left:auto;
  color:var(--muted);
  font-weight:700;
}
body[data-pep-page^="settings"] .admin-settings-tabs a{
  text-decoration:none;
}
body[data-pep-page^="settings"] .admin-settings-tabs a.active{
  pointer-events:none;
}
@media(max-width:760px){
  .admin-active-section-banner small{width:100%;margin-left:0}
}
@media print{
  body[data-pep-page^="settings"] .admin-server-panel{
    display:block!important;
  }
  .admin-active-section-banner{display:none!important}
}


/* v6.6 – Administration: nur der aktive Reiter wird serverseitig erzeugt.
   Dadurch gibt es keine unsichtbaren Schwester-Panels und keine leeren Register durch CSS/DOM-Konflikte. */
body[data-pep-page^="settings"] .admin-server-panel{
  min-height:120px;
}
body[data-pep-page^="settings"] .admin-server-panel > form,
body[data-pep-page^="settings"] .admin-server-panel .admin-settings-grid,
body[data-pep-page^="settings"] .admin-server-panel .admin-system-grid,
body[data-pep-page^="settings"] .admin-server-panel .admin-schema-checks{
  visibility:visible!important;
  opacity:1!important;
}
.admin-settings-tabs a{
  cursor:pointer;
}
.admin-settings-tabs a.active{
  cursor:default;
}

/* v6.7 – Einsatzplan: Interaktionen bleiben auch innerhalb der Tab-Panes aktiv. */
body[data-pep-page="planning"] .workspace-tab-pane[data-workspace-tab="plan"],
body[data-pep-page="planning"] #einsatzplanung-tabellen,
body[data-pep-page="planning"] .planning-group,
body[data-pep-page="planning"] .planning-group .scroll,
body[data-pep-page="planning"] .schedule-cell.editable-cell,
body[data-pep-page="planning"] .draggable-shift[data-planning-draggable="1"]{
  pointer-events:auto!important;
}
body[data-pep-page="planning"] .schedule-cell.editable-cell[data-planning-cell="1"]{
  cursor:pointer!important;
}
body[data-pep-page="planning"] .draggable-shift[data-planning-draggable="1"][draggable="true"]{
  cursor:grab!important;
  touch-action:auto;
}
body[data-pep-page="planning"] .draggable-shift[data-planning-draggable="1"][draggable="true"]:active{
  cursor:grabbing!important;
}

/* v6.8 – robuste, vollständig sichtbare Administrations-Konfigurationsseiten */
body[data-pep-page^="settings"] .admin-config-page,
body[data-pep-page^="settings"] .admin-config-form,
body[data-pep-page^="settings"] .admin-config-section{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}
body[data-pep-page^="settings"] .admin-config-section{
  margin:16px 0 20px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
}
body[data-pep-page^="settings"] .admin-config-section h4{
  margin:0 0 12px;
  font-size:16px;
}
body[data-pep-page^="settings"] .admin-config-table{
  display:table!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%;
  border-collapse:collapse;
}
body[data-pep-page^="settings"] .admin-config-table tbody{display:table-row-group!important}
body[data-pep-page^="settings"] .admin-config-table tr{display:table-row!important}
body[data-pep-page^="settings"] .admin-config-table th,
body[data-pep-page^="settings"] .admin-config-table td{
  display:table-cell!important;
  padding:10px 9px;
  border-bottom:1px solid var(--line);
  vertical-align:middle;
  text-align:left;
}
body[data-pep-page^="settings"] .admin-config-table th{width:31%;font-weight:800}
body[data-pep-page^="settings"] .admin-config-table td:nth-child(2){width:30%}
body[data-pep-page^="settings"] .admin-config-table input,
body[data-pep-page^="settings"] .admin-config-table select{
  display:block!important;
  width:100%;
  min-width:150px;
  visibility:visible!important;
  opacity:1!important;
}
body[data-pep-page^="settings"] .admin-config-table td:last-child{
  color:var(--muted);
  font-size:12px;
  line-height:1.35;
}
.portal-week-context{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  margin:0 0 14px;
  padding:10px 13px;
  border:2px solid color-mix(in srgb,var(--accent) 38%,var(--line));
  border-radius:11px;
  background:color-mix(in srgb,var(--accent) 7%,var(--panel));
  position:sticky;
  top:0;
  z-index:108;
}
.portal-week-context-main{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.portal-week-context-main>span{font-size:11px;font-weight:850;text-transform:uppercase;color:var(--muted)}
.portal-week-context-main>strong{font-size:18px}
.portal-week-context-main>small{font-weight:700;color:var(--muted)}
.portal-week-context-actions{display:flex;gap:6px;flex-wrap:wrap}
@media(max-width:760px){
  body[data-pep-page^="settings"] .admin-config-table,
  body[data-pep-page^="settings"] .admin-config-table tbody,
  body[data-pep-page^="settings"] .admin-config-table tr,
  body[data-pep-page^="settings"] .admin-config-table th,
  body[data-pep-page^="settings"] .admin-config-table td{display:block!important;width:100%!important}
  body[data-pep-page^="settings"] .admin-config-table tr{padding:9px 0;border-bottom:1px solid var(--line)}
  body[data-pep-page^="settings"] .admin-config-table th,
  body[data-pep-page^="settings"] .admin-config-table td{border:0;padding:4px 0}
  .portal-week-context{position:static}
  .portal-week-context-actions{width:100%}
  .portal-week-context-actions .btn{flex:1 1 auto;text-align:center}
}
body[data-hints-enabled="0"][data-pep-page="settings"] .admin-config-table td:last-child{display:none!important}
body[data-hints-enabled="0"][data-pep-page="settings"] .admin-config-table th{width:48%}
body[data-hints-enabled="0"][data-pep-page="settings"] .admin-config-table td:nth-child(2){width:52%}
@media print{.portal-week-context{display:none!important}}


/* v6.9 – Einsatzbearbeitung ausschließlich als stabiles Vordergrund-Popup */
body.planner-modal-open{overflow:hidden!important}
#cellPlannerModal{
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  padding:24px!important;
  background:rgba(8,15,24,.68)!important;
  backdrop-filter:blur(2px);
}
#cellPlannerModal.open{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#cellPlannerModal .planner-modal-dialog{
  position:relative!important;
  z-index:1!important;
  width:min(940px,96vw)!important;
  max-height:92vh!important;
  overflow:auto!important;
  background:var(--card,#fff)!important;
  border:1px solid var(--border,#d8dee8)!important;
  box-shadow:0 28px 90px rgba(0,0,0,.38)!important;
}
#cellPlannerModal .planner-modal-head{
  position:sticky;
  top:-18px;
  z-index:3;
  background:var(--card,#fff);
  padding:18px 0 12px;
}
#cellPlannerModal .planner-modal-actions{
  position:sticky;
  bottom:-18px;
  z-index:3;
  background:var(--card,#fff);
  padding:14px 0 18px;
  border-top:1px solid var(--border,#d8dee8);
}
@media (max-width:700px){
  #cellPlannerModal{padding:8px!important;align-items:flex-end!important}
  #cellPlannerModal .planner-modal-dialog{
    width:100%!important;
    max-height:94vh!important;
    border-radius:16px 16px 0 0!important;
  }
}


/* v7.1 – Portal & Navigation eigenständige Konfigurationsseite */
.portal-navigation-admin-page{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}
.portal-navigation-admin-form{
  display:block!important;
}
.portal-config-group{
  margin-top:18px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--panel);
}
.portal-config-group-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
}
.portal-config-group-head h4{margin:0;font-size:17px}
.portal-config-group-head span{color:var(--muted);font-size:12px}
.portal-config-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.portal-config-item{
  display:flex!important;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  min-height:78px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--card);
  cursor:default;
}
.portal-config-copy{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}
.portal-config-copy strong{font-size:14px}
.portal-config-copy small{color:var(--muted);line-height:1.35}
.portal-config-item select{
  display:block!important;
  flex:0 0 105px;
  min-width:105px;
  visibility:visible!important;
  opacity:1!important;
}
.portal-config-status{
  margin-top:18px;
  padding:16px;
  border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));
  border-radius:14px;
  background:color-mix(in srgb,var(--accent) 5%,var(--panel));
}
.portal-config-status>strong{display:block;margin-bottom:10px}
.portal-config-status-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.portal-config-status-grid>div{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:8px 10px;
  border-radius:9px;
  background:var(--card);
  border:1px solid var(--line);
  font-size:12px;
}
.portal-config-status-grid b{
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
}
.portal-config-status-grid b.on{background:#dcfce7;color:#166534}
.portal-config-status-grid b.off{background:#fee2e2;color:#991b1b}
.portal-config-savebar{
  position:sticky;
  bottom:10px;
  z-index:20;
  margin-top:16px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb,var(--card) 94%,transparent);
  box-shadow:0 12px 28px rgba(0,0,0,.10);
}
@media(max-width:900px){
  .portal-config-grid{grid-template-columns:1fr}
  .portal-config-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .portal-config-item{align-items:flex-start;flex-direction:column}
  .portal-config-item select{width:100%;min-width:0}
  .portal-config-status-grid{grid-template-columns:1fr}
  .portal-config-group-head{align-items:flex-start;flex-direction:column}
}
