*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%}button{font-family:inherit}table{border-spacing:0}:root{--bg: #121212;--surface: #1e1e1e;--surface-800: #272828;--surface-700: #313332;--surface-600: #3c3e3d;--border: #2a2a2a;--text: #ffffff;--text-secondary: #d1d5db;--text-muted: #9ca3af;--primary: #5bbcaa;--primary-hover: #4ca899;--primary-light: rgba(91, 188, 170, .1);--header-bg: #293c39;--goal-green: #277c48;--goal-yellow: #9a7c28;--goal-red: #762828;--user-cell-bg: rgba(156, 163, 175, .07)}body.theme-light,.theme-light{--bg: #f3f4f6;--surface: #ffffff;--surface-800: #f0f0f0;--surface-700: #e5e7eb;--surface-600: #d1d5db;--border: #e0e0e0;--text: #1a1a1a;--text-secondary: #4a4a4a;--text-muted: #6b7280;--header-bg: #d1ede6;--primary-light: rgba(91, 188, 170, .08);--user-cell-bg: rgba(0, 0, 0, .025)}body[data-theme=dark],body[data-theme=black]{--bg: #121212;--surface: #1e1e1e;--text: #ffffff}body[data-theme=light]{--bg: #f3f4f6;--surface: #ffffff;--text: #1a1a1a;--text-secondary: #4a4a4a;--text-muted: #6b7280;--border: #e0e0e0;--header-bg: #d1ede6;--primary-light: rgba(91, 188, 170, .08);--user-cell-bg: rgba(0, 0, 0, .025)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}@keyframes active-entry-fade{0%,to{background:#3b82f61f}50%{background:#3b82f60f}}.spinner{width:32px;height:32px;border:3px solid rgba(91,188,170,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.overview-header{display:flex;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}.overview-header h1{font-size:1.2rem;font-weight:600;color:var(--text);white-space:nowrap}.header-nav{display:flex;align-items:center;gap:8px;flex:1;justify-content:center}.header-actions{display:flex;align-items:center;gap:6px;margin-left:auto}.week-label{font-size:.9rem;font-weight:500;color:var(--text-muted);white-space:nowrap}.nav-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-muted);cursor:pointer;transition:all .2s;font-size:18px}.nav-btn:hover{background:var(--surface-700);color:var(--text)}.nav-btn:disabled{opacity:.3;cursor:not-allowed}.pill-btn{padding:6px 14px;border:none;border-radius:8px;background:var(--primary);color:#fff;cursor:pointer;font-size:.8rem;font-weight:500;transition:background .2s;white-space:nowrap}.pill-btn:hover{background:var(--primary-hover)}.icon-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-muted);cursor:pointer;transition:all .2s;font-size:18px}.icon-btn:hover{background:var(--surface-700);color:var(--text)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn.syncing{animation:spin 1s linear infinite}.week-grid{background:var(--surface);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0003}.table-wrapper{overflow:auto;max-height:calc(100vh - 160px);border-radius:12px}.time-table{width:100%;border-collapse:separate;border-spacing:0}.time-table thead{position:sticky;top:-1px;z-index:10}.time-table thead tr,.time-table tbody tr{display:flex}.time-table thead th{background:var(--header-bg);padding:0 8px;height:48px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text);text-align:center;white-space:nowrap;border-bottom:1px solid var(--border);flex:1 1 0;min-width:0;overflow:hidden;transition:flex-grow .15s ease-out;display:flex;align-items:center;justify-content:center;flex-direction:column}.time-table thead th:first-child{position:sticky;left:0;z-index:25;flex:0 0 180px;text-align:left;padding-left:20px;justify-content:center;align-items:flex-start;background:var(--header-bg)}.time-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.time-table tbody tr:last-child{border-bottom:none}.time-table tbody tr:hover{background:#ffffff05}.theme-light .time-table tbody tr:hover{background:#00000004}.user-cell{position:sticky;left:0;z-index:15;padding:10px 16px 10px 20px;background:var(--user-cell-bg);border-right:1px solid var(--border);border-bottom:1px solid var(--border);flex:0 0 180px;min-width:180px}.user-info{display:flex;align-items:center;gap:10px}.avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;flex-shrink:0}.user-name{font-size:.85rem;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-cell{padding:8px;text-align:center;border-bottom:1px solid var(--border);border-left:1px solid var(--border);position:relative;flex:1 1 0;min-width:0;overflow:hidden;transition:flex-grow .15s ease-out}.day-cell-empty{padding:8px;border-bottom:1px solid var(--border);border-left:1px solid var(--border);position:relative;flex:1 1 0;min-width:0;overflow:hidden;transition:flex-grow .15s ease-out}.day-cell-today{background:#5bbcaa0f;box-shadow:inset 0 0 0 1px #5bbcaa40}.th-today{background:#5bbcaa1f!important;position:relative}.today-indicator{display:block;font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#5bbcaa;margin-top:2px}.day-total{font-size:1.1rem;font-weight:500;color:var(--text);padding:2px 0 6px}.day-entries{display:flex;flex-direction:column;gap:1px;max-height:120px;overflow-y:auto}.day-entries::-webkit-scrollbar{width:4px}.day-entries::-webkit-scrollbar-track{background:transparent}.day-entries::-webkit-scrollbar-thumb{background:#5bbcaa40;border-radius:4px}.day-entries::-webkit-scrollbar-thumb:hover{background:#5bbcaa66}.entry-row{display:flex;gap:6px;font-size:.7rem;line-height:1.5;padding:1px 4px;text-align:left}.entry-time{flex-shrink:0;color:var(--text-muted);font-variant-numeric:tabular-nums}.entry-duration{flex-shrink:0;color:var(--text-muted);font-variant-numeric:tabular-nums;opacity:.7}.entry-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary);-webkit-user-select:text;user-select:text}.entry-status-label{flex-shrink:0;padding:1px 5px;border-radius:3px;font-size:.6rem;font-weight:600;color:#fff;white-space:nowrap;line-height:1.3}.entry-gap{opacity:.4}.entry-active{background:#3b82f61f;border-left:2px solid #3b82f6;border-radius:3px;padding-left:6px!important;animation:active-entry-fade 2.5s ease-in-out infinite}.theme-light .entry-active{background:#3b82f614}.entry-active .entry-name{font-weight:600}.entry-active .entry-time{color:#3b82f6;font-weight:600}.active-pulse{display:inline-block;width:6px;height:6px;border-radius:50%;background:#3b82f6;margin-left:4px;vertical-align:middle;animation:pulse-dot 1.5s ease-in-out infinite}.theme-light .active-pulse{background:#2563eb}.goal-badge{position:absolute;top:4px;left:4px;padding:2px 8px;border-radius:8px;font-size:.65rem;font-weight:700;letter-spacing:.02em;color:#fff;z-index:1;line-height:1.4}.goal-badge-met{background:var(--goal-green)}.goal-badge-partial{background:var(--goal-yellow);color:#1a1a1a;box-shadow:0 0 6px 1px var(--goal-yellow)}.goal-badge-missed{background:var(--goal-red);box-shadow:0 0 6px 1px var(--goal-red)}td.goal-cell-partial{background:color-mix(in srgb,var(--goal-yellow) 12%,transparent)!important;border-left:3px solid var(--goal-yellow)!important}td.goal-cell-missed{background:color-mix(in srgb,var(--goal-red) 14%,transparent)!important;border-left:3px solid var(--goal-red)!important}.goal-weekend-empty{background:#111827!important}.theme-light .goal-weekend-empty{background:#e5e7eb!important}.goal-dot{position:absolute;top:6px;right:6px;width:10px;height:10px;border-radius:50%}.goal-dot-missed{background:var(--goal-red);box-shadow:0 0 6px 2px var(--goal-red)}td.goal-cell-missed-empty{background:color-mix(in srgb,var(--goal-red) 10%,transparent)!important;border-left:3px solid var(--goal-red)!important}.absence-badge{position:absolute;top:0;right:0;padding:2px 10px;border-bottom-left-radius:8px;font-size:.7rem;font-weight:600;color:#fff;background:#3b82f6;display:flex;align-items:center;gap:4px;z-index:2;box-shadow:0 1px 2px #00000026}.absence-badge-urlaub{background:#3b82f6}.absence-badge-krank{background:#92400e}.absence-badge-dr{background:#3b82f6}.absence-badge-pflege{background:#92400e}.absence-badge-feiertag{background:#6b7280}td.absence-cell-urlaub{background:#3b82f61a!important;border-left:3px solid rgba(59,130,246,.4)!important}td.absence-cell-krank{background:#92400e24!important;border-left:3px solid rgba(146,64,14,.5)!important}td.absence-cell-dr{background:#3b82f61a!important;border-left:3px solid rgba(59,130,246,.4)!important}td.absence-cell-pflege{background:#92400e24!important;border-left:3px solid rgba(146,64,14,.5)!important}td.absence-cell-feiertag{background:#6b72801a!important;border-left:3px solid rgba(107,114,128,.4)!important}.theme-light td.absence-cell-urlaub{background:#3b82f614!important}.theme-light td.absence-cell-krank{background:#92400e14!important}.theme-light td.absence-cell-dr{background:#3b82f614!important}.theme-light td.absence-cell-pflege{background:#92400e14!important}.theme-light td.absence-cell-feiertag{background:#6b728014!important}.tp-person-filter{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:2px 0}.tp-person-filter-label{font-size:.72rem;color:var(--text-muted);margin-right:4px;font-weight:500}.tp-prev-chip{padding:2px 8px;border:1px solid var(--primary);border-radius:10px;background:var(--primary-light);color:var(--primary);font-size:.72rem;font-weight:600;cursor:pointer;line-height:1.4}.tp-prev-chip:hover{background:var(--primary);color:#fff}.tp-prev-chip-action{font-weight:600;font-size:.65rem;border:1px solid var(--border)!important}.tp-user-chip{font-weight:600;min-width:28px;text-align:center}.tp-user-chip.tp-prev-chip-off{background:var(--surface-600)!important;color:var(--text-muted)!important;border-color:var(--border)!important;opacity:.5}.table-wrapper::-webkit-scrollbar{width:8px;height:8px}.table-wrapper::-webkit-scrollbar-track{background:transparent}.table-wrapper::-webkit-scrollbar-thumb{background:#5bbcaa40;border-radius:4px}.table-wrapper::-webkit-scrollbar-thumb:hover{background:#5bbcaa66}.view-toggle{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.view-toggle-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:var(--surface);color:var(--text-muted);cursor:pointer;font-size:15px;transition:all .15s}.view-toggle-btn:hover{background:var(--surface-700);color:var(--text)}.view-toggle-btn.active{background:var(--primary);color:#fff}.view-toggle-btn+.view-toggle-btn{border-left:1px solid var(--border)}.bar-table .bar-cell{padding:4px 4px 2px;border-bottom:1px solid var(--border);border-left:1px solid var(--border);position:relative;flex:1 1 0;min-width:0;overflow:hidden;transition:flex-grow .15s ease-out;display:flex;flex-direction:column}.bar-timeline{position:relative;flex:1;min-height:240px;background:var(--surface-800);border-radius:4px;overflow:hidden}.bar-gridline{position:absolute;left:0;right:0;height:1px;background:var(--border);opacity:.3;z-index:0}.bar-hour-tick{position:absolute;left:1px;top:-1px;font-size:.5rem;color:var(--text-muted);opacity:.6;line-height:1;pointer-events:none}.bar-entry{position:absolute;left:8%;right:4%;border-radius:3px;min-height:2px;cursor:default;transition:opacity .15s,filter .15s;overflow:hidden;z-index:1;display:flex;flex-direction:column;justify-content:center;padding:1px 4px}.bar-entry:hover{filter:brightness(1.25);z-index:2;box-shadow:0 0 6px #0000004d}.bar-entry-active{animation:active-entry-fade 2.5s ease-in-out infinite;box-shadow:0 0 6px #3b82f680}.bar-entry-label{font-size:.55rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;text-shadow:0 1px 2px rgba(0,0,0,.5)}.bar-entry-time{font-size:.5rem;color:#fffc;white-space:nowrap;line-height:1.2}.bar-total{text-align:center;font-size:.7rem;font-weight:600;color:var(--text-secondary);padding:2px 0 0;font-variant-numeric:tabular-nums}.error-banner{background:#ef44441a;border:1px solid #ef4444;color:#fca5a5;padding:10px 16px;border-radius:8px;margin-bottom:16px;font-size:.85rem}.theme-light .error-banner{color:#dc2626}
