:root{
  --bg:#f6f7fb;--text:#172033;--muted:#667085;--line:#d9dee8;
  --header:#111827;--header-text:#fff;--header-subtext:#cbd5e1;--context-bg:#fff;--context-text:#111827;
  --nav-bg:#e5e7eb;--nav-text:#111827;--nav-active-bg:#2563eb;--nav-active-text:#fff;
  --button-bg:#2563eb;--button-text:#fff;--button-secondary-bg:#374151;--button-secondary-text:#fff;--button-danger-bg:#b91c1c;--button-danger-text:#fff;
  --card:#fff;--card-text:#172033;--card-muted:#667085;--panel-bg:#fff;--panel-text:#172033;
  --table-bg:#fff;--table-text:#172033;--table-head:#eef2ff;--table-head-text:#334155;--table-first-col-bg:#fff;
  --input-bg:#f0fdf4;--input-text:#172033;--input-focus-bg:#eff6ff;--input-focus-border:#2563eb;
  --danger:#dc2626;--warn:#d97706;--ok:#15803d;--tag-bg:#eef2ff;--tag-text:#1e3a8a;--accent:var(--button-bg)
}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
header{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:24px 28px;background:var(--header);color:var(--header-text)}h1{margin:0;font-size:28px}header p{margin:6px 0 0;color:var(--header-subtext)}
.actions{display:flex;gap:10px;flex-wrap:wrap}button{border:0;border-radius:10px;background:var(--button-bg);color:var(--button-text);padding:10px 14px;font-weight:700;cursor:pointer}button.secondary,.secondary{background:var(--button-secondary-bg)!important;color:var(--button-secondary-text)!important}button.danger,.danger{background:var(--button-danger-bg)!important;color:var(--button-danger-text)!important}button.smallbtn{padding:.35rem .55rem;font-size:.8rem}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.tabs button{background:var(--nav-bg);color:var(--nav-text)}.tabs button.active{background:var(--nav-active-bg);color:var(--nav-active-text)}main{padding:24px 28px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.card{background:var(--card);color:var(--card-text);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 20px rgba(15,23,42,.05)}.card span{display:block;color:var(--card-muted);font-size:13px}.card strong{font-size:26px}
.tab{display:none}.tab.active{display:block}.panel{background:var(--panel-bg);color:var(--panel-text);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:18px;box-shadow:0 8px 20px rgba(15,23,42,.04)}.panel h2{margin:0 0 12px}.small{font-size:12px;color:var(--muted)}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}table{border-collapse:collapse;width:100%;min-width:980px;background:var(--table-bg);color:var(--table-text)}th,td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:8px 10px;text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left;position:sticky;left:0;background:var(--table-first-col-bg);z-index:1}thead th{background:var(--table-head);font-size:13px;color:var(--table-head-text)}thead th:first-child{background:var(--table-head);color:var(--table-head-text)}
td[contenteditable="true"],input,select{background:var(--input-bg);color:var(--input-text);outline:2px solid transparent;border-radius:6px}td[contenteditable="true"]:focus{outline-color:var(--input-focus-border);background:var(--input-focus-bg)}.negative{color:var(--danger);font-weight:700}.warning{color:var(--warn);font-weight:700}.ok{color:var(--ok);font-weight:700}.toolbar{display:flex;gap:10px;align-items:center;margin:10px 0 14px;flex-wrap:wrap}.toolbar input,.toolbar select{border:1px solid var(--line);padding:9px 10px;border-radius:10px}.barcell{min-width:120px}.bar{height:14px;border-radius:999px;background:#e5e7eb;overflow:hidden}.bar>span{display:block;height:100%;background:var(--nav-active-bg)}.bar.negative>span{background:var(--danger)}#toast{position:fixed;right:20px;bottom:20px;background:var(--header);color:var(--header-text);border-radius:12px;padding:12px 16px;display:none}
.project-card{border:1px solid var(--line);border-radius:14px;padding:16px;margin:18px 0;background:var(--panel-bg);color:var(--panel-text)}.project-head{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}.project-head h3{margin:0 0 6px 0}.project-head p{margin:0;color:var(--muted);min-width:240px}.project-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}.project-controls label{font-size:.85rem;color:var(--text);display:flex;gap:6px;align-items:center}.project-controls select,select{padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg);color:var(--input-text)}@media (max-width:900px){.project-head{display:block}.project-controls{justify-content:flex-start;margin-top:12px}}
.notice{background:var(--table-head);border:1px solid var(--line);color:var(--table-head-text);border-radius:12px;padding:10px 12px;margin:10px 0 14px;font-size:.92rem}.employee-table-wrap{scroll-behavior:auto}.employee-master-table th,.employee-master-table td{vertical-align:middle}.employee-master-table input[type="number"].pensum-input{width:78px;text-align:right;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg);color:var(--input-text)}.employee-master-table input[type="number"].pensum-input:focus{outline:2px solid var(--input-focus-border);background:var(--input-focus-bg)}.year-pensum-cell{display:flex;gap:6px;align-items:center;justify-content:flex-end}.year-pensum-input{width:82px;text-align:right;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--input-bg);color:var(--input-text)}
.context-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:10px}.context-bar label,.context-pill{background:var(--context-bg);color:var(--context-text);padding:6px 10px;border-radius:999px;font-size:13px}.context-bar select,.context-bar input{margin-left:6px;border-radius:8px;border:1px solid var(--line);padding:4px 8px;background:var(--input-bg);color:var(--input-text)}.cell-input{width:72px;border:1px solid var(--line);border-radius:8px;padding:6px;background:var(--input-bg);color:var(--input-text);text-align:right}td input,td select,h3 input,p input{border:1px solid var(--line);border-radius:8px;padding:6px;max-width:180px;background:var(--input-bg);color:var(--input-text)}.pensum-line{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;overflow-x:auto;padding:8px 0}.pensum-line label{white-space:nowrap}.year-pensum{width:80px!important}.tag{display:inline-flex;align-items:center;gap:4px;background:var(--tag-bg);color:var(--tag-text);border-radius:999px;padding:4px 8px;margin:2px}.tag .x{border:0;background:transparent;color:var(--danger);padding:0 3px;cursor:pointer}.filebtn{display:inline-flex;align-items:center;border:0;border-radius:10px;background:var(--button-bg);color:var(--button-text);padding:10px 14px;font-weight:700;cursor:pointer}code{background:var(--table-head);border:1px solid var(--line);border-radius:6px;padding:2px 5px;color:var(--table-head-text)}
.theme-table{max-width:900px;min-width:640px}.theme-table td:first-child{font-weight:700}.theme-table input[type="color"]{width:64px;height:38px;padding:2px;border:1px solid var(--line);background:var(--input-bg)}.theme-group td{background:var(--table-head)!important;color:var(--table-head-text)!important;font-size:14px;text-align:left!important}.theme-preview{margin-top:16px}.theme-preview table{min-width:420px}

