:root{--bg:#eef3fb;--bg-elevated:#dfe8f5;--surface:#fff;--surface-muted:#f6f8fc;--surface-subtle:#edf2f8;--surface-strong:#dce6f2;--border:#0f172a14;--border-light:#d7e0ec;--input-border:#c3d0e0;--text:#122033;--text-muted:#5c6d82;--accent:#3b82f6;--accent-hover:#2563eb;--header-bg:#ffffffe6;--app-background:linear-gradient(160deg, #f5f8fc 0%, #e5edf7 45%, #d5e0ee 100%);--table-head-bg:#dbe7f4;--table-head-text:#304256;--table-section-bg:#eef4fa;--table-section-text:#4f647a;--table-series-bg:#dff0ff;--table-series-text:#0b5e90;--table-divider:#c6d4e4;--radius:12px;--radius-sm:8px;--shadow:0 4px 24px #0f172a14;--shadow-lg:0 20px 50px #0f172a1f;color:var(--text);background:var(--bg);font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;font-size:15px;line-height:1.45}html[data-theme=dark]{--bg:#0f1724;--bg-elevated:#162133;--surface:#1b2738;--surface-muted:#111a27;--surface-subtle:#223246;--surface-strong:#2b4059;--border:#ffffff14;--border-light:#31465f;--input-border:#3d536d;--text:#e5eef8;--text-muted:#9fb0c5;--accent:#7cc4ff;--accent-hover:#9bd1ff;--header-bg:#121a27e6;--app-background:linear-gradient(160deg, #08111b 0%, #0f1a29 45%, #152539 100%);--table-head-bg:#243447;--table-head-text:#d7e3f0;--table-section-bg:#1d2a39;--table-section-text:#b9c9da;--table-series-bg:#133247;--table-series-text:#8ad4ff;--table-divider:#31465f;--shadow:0 4px 24px #00000047;--shadow-lg:0 20px 50px #00000061}*{box-sizing:border-box}body{background:var(--app-background);min-height:100vh;margin:0}#app{min-height:100vh}.app-shell{background:var(--surface-muted);width:100%;max-width:none;height:100vh;min-height:100vh;box-shadow:var(--shadow-lg);grid-template-rows:auto 1fr auto;grid-template-columns:minmax(260px,300px) minmax(0,1fr);margin:0;display:grid}@media (width<=960px){.app-shell{grid-template-rows:auto auto 1fr auto;grid-template-columns:1fr}.app-sidebar{border-right:none;border-bottom:1px solid var(--border-light)}}.app-header{background:var(--header-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-light);z-index:50;flex-direction:column;grid-column:1/-1;align-items:stretch;gap:0;padding:8px 18px;display:flex;position:sticky;top:0}.app-header-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;width:100%;display:flex}.app-header-search{flex:200px;min-width:160px;max-width:380px}.app-header-search-input{border:1px solid var(--input-border);border-radius:var(--radius-sm);width:100%;font:inherit;background:var(--surface);color:var(--text);padding:6px 10px;font-size:.875rem}.app-header-search-input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.appointment-search-panel{border-top:1px solid var(--border-light);width:100%;margin-top:12px;padding-bottom:4px;animation:.2s ease-out appointment-search-open}@keyframes appointment-search-open{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.appointment-search-scroll{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface);max-height:min(440px,58vh);overflow:auto;box-shadow:0 4px 18px #0f172a0f}.appointment-search-empty{color:var(--text-muted);margin:0;padding:16px 14px;font-size:.875rem}.appointment-search-table{border-collapse:collapse;width:100%;font-size:.8125rem}.appointment-search-table thead th{z-index:1;text-align:left;background:var(--table-head-bg);color:var(--table-head-text);border-bottom:1px solid var(--border-light);padding:10px 12px;font-weight:700;position:sticky;top:0}.appointment-search-section-label{text-align:left;text-transform:uppercase;letter-spacing:.08em;color:var(--table-section-text);background:var(--table-section-bg);border-bottom:1px solid var(--border-light);padding:8px 12px;font-size:.68rem;font-weight:800}.appointment-search-section--series .appointment-search-section-label{background:var(--table-series-bg);color:var(--table-series-text)}.appointment-search-divider td{background:var(--table-divider);border:none;height:2px;padding:0;font-size:0;line-height:0}.appointment-search-row{cursor:pointer;transition:background .12s}.appointment-search-row:focus{outline:2px solid var(--accent);outline-offset:-2px}.appointment-search-row:focus:not(:focus-visible){outline:none}.appointment-search-row td{border-bottom:1px solid var(--border-light);vertical-align:top;padding:10px 12px}.appointment-search-row--single:hover{background:#3b82f612}.appointment-search-row--series:hover{background:#0ea5e917}.appointment-search-row--series td:first-child{border-left:3px solid var(--accent);padding-left:9px}.app-header-nav{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.app-header h1{letter-spacing:-.02em;text-align:center;min-width:160px;margin:0;font-size:1.12rem;font-weight:700}.app-header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.app-header-menu{position:relative}.app-header-menu-trigger{justify-content:center;align-items:center;width:34px;min-width:34px;height:34px;padding:0;font-size:1.1rem;line-height:1;list-style:none;display:inline-flex}.app-header-menu-trigger::-webkit-details-marker{display:none}.app-header-menu-trigger:after{content:"";margin:0}.app-header-menu[open] .app-header-menu-trigger:after{content:""}.app-header-menu-panel{z-index:80;border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface);width:180px;box-shadow:var(--shadow-lg);flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.app-header-info-panel{width:320px;color:var(--text-muted);gap:8px;padding:12px 14px;font-size:.8rem;line-height:1.45}.app-header-info-panel p{margin:0}.app-header-info-panel strong{color:var(--text)}.btn-menu-item{text-align:left;justify-content:flex-start;width:100%;padding:7px 10px;display:flex}.menu-select-field{border-top:1px solid var(--border-light);border-bottom:1px solid var(--border-light);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;flex-direction:column;gap:5px;padding:8px 10px;font-size:.72rem;font-weight:700;display:flex}.menu-select-field select{border:1px solid var(--input-border);background:var(--surface);width:100%;color:var(--text);font:inherit;letter-spacing:0;text-transform:none;border-radius:6px;padding:6px 8px;font-size:.8rem;font-weight:600}.app-sidebar{background:var(--surface);border-right:1px solid var(--border-light);overscroll-behavior:contain;flex-direction:column;gap:16px;min-height:0;padding:20px;display:flex;overflow-y:auto}.app-sidebar h2{text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin:0 0 4px;font-size:.7rem;font-weight:700}.sidebar-hint{color:var(--text-muted);margin:0;font-size:.8rem;line-height:1.4}.sidebar-hint strong{color:var(--text)}.app-main{background:linear-gradient(#eef2f7 0%,#e8edf4 100%);min-height:0;padding:20px 24px 28px;display:flex;overflow:auto}.btn{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;color:var(--text);padding:8px 16px;font-size:.8125rem;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}.btn:hover{background:#f8fafc;border-color:#cbd5e1}.btn-ghost{box-shadow:none;color:var(--accent);background:0 0;border-color:#0000}.btn-ghost:hover{background:#3b82f614;border-color:#0000}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-small{flex-shrink:0;padding:4px 10px;font-size:.75rem}.toggle-label{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:.8rem;display:flex}.btn-theme-toggle{border-color:var(--input-border);background:var(--surface);min-width:124px;color:var(--text);font-weight:600}.btn-theme-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--surface-subtle)}.btn-danger{color:#dc2626;border-color:#dc2626}.btn-danger:hover{background:#dc262614}.employee-list{flex-direction:column;gap:4px;display:flex}.sidebar-filter-row label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:600}.sidebar-filter-select{border-radius:var(--radius-sm);border:1px solid var(--border-light);background:var(--surface-muted);width:100%;color:var(--text);margin-top:4px;padding:8px 10px;font-size:.875rem}.sidebar-filter-hint{margin-top:6px!important;font-size:.72rem!important}.employee-block-header{align-items:flex-start;gap:6px;display:flex}.employee-block-header .employee-card{flex:1;min-width:0}.btn-employee-edit{align-self:center;min-height:24px;padding:3px 8px;font-size:.7rem}.employee-card{background:var(--surface-muted);border:1px solid var(--border-light);border-radius:var(--radius-sm);cursor:grab;touch-action:none;border-left-width:4px;border-left-color:#cbd5e1;align-items:center;gap:7px;min-height:30px;padding:4px 8px;transition:box-shadow .15s,border-color .15s;display:flex}.employee-card--st-verfuegbar{background:linear-gradient(90deg, #16a34a1f 0%, var(--surface-muted) 12px);border-left-color:#16a34a}.employee-card--st-krank{background:linear-gradient(90deg, #dc26261f 0%, var(--surface-muted) 12px);border-left-color:#dc2626}.employee-card--st-urlaub{background:linear-gradient(90deg, #2563eb24 0%, var(--surface-muted) 12px);border-left-color:#2563eb}.employee-card:hover{box-shadow:var(--shadow)}.employee-card:active{cursor:grabbing}.planning-drag-overlay{z-index:600;pointer-events:none}.employee-card--drag-overlay{cursor:grabbing;box-shadow:var(--shadow-lg);max-width:min(300px,92vw)}.employee-card .avatar{color:#fff;box-sizing:border-box;background:linear-gradient(135deg,#64748b,#475569);border-radius:50%;place-items:center;width:22px;height:22px;padding-top:1px;font-size:.72rem;font-weight:700;line-height:1;display:grid}.status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;box-shadow:0 0 0 1px #fffc}.status-verfuegbar{background:#22c55e}.status-krank{background:#ef4444}.status-urlaub{background:#2563eb}.legend{color:var(--text-muted);background:var(--surface-muted);border-radius:var(--radius-sm);border:1px solid var(--border-light);padding:12px;font-size:.75rem;line-height:1.7}.calendar-root{border-radius:var(--radius);width:100%;height:100%;min-height:0;box-shadow:var(--shadow);--cal-ribbon-bg:#f3f6fb;--cal-ribbon-bg-top:#fafcfe;--cal-ribbon-hover:#deecf9;--cal-ribbon-border:#b8c6dc;--cal-ribbon-border-hover:#6ba3d9;--cal-ribbon-text:#242424;--cal-ribbon-font:"Segoe UI", "Segoe UI Variable Text", system-ui, -apple-system, sans-serif;background:#e2e8f0;border:1px solid #cbd5e1;flex-direction:column;gap:3px;display:flex;overflow:auto}.calendar-dow-row{z-index:20;flex:0 0 23px;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid;position:sticky;top:0}.calendar-dow{text-align:center;text-transform:uppercase;letter-spacing:.05em;color:#334155;background:linear-gradient(#f1f5f9,#e2e8f0);border-bottom:1px solid #cbd5e1;padding:4px 6px;font-size:.68rem;font-weight:800;line-height:1.1}.calendar-week-block{background:#e2e8f0;flex-direction:column;flex:0 0 calc(25% - 8.75px);gap:3px;min-height:185px;display:flex;position:relative;overflow:hidden}.calendar-root--two-weeks .calendar-week-block{flex-basis:calc(50% - 14.5px)}.calendar-root--four-weeks .calendar-week-block{flex-basis:calc(25% - 8.75px)}.calendar-week-head-row{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid}.calendar-week-head-cell{background:var(--surface);-webkit-user-select:none;user-select:none;cursor:pointer;border:1px solid #94a3b8;border-radius:6px 6px 0 0;min-height:38px;padding:0;transition:background .12s;overflow:hidden;box-shadow:0 1px #0f172a0f}.calendar-week-head-cell:hover{background:#fafbfc}.calendar-week-head-cell:hover .day-head-ribbon{background:linear-gradient(#f1f5f9,#e2e8f0)}.calendar-week-head-cell .avail{color:#475569;padding:3px 8px 5px;font-size:.66rem;font-weight:600;line-height:1.3}.day-head-meta{justify-content:space-between;align-items:center;gap:6px;display:flex}.day-head-availability{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.day-head-add{width:18px;height:18px;color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;font-size:.86rem;font-weight:800;line-height:1;display:inline-flex}.day-head-add:hover,.day-head-add:focus-visible{background:#3b82f61a;border-color:#3b82f647;outline:none}.calendar-week-head-cell--muted{background:var(--surface-subtle);opacity:.7;border-color:var(--border-light);min-height:38px}.day-head-ribbon{background:linear-gradient(#f8fafc,#eef2f7);border-bottom:1px solid #cbd5e1;align-items:center;gap:6px;min-height:29px;padding:5px 8px 4px;display:flex}.day-weekday{text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-size:.68rem;font-weight:700;line-height:1.2}.day-num{font-variant-numeric:tabular-nums;color:#0f172a;letter-spacing:-.02em;text-align:right;z-index:2;font-size:1rem;font-weight:800;line-height:1.05;position:absolute;right:0}.day-date-holiday-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:4px;width:100%;min-width:0;display:grid;position:relative}.day-week-label{color:var(--text-muted);letter-spacing:.02em;white-space:nowrap;justify-self:start;font-size:.68rem;font-weight:800}.day-assignment-override-icon{color:var(--accent);justify-self:start;margin-left:36px;font-size:.72rem;line-height:1}.day-holiday-label{color:#9a3412;letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;text-align:center;grid-column:2;justify-self:center;max-width:100%;font-size:.55rem;font-weight:700;line-height:1;overflow:hidden}.calendar-week-head-cell--feiertag .day-head-ribbon{background:linear-gradient(#fff7ed,#ffedd5);border-bottom:1px solid #fb923c}.calendar-week-head-cell--feiertag .day-weekday{color:#9a3412;font-weight:800}.calendar-week-head-cell--feiertag .day-num{color:#7c2d12}.calendar-week-head-cell--feiertag .day-holiday-label{color:#7c2d12;text-transform:uppercase;letter-spacing:.05em;background:#fb923c47;border:1px solid #ea580c73;border-radius:5px;padding:2px 5px;font-size:.55rem;font-weight:800;line-height:1;box-shadow:0 1px 2px #7c2d1214}@keyframes cal-feiertag-mit-termine-pulse{0%,to{box-shadow:0 0 0 2px #ea580ceb,0 0 16px #f9731659}50%{box-shadow:0 0 0 5px #fb923c59,0 0 26px #ea580c8c}}.calendar-week-head-cell--feiertag-mit-termine{z-index:3;animation:2s ease-in-out infinite cal-feiertag-mit-termine-pulse;position:relative}.calendar-cell--feiertag-mit-termine{z-index:2;animation:2s ease-in-out infinite cal-feiertag-mit-termine-pulse;position:relative}.calendar-week-head-cell--staff-shortage.calendar-week-head-cell--feiertag-mit-termine,.calendar-cell--staff-shortage.calendar-cell--feiertag-mit-termine{animation:2s ease-in-out infinite cal-feiertag-mit-termine-pulse}.calendar-week-head-cell.calendar-cell--selected .day-head-ribbon{background:linear-gradient(#f8fafc,#e8f0fe);border-bottom-color:#93c5fd}.calendar-week-head-cell.calendar-cell--selected .day-num{color:#1e40af}.calendar-week-head-cell.calendar-cell--range:not(.calendar-cell--selected) .day-head-ribbon{background:linear-gradient(#fafbfc,#f0f9ff);border-bottom-color:#cbd5e1}.calendar-week-head-cell--staff-shortage{background:#fef2f2;border-color:#f87171}.calendar-week-head-cell--staff-shortage .day-head-ribbon{background:linear-gradient(#fee2e2,#fecaca);border-bottom-color:#f87171}.calendar-week-head-cell--staff-shortage .day-num{color:#b91c1c}.calendar-week-head-cell--staff-shortage .avail{color:#991b1b}.calendar-week-head-cell--staff-shortage .avail-deficit{white-space:nowrap;font-weight:800}.calendar-week-head-cell.calendar-cell--selected.calendar-week-head-cell--staff-shortage .day-head-ribbon{background:linear-gradient(#fecaca,#fca5a5);border-bottom-color:#ef4444}.calendar-week-head-cell.calendar-cell--selected.calendar-week-head-cell--staff-shortage .day-num{color:#7f1d1d}.calendar-week-head-cell--feiertag.calendar-cell--selected:not(.calendar-week-head-cell--staff-shortage) .day-head-ribbon{background:linear-gradient(#ffedd5,#fed7aa);border-bottom-color:#ea580c}.calendar-week-head-cell--feiertag.calendar-cell--selected:not(.calendar-week-head-cell--staff-shortage) .day-num{color:#7c2d12}.calendar-week-merge{background:var(--surface);flex-direction:column;flex:1;gap:2px;min-height:0;display:flex;position:relative;overflow:hidden}.calendar-week-bar-layer{left:0;right:0;top:var(--cal-week-bar-top,0px);z-index:2;pointer-events:none;position:absolute}.calendar-week-bar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px 3px;display:grid}.calendar-week-bar-span{pointer-events:auto;box-sizing:border-box;min-width:0;padding-inline:4px}.calendar-week-cells-row{padding-top:var(--cal-week-bar-height,0px);z-index:1;background:var(--surface);grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;min-height:100%;display:grid;position:relative}.calendar-week-grid-lines{z-index:4;pointer-events:none;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid;position:absolute;inset:0}.calendar-week-grid-line-cell{border-left:1px solid #94a3b8e6;border-right:1px solid #94a3b8e6;min-width:0}.calendar-week-selection-lines{z-index:6;pointer-events:none;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid;position:absolute;inset:0}.calendar-week-selection-cell{border:2px solid #0000;border-radius:6px;min-width:0}.calendar-week-selection-cell--active{border-color:var(--accent);background:#3b82f61f;box-shadow:inset 0 0 0 1px #3b82f624}.calendar-cell--pad{min-height:120px}.calendar-cell-body--under-bars{flex:1}.calendar-cell{background:var(--surface);-webkit-user-select:none;user-select:none;border:1px solid #94a3b8;border-top:none;border-radius:0 0 6px 6px;flex-direction:column;height:100%;min-height:0;padding:8px;transition:background .12s;display:flex;position:relative;box-shadow:inset 0 0 0 1px #fff9}.calendar-cell:hover{background:#fafbfc}.calendar-cell--muted{background:var(--surface-subtle);opacity:.72;border-color:var(--border-light)}.calendar-cell-head--muted{color:var(--text-muted)}.calendar-cell--selected{outline:2px solid var(--accent);outline-offset:-2px;z-index:1;background:#3b82f60a}.calendar-week-head-cell.calendar-cell--selected,.calendar-week-cells-row .calendar-cell.calendar-cell--selected{outline:none}.calendar-cell--range{background:#3b82f61a}.calendar-cell--staff-shortage{background:linear-gradient(#fff1f2 0%,#ffe4e6 100%);border-color:#f87171;box-shadow:inset 0 0 0 1px #f8717133}.calendar-cell--staff-shortage:hover{background:linear-gradient(#ffe4e6 0%,#fecdd3 100%)}.calendar-cell--staff-shortage.calendar-cell--selected{background:linear-gradient(#fee2e2f2,#fca5a566);outline-color:#dc2626}.calendar-cell--staff-shortage.calendar-cell--range{background:linear-gradient(#fecaca80,#fca5a559)}.calendar-cell-head{cursor:pointer;flex-shrink:0}.calendar-cell-head .day-head-ribbon{border-radius:0;margin:-8px -8px 8px}.calendar-cell-body{flex-direction:column;flex:1;min-height:0;display:flex}.calendar-cell .avail{color:#475569;margin-bottom:6px;font-size:.7rem;font-weight:600}.appointment-stack{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow:auto}.appt-hover-wrap{border-radius:3px;width:100%;position:relative}.appt-hover-wrap:hover .appt-bar:not([class*=appt-bar--kat-]),.appt-hover-wrap--open .appt-bar:not([class*=appt-bar--kat-]){background:linear-gradient(180deg, #f0f7fc 0%, var(--cal-ribbon-hover) 100%);border-color:var(--cal-ribbon-border-hover);box-shadow:0 1px 2px #005a9e1f,inset 0 1px #ffffffd9}.appt-hover-wrap--open .appt-bar:not([class*=appt-bar--kat-]){box-shadow:0 0 0 1px #0078d459,0 2px 8px #005a9e2e,inset 0 1px #ffffffe6}.appt-hover-wrap:hover .appt-bar--kat-vorgetrage{filter:brightness(.97);box-shadow:0 1px 3px #ea580c33}.appt-hover-wrap:hover .appt-bar--kat-hessen{filter:brightness(.97);box-shadow:0 1px 3px #7c3aed33}.appt-hover-wrap:hover .appt-bar--kat-sud{filter:brightness(.97);box-shadow:0 1px 3px #16a34a33}.appt-hover-wrap:hover .appt-bar--kat-geblockt{filter:brightness(.97);box-shadow:0 1px 3px #db277733}.appt-hover-wrap--open .appt-bar--kat-vorgetrage,.appt-hover-wrap--open .appt-bar--kat-hessen,.appt-hover-wrap--open .appt-bar--kat-sud,.appt-hover-wrap--open .appt-bar--kat-geblockt{box-shadow:0 0 0 1px #0f172a1f,0 2px 8px #0f172a14}.appt-bar{width:100%;min-height:22px;font-family:var(--cal-ribbon-font);letter-spacing:.02em;color:var(--cal-ribbon-text);cursor:default;border:1px solid var(--cal-ribbon-border);background:linear-gradient(180deg, var(--cal-ribbon-bg-top) 0%, var(--cal-ribbon-bg) 100%);-webkit-user-select:none;user-select:none;touch-action:none;border-radius:3px;align-items:center;gap:6px;padding:4px 8px 4px 9px;font-size:12px;font-weight:600;line-height:1.25;transition:background .14s,border-color .14s,box-shadow .14s;display:flex;box-shadow:inset 0 1px #ffffffbf,0 1px 1px #0f172a0f}.appt-bar-drag-handle{cursor:grab;touch-action:none;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.appt-bar-drag-handle:active{cursor:grabbing}.appt-bar--continuation{color:#605e5c;background:linear-gradient(#f7f9fc 0%,#eceff5 100%);border-color:#c5cedd;font-style:normal;font-weight:500}.appt-bar--continuation.appt-bar--kat-vorgetrage,.appt-bar--continuation.appt-bar--kat-hessen,.appt-bar--continuation.appt-bar--kat-sud,.appt-bar--continuation.appt-bar--kat-geblockt{border-left-width:3px}.appt-bar--kat-vorgetrage{color:#7c2d12;background:linear-gradient(#fff7ed,#ffedd5);border-color:#fdba74;border-left-style:solid;border-left-width:3px;padding-left:7px}.appt-bar--kat-hessen{color:#4c1d95;background:linear-gradient(#f5f3ff,#ede9fe);border-color:#c4b5fd;border-left-style:solid;border-left-width:3px;padding-left:7px}.appt-bar--kat-sud{color:#14532d;background:linear-gradient(#f0fdf4,#dcfce7);border-color:#86efac;border-left-style:solid;border-left-width:3px;padding-left:7px}.appt-bar--kat-geblockt{color:#831843;background:linear-gradient(#fdf2f8,#fce7f3);border-color:#f9a8d4;border-left-style:solid;border-left-width:3px;padding-left:7px}.appt-bar--span{border-radius:4px;min-height:24px}.appt-bar--drop{outline-offset:1px;outline:2px solid #0078d4;background:#e5f1fb!important;border-color:#0078d4!important}.appt-bar.appt-bar--understaffed:not(.appt-bar--drop){outline-offset:0;outline:2px solid #dc2626d1;box-shadow:0 0 0 1px #f8717159,inset 0 1px #ffffffbf,0 1px 1px #0f172a0f}.appt-bar--span.appt-bar--understaffed:not(.appt-bar--drop){outline-offset:0}.appt-bar.appt-bar--staffed:not(.appt-bar--drop){outline-offset:0;outline:2px solid #16a34ac7;box-shadow:0 0 0 1px #4ade8061,inset 0 1px #ffffffbf,0 1px 1px #0f172a0f}.appt-bar--span.appt-bar--staffed:not(.appt-bar--drop){outline-offset:0}.appt-bar-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.appt-bar-assignees{flex-shrink:0;align-items:center;gap:2px;max-width:64px;display:flex;overflow:hidden}.appt-bar-day-override{color:var(--accent);flex-shrink:0;font-size:.72rem;line-height:1}.appt-bar-initials{color:#fff;cursor:grab;touch-action:none;background:linear-gradient(135deg,#64748b,#475569);border:1px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:9px;font-weight:700;line-height:1;display:flex;box-shadow:0 0 0 1px #0f172a14}.appt-bar-hint{color:#605e5c;letter-spacing:.04em;text-transform:uppercase;flex-shrink:0;font-size:10px;font-weight:600}.appt-bar-warn{color:#d83b01;flex-shrink:0;font-size:12px;line-height:1}.appt-popover{font-family:var(--cal-ribbon-font);color:#323130;background:#fff;border:1px solid #c8c6c4;border-radius:4px;padding:14px 16px;font-size:13px;line-height:1.45;animation:.15s ease-out appt-popover-in;box-shadow:0 6px 22px #00000024,0 0 1px #00000014}@keyframes appt-popover-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.appt-popover-header{border-bottom:1px solid #edebe9;flex-direction:column;gap:4px;margin-bottom:12px;padding-bottom:10px;display:flex}.appt-popover-header strong{letter-spacing:-.01em;color:#242424;font-size:15px;font-weight:600}.appt-popover-range{letter-spacing:.02em;color:#0078d4;text-transform:uppercase;font-size:11px;font-weight:600}.appt-popover-body{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.appt-popover-row{grid-template-columns:88px 1fr;align-items:baseline;gap:10px;font-size:12px;display:grid}.appt-popover-label{color:#605e5c;text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.appt-popover-value{color:#323130;font-weight:400}.appt-popover-staffbar{margin-top:2px;margin-bottom:0}.appt-popover-staff{flex-direction:column;gap:8px;display:flex}.appt-popover-staff-line{justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.appt-popover-staff-line .appt-popover-label{text-transform:uppercase}.appt-popover-avatars{margin-top:0}.appt-popover-edit{border-radius:4px;width:100%;font-weight:600}.appt-popover .btn-primary{background:#0078d4;border-color:#0078d4}.appt-popover .btn-primary:hover{background:#106ebe;border-color:#106ebe}.btn-sm{padding:5px 12px;font-size:.75rem}.appointment-card{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;min-height:76px;padding:8px 10px;font-size:.72rem;transition:box-shadow .15s,border-color .15s;box-shadow:0 1px 3px #0f172a0f}.appointment-card:hover{box-shadow:var(--shadow);border-color:#cbd5e1}.appointment-card.is-over{border-color:var(--accent);background:#3b82f61a}.appointment-card h3{margin:0 0 4px;font-size:.82rem;font-weight:700;line-height:1.25}.appointment-range-badge{color:var(--accent);margin-top:2px;font-size:.65rem;font-weight:600}.appointment-meta{color:var(--text-muted);margin:3px 0;font-size:.68rem}.staff-bar{background:#e2e8f0;border-radius:100px;height:5px;margin-top:8px;overflow:hidden}.staff-bar-fill{border-radius:100px;height:100%}.staff-bar-fill.ok{background:linear-gradient(90deg,#22c55e,#16a34a)}.staff-bar-fill.partial{background:linear-gradient(90deg,#eab308,#ca8a04)}.staff-bar-fill.conflict{background:linear-gradient(90deg,#f87171,#ef4444)}.staff-count{justify-content:space-between;align-items:center;gap:4px;margin-top:6px;display:flex}.avatars{flex-wrap:wrap;gap:3px;display:flex}.avatar-tiny{color:#fff;cursor:pointer;box-sizing:border-box;background:linear-gradient(135deg,#94a3b8,#64748b);border:none;border-radius:50%;place-items:center;width:24px;height:24px;padding:1px 0 0;font-size:.65rem;font-weight:600;line-height:1;display:grid}.avatar-tiny:hover{transform:scale(1.05)}.warn-icon{color:#ef4444;font-size:.9rem}.appointment-continuation{border-radius:var(--radius-sm);cursor:pointer;background:linear-gradient(90deg,#eef2ff,#f8fafc);border:1px solid #e0e7ff;align-items:stretch;gap:8px;padding:6px 8px;font-size:.68rem;transition:border-color .15s,background .15s;display:flex}.appointment-continuation:hover{background:#eef2ff;border-color:#c7d2fe}.appointment-continuation.is-over{border-color:var(--accent);background:#3b82f61f}.appointment-continuation-bar{background:var(--accent);border-radius:4px;flex-shrink:0;width:4px}.appointment-continuation.visual-partial .appointment-continuation-bar{background:#ca8a04}.appointment-continuation.visual-conflict .appointment-continuation-bar{background:#ef4444}.appointment-continuation.visual-ok .appointment-continuation-bar{background:#22c55e}.appointment-continuation-text{color:var(--text);flex:1;font-weight:600;line-height:1.35}.appointment-continuation-dates{color:var(--text-muted);font-weight:500}.app-footer{border-top:1px solid var(--border-light);min-height:44px;color:var(--text);background:#f8fafc;grid-column:1/-1;padding:12px 24px;font-size:.875rem}.app-footer-hint-text{color:var(--text-muted)}.app-message-toast{z-index:10000;border-radius:var(--radius-sm);border:1px solid var(--border-light);max-width:min(560px,100vw - 48px);padding:14px 20px;font-size:.9rem;line-height:1.4;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #0f172a2e}.app-message-toast--warn{color:#b91c1c;background:#fef2f2fa;border-color:#fecaca;font-weight:600}.app-message-toast--info{color:#1e40af;background:#eff6fffa;border-color:#bfdbfe;font-weight:500}.sidebar-unassign-zone{border-radius:var(--radius-sm);flex-direction:column;gap:16px;transition:outline .15s,background .15s;display:flex}.sidebar-unassign-zone--active{outline:2px dashed var(--accent);outline-offset:4px;background:#3b82f60f}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:520px;max-height:90vh;box-shadow:var(--shadow-lg);border:1px solid var(--border-light);border-radius:16px;padding:28px;overflow:auto}.modal h2{margin:0 0 20px;font-size:1.25rem;font-weight:700}.modal-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.modal-header h2{flex:1;min-width:0;margin:0;line-height:1.3}.modal-close-x{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin:-6px -8px 0 0;padding:0;font-size:1.5rem;line-height:1;display:flex}.modal-close-x:hover{background:var(--surface-muted);color:var(--text)}.modal-employee{max-width:560px}.employee-modal-fieldset{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:#f8fafc;margin:18px 0;padding:14px 16px}.employee-modal-fieldset legend{padding:0 6px;font-size:.85rem;font-weight:700}.employee-modal-fieldset .form-hint{margin-bottom:12px}.employee-range-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.employee-range-row input[type=date]{border:1px solid var(--border-light);border-radius:var(--radius-sm);min-width:132px;font:inherit;background:var(--surface);flex:1;padding:8px 10px}.employee-range-sep{color:var(--text-muted);flex-shrink:0;font-size:.8rem}.form-row{margin-bottom:14px}.form-row-dates{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=480px){.form-row-dates{grid-template-columns:1fr}}.form-hint{color:var(--text-muted);margin:-6px 0 14px;font-size:.78rem}.daily-staff-grid{overscroll-behavior:contain;border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface-muted);gap:7px;max-height:340px;padding:10px;display:grid;overflow-y:auto}.daily-staff-row{color:var(--text-muted);grid-template-columns:96px 76px minmax(0,1fr);align-items:start;gap:10px;font-size:.82rem;display:grid}.daily-staff-date{color:var(--text);padding-top:7px;font-weight:700}.daily-staff-row input{width:100%}.daily-staff-assignees{gap:6px;min-width:0;display:grid}.daily-staff-assignees select{width:100%}.daily-assignee-chips{margin-top:0}.daily-assignee-empty{color:var(--text-muted);font-size:.76rem;font-style:italic}.form-row label{color:var(--text-muted);margin-bottom:6px;font-size:.78rem;font-weight:600;display:block}.form-row input,.form-row select,.form-row textarea{border:1px solid var(--border-light);border-radius:var(--radius-sm);width:100%;font:inherit;background:#f8fafc;padding:10px 12px;transition:border-color .15s,box-shadow .15s}.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--accent);background:var(--surface);outline:none;box-shadow:0 0 0 3px #3b82f633}.form-row textarea{resize:vertical;min-height:72px}.modal-banner-error{border-radius:var(--radius-sm);color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;margin:-8px 0 16px;padding:10px 12px;font-size:.875rem}.modal-backdrop-nested{z-index:1080}.modal-confirm{max-width:400px}.modal-confirm-title{margin:0 0 12px;font-size:1.1rem;font-weight:700}.modal-confirm-text{color:var(--text-muted);margin:0 0 18px;font-size:.9rem;line-height:1.45}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.modal-actions-column{flex-direction:column;align-items:stretch}.modal-actions-column .btn{justify-content:center;width:100%}.series-move-backdrop{z-index:1100}.modal-series-move{max-width:420px}.modal-series-move h3{margin:0 0 12px;font-size:1.1rem}.series-move-text{color:var(--text-muted);margin:0 0 18px;font-size:.9rem;line-height:1.45}.blacklist-select{margin-bottom:10px}.tag-chip-list{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.tag-chip{color:var(--text);background:#e8eef7;border:1px solid #c5d4e8;border-radius:999px;align-items:center;gap:6px;padding:4px 6px 4px 10px;font-size:.8rem;font-weight:500;display:inline-flex}.tag-chip-remove{width:22px;height:22px;color:var(--text-muted);cursor:pointer;background:#0f172a14;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1rem;line-height:1;display:flex}.tag-chip-remove:hover{color:#b91c1c;background:#ef444433}.form-fieldset-series{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:#f8fafc;margin:0 0 14px;padding:14px 16px}.form-row-checkbox{cursor:pointer;align-items:center;gap:10px;margin:0;font-size:.9rem;font-weight:600;display:flex}.form-row-checkbox input{width:auto}.series-options{border-top:1px solid var(--border-light);margin-top:14px;padding-top:12px}.series-repeat-row,.series-end-row{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.series-repeat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.72rem;font-weight:700}.series-radio{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;font-size:.85rem;font-weight:500;display:flex}.series-radio-block{width:100%}.series-radio input[type=radio]{flex-shrink:0;width:auto}.series-interval-input,.series-count-input{width:64px!important;padding:6px 8px!important}.series-until-input{min-width:140px;width:auto!important}.form-hint-inline{color:var(--text-muted);font-size:.72rem;font-weight:400}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.login-shell{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:2rem}.login-card-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.login-card h1{margin:0 0 .5rem;font-size:1.5rem}.login-mode-switch{gap:.75rem;margin:1rem 0 .75rem;display:flex}.login-mode-switch .btn{flex:1 1 0}.login-lead{color:var(--text-muted);margin:0 0 1.25rem;font-size:.95rem}.login-form .form-row{margin-bottom:1rem}.login-form label{margin-bottom:.35rem;font-size:.85rem;font-weight:600;display:block}.login-form input{border:1px solid var(--border-light);border-radius:var(--radius-sm);width:100%;font:inherit;padding:.5rem .65rem}.login-error{color:#b91c1c;border-radius:var(--radius-sm);background:#fef2f2;margin-bottom:1rem;padding:.65rem .75rem;font-size:.9rem}.login-submit{width:100%;margin-top:.5rem}.login-switch{width:100%;margin-top:1rem;font-size:.85rem}.admin-shell{background:var(--surface-muted);min-height:100vh;color:var(--text)}.admin-header{background:var(--header-bg);border-bottom:1px solid var(--border-light);z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.5rem 2rem;display:flex;position:sticky;top:0}.admin-header h1{margin:0 0 .3rem}.admin-header p{color:var(--text-muted);margin:0}.admin-header-actions{flex-wrap:wrap;gap:.75rem;display:flex}.admin-grid{grid-template-columns:repeat(2,minmax(280px,1fr));gap:1.25rem;padding:1.5rem 2rem 2rem;display:grid}.admin-card{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.admin-card-wide{grid-column:1/-1}.admin-card h2,.tenant-card h3,.tenant-create-user h4{margin-top:0}.admin-sublist,.admin-tenants,.tenant-user-list{flex-direction:column;gap:.75rem;display:flex}.admin-list-row,.tenant-user-row,.tenant-user-edit,.tenant-card-head,.tenant-card-actions,.tenant-create-user{gap:.75rem;display:flex}.admin-list-row,.tenant-user-row,.tenant-card{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--surface-subtle)}.admin-list-row,.tenant-user-row{justify-content:space-between;align-items:center;padding:.85rem 1rem}.tenant-card{flex-direction:column;padding:1rem}.tenant-card-head{justify-content:space-between;align-items:flex-start}.tenant-card-head p{color:var(--text-muted);word-break:break-all;margin:.2rem 0}.tenant-card-actions{flex-wrap:wrap;justify-content:flex-end}.tenant-user-edit,.tenant-create-user{flex-wrap:wrap;align-items:center}.tenant-user-edit input,.tenant-user-edit select,.tenant-create-user input,.tenant-create-user select,.tenant-card-head input,.admin-card input,.admin-card select{border:1px solid var(--input-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;padding:.55rem .7rem}.tenant-create-user{border-top:1px solid var(--border-light);padding-top:.75rem}@media (width<=960px){.admin-grid{grid-template-columns:1fr;padding:1rem}.admin-header{flex-direction:column;padding:1rem}.tenant-card-head,.tenant-user-row{flex-direction:column;align-items:stretch}.tenant-card-actions{justify-content:flex-start}}.calendar-week-bar-span,.calendar-week-bar-span .appt-hover-wrap{height:100%}.appt-bar--span{box-sizing:border-box;height:100%;box-shadow:none!important;background:0 0!important;border:0!important;align-items:stretch!important;padding:0!important;display:flex!important}.appt-bar-segments-container{align-items:stretch;width:100%;height:100%;display:flex}.appt-bar-segment{box-sizing:border-box;border:1px solid var(--cal-ribbon-border);background:linear-gradient(180deg, var(--cal-ribbon-bg-top) 0%, var(--cal-ribbon-bg) 100%);min-width:0;height:100%;color:var(--cal-ribbon-text);border-radius:3px;flex:1;justify-content:space-between;align-items:center;padding:0 8px;display:flex;position:relative;box-shadow:inset 0 1px #ffffffbf,0 1px 1px #0f172a0f}.appt-bar-segment--first{border-left-width:3px}.appt-bar--kat-vorgetrage .appt-bar-segment{color:#7c2d12;background:linear-gradient(#fff7ed,#ffedd5);border-color:#fdba74 #fdba74 #fdba74 #ea580c}.appt-bar--kat-geblockt .appt-bar-segment{color:#831843;background:linear-gradient(#fdf2f8,#fce7f3);border-color:#f9a8d4 #f9a8d4 #f9a8d4 #db2777}.appt-bar--kat-hessen .appt-bar-segment{color:#4c1d95;background:linear-gradient(#f5f3ff,#ede9fe);border-color:#c4b5fd #c4b5fd #c4b5fd #7c3aed}.appt-bar--kat-sud .appt-bar-segment{color:#14532d;background:linear-gradient(#f0fdf4,#dcfce7);border-color:#86efac #86efac #86efac #16a34a}.appt-bar-segment-handle{cursor:grab;flex:1;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.appt-bar-segment-handle:active{cursor:grabbing}.appt-bar-segment--drop{background:#0078d42e!important;box-shadow:inset 0 0 0 2px #0078d4!important}.appt-bar-segment--understaffed{box-shadow:inset 0 -2px #dc2626b3}.appt-bar-segment--staffed{box-shadow:inset 0 -2px #16a34a99}