.settings-grid{display:grid;gap:18px}.settings-grid>.panel{box-shadow:none;border:1px solid var(--line);margin:0}.settings-grid h2{margin-top:0}

/* Mitarbeiterseite: übersichtliche Kartenansicht */
.employee-card-list{display:grid;gap:18px}
.employee-card{background:var(--card);color:var(--card-text);border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 22px rgba(15,23,42,.06);overflow:hidden}
.employee-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:16px 18px;background:linear-gradient(90deg,var(--table-head),var(--card));border-bottom:1px solid var(--line)}
.employee-identity{display:flex;gap:12px;align-items:center;min-width:260px}
.employee-avatar{min-width:46px;width:auto;height:46px;padding:0 12px;border-radius:14px;background:var(--nav-active-bg);color:var(--nav-active-text);display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:.04em;flex:0 0 auto;max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.employee-identity h3{margin:0}.employee-identity h3 input{font-size:18px;font-weight:800;max-width:280px;background:var(--input-bg);color:var(--input-text)}
.employee-identity p{margin:4px 0 0;color:var(--muted);font-size:13px}
.employee-metrics{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.employee-metrics span{display:flex;flex-direction:column;gap:2px;background:var(--context-bg);color:var(--context-text);border:1px solid var(--line);border-radius:12px;padding:8px 10px;font-size:12px;min-width:94px;text-align:right}
.employee-metrics strong{font-size:18px;color:var(--card-text)}
.employee-sections{display:grid;grid-template-columns:minmax(280px,0.9fr) minmax(520px,1.4fr);gap:16px;padding:16px 18px}
.employee-section{border:1px solid var(--line);border-radius:14px;background:var(--panel-bg);padding:14px}
.employee-section h4{margin:0 0 12px;color:var(--panel-text)}
.employee-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.employee-section-title h4{margin:0}
.employee-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.employee-fields label,.pensum-grid label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);font-weight:700}
.employee-fields input{width:100%;max-width:none;border:1px solid var(--line);border-radius:9px;padding:8px;background:var(--input-bg);color:var(--input-text)}
.pensum-grid{display:grid;grid-template-columns:repeat(6,minmax(72px,1fr));gap:10px}.pensum-grid label span{color:var(--muted)}
.pensum-grid input{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px;background:var(--input-bg);color:var(--input-text);text-align:right}
.pensum-grid input:focus,.employee-fields input:focus,.employee-identity input:focus{outline:2px solid var(--input-focus-border);background:var(--input-focus-bg)}
@media (max-width:1100px){.employee-sections{grid-template-columns:1fr}.pensum-grid{grid-template-columns:repeat(4,minmax(72px,1fr))}}
@media (max-width:720px){.employee-card-head{display:block}.employee-metrics{justify-content:flex-start;margin-top:12px}.employee-fields{grid-template-columns:1fr}.pensum-grid{grid-template-columns:repeat(2,minmax(72px,1fr))}}

/* Roadmap / Gantt */
.holiday-add-box{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:12px 14px;margin:12px 0}.holiday-add-box h3{margin:0 0 8px}
.roadmap{position:relative;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--panel-bg)}
.roadmap-months{display:grid;grid-template-columns:260px 1fr;border-bottom:1px solid var(--line);background:var(--table-head);color:var(--table-head-text);font-weight:700}
.roadmap-scale{position:relative;display:grid;grid-template-columns:repeat(12,1fr);min-height:42px;align-items:center}.roadmap-scale span{border-left:1px solid var(--line);text-align:center;font-size:12px}
.roadmap-body{position:relative;padding:8px 0}.roadmap-row{display:grid;grid-template-columns:260px 1fr;min-height:54px;border-bottom:1px solid var(--line)}.roadmap-row:last-child{border-bottom:0}
.roadmap-label{padding:10px 12px;background:var(--table-first-col-bg);border-right:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.roadmap-label strong{font-size:14px}.roadmap-label span,.roadmap-label small{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.roadmap-track{position:relative;background:linear-gradient(to right, transparent calc(8.333% - .5px), var(--line) calc(8.333% - .5px), var(--line) calc(8.333% + .5px), transparent calc(8.333% + .5px));background-size:8.333% 100%;min-height:54px}
.roadmap-bar{position:absolute;top:13px;height:28px;border-radius:999px;background:var(--nav-active-bg);color:var(--nav-active-text);box-shadow:0 4px 12px rgba(15,23,42,.18);display:flex;align-items:center;overflow:hidden;min-width:22px}.roadmap-bar span{padding:0 10px;font-size:12px;font-weight:800;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.roadmap-bar.status-abgeschlossen{background:var(--ok)}.roadmap-bar.status-pausiert{background:var(--warn)}.roadmap-bar.status-in-arbeit{background:var(--button-bg)}
.today-line{position:absolute;top:0;bottom:0;width:1px;background:var(--danger);z-index:5;box-shadow:0 0 0 1px rgba(220,38,38,.15)}.today-line:after{content:'Heute';position:absolute;top:2px;left:4px;background:var(--danger);color:#fff;border-radius:6px;padding:2px 5px;font-size:10px;font-weight:700}.today-line.body:after{display:none}
@media (max-width:900px){.roadmap-months,.roadmap-row{grid-template-columns:190px 900px}.roadmap{overflow:auto}.roadmap-label{position:sticky;left:0;z-index:4}.roadmap-months>div:first-child{position:sticky;left:0;z-index:6;background:var(--table-head)}}
.protected-row td{background:rgba(37,99,235,.06);font-weight:600}
.readonly-cell{background:rgba(148,163,184,.12);font-weight:600}
.variance-cell{font-weight:700}
.variance-cell.negative{color:var(--danger)}

/* V35 Abwesenheitsmatrix */
.absence-matrix-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:var(--table-bg);max-height:72vh;margin-top:12px}
.absence-matrix{border-collapse:separate;border-spacing:0;min-width:1180px;width:max-content}
.absence-matrix th,.absence-matrix td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;padding:5px 6px}
.absence-matrix thead th{position:sticky;top:0;z-index:3;background:var(--table-head-bg);color:var(--table-head-text)}
.employee-sticky{position:sticky;left:0;z-index:4;background:var(--table-first-bg)!important;text-align:left!important;min-width:220px;max-width:260px}
.employee-sticky div{display:flex;flex-direction:column;gap:2px}.employee-sticky small{color:var(--muted);font-weight:500}
.day-head{min-width:42px}.day-head span{display:block;font-weight:800}.day-head small{display:block;font-size:11px;opacity:.8}
.absence-cell{height:42px;min-width:42px;cursor:pointer;user-select:none;background:var(--table-bg);transition:transform .08s ease, box-shadow .08s ease, filter .08s ease}
.absence-cell:hover{transform:scale(1.04);box-shadow:0 0 0 2px var(--input-focus-border) inset;filter:brightness(0.98)}
.absence-cell span{display:block;font-size:17px;line-height:18px}.absence-cell small{display:block;font-size:10px;font-weight:800;margin-top:2px}
.absence-cell.weekend,.weekend-sample{background:rgba(148,163,184,.18)}
.absence-cell.holiday,.holiday-sample{background:rgba(251,191,36,.22)}
.absence-vacation{background:rgba(59,130,246,.18)!important;color:var(--table-text)}
.absence-sick{background:rgba(239,68,68,.18)!important;color:var(--table-text)}
.absence-training{background:rgba(16,185,129,.18)!important;color:var(--table-text)}
.absence-unpaid{background:rgba(107,114,128,.18)!important;color:var(--table-text)}
.absence-other{background:rgba(168,85,247,.15)!important;color:var(--table-text)}
.absence-total{font-weight:800;background:var(--table-first-bg)}
.absence-legend{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.absence-legend span{padding:6px 10px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:700}
.legacy-absence{margin-top:18px;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--card-bg);color:var(--card-text)}
.legacy-absence summary{cursor:pointer;font-weight:800}
.absence-accident{background:rgba(245,158,11,.22)!important;color:var(--table-text)}
.absence-type-settings{margin:10px 0 12px;border:1px solid var(--line);border-radius:14px;padding:10px;background:var(--card-bg);color:var(--card-text)}
.absence-type-settings summary{cursor:pointer;font-weight:800}
.absence-type-settings table input,.absence-type-settings table select{min-width:120px}
.absence-cell.multi-absence{box-shadow:inset 0 0 0 2px rgba(15,23,42,.18)}
.absence-chip{display:flex!important;align-items:center;justify-content:center;gap:1px;margin:1px auto;padding:1px 2px;border-radius:6px;line-height:1;max-width:42px;overflow:hidden}
.absence-chip b{font-size:12px;line-height:12px}.absence-chip small{font-size:8px!important;margin:0!important;white-space:nowrap}
.user-info{align-self:center;font-size:.9rem;color:var(--header-subtext);padding:.35rem .6rem;border-radius:999px;background:rgba(255,255,255,.12)}
.login-page{min-height:100vh;display:grid;place-items:center;background:var(--bg,#f6f7fb);color:var(--text,#172033)}
.login-box{width:min(420px,calc(100vw - 2rem));background:var(--panel-bg,#fff);border:1px solid var(--table-border,#d9dee8);border-radius:18px;padding:2rem;box-shadow:0 20px 60px rgba(15,23,42,.12)}
.login-box h1{margin:0;font-size:2.2rem}.login-box p{color:var(--muted,#667085)}
.login-box form{display:grid;gap:1rem}.login-box label{display:grid;gap:.35rem;font-weight:700}.login-box input{width:100%;box-sizing:border-box}
.login-error{color:var(--danger-text,#dc2626);font-weight:700;min-height:1.2rem}
