@layer reset,base;@layer components{app-nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);display:block}app-nav nav{max-width:72rem;padding:0 var(--space-4);align-items:center;gap:var(--space-4);height:3.5rem;margin-inline:auto;display:flex}app-nav .nav-brand{font-weight:700;font-size:var(--text-lg);color:var(--color-primary);white-space:nowrap;text-decoration:none}app-nav .nav-links{gap:var(--space-1);flex-wrap:wrap;flex:1;display:flex}app-nav .nav-links a{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);transition:background-color var(--duration-hover-out), color var(--duration-hover-out);white-space:nowrap;font-weight:500}app-nav .nav-links a:hover{background:var(--color-surface-alt);color:var(--color-text);transition-duration:0s}app-nav .nav-links a[aria-current=page]{background:var(--color-selected);color:var(--color-primary)}app-nav .nav-user{align-items:center;gap:var(--space-3);flex-shrink:0;margin-left:auto;display:flex}app-nav .nav-user-name{font-size:var(--text-sm);color:var(--color-text-secondary)}app-spinner{display:block}app-spinner[hidden]{display:none}app-spinner[inline]{vertical-align:middle;display:inline-block}app-spinner .spinner-ring{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:.75s linear infinite spin;display:inline-block}app-spinner[size=small] .spinner-ring{width:1rem;height:1rem}app-spinner[size=medium] .spinner-ring,app-spinner:not([size]) .spinner-ring{width:1.5rem;height:1.5rem}app-spinner[size=medium],app-spinner:not([size]){padding:1rem}app-spinner[size=large]{padding:2rem}app-spinner[size=large] .spinner-ring{border-width:3px;width:2.5rem;height:2.5rem}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner-ring{animation-duration:2s}}app-toast{top:var(--space-4);right:var(--space-4);z-index:1000;gap:var(--space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}app-toast .toast-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);font-size:var(--text-sm);pointer-events:all;max-width:24rem;animation:.2s toast-in;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}app-toast .toast-item[data-type=success]{background:var(--color-success-light);border:1px solid var(--color-success-border);color:var(--color-success-dark)}app-toast .toast-item[data-type=error]{background:var(--color-error-light);border:1px solid var(--color-error-border);color:var(--color-error)}app-toast .toast-item[data-type=info]{background:var(--color-selected);border:1px solid var(--color-primary-light);color:var(--color-primary)}app-toast .toast-msg{flex:1}app-toast .toast-close{cursor:pointer;opacity:.6;color:inherit;min-width:auto;transition:opacity var(--duration-hover-out);background:0 0;border:none;flex-shrink:0;padding:0;font-size:1rem;line-height:1}app-toast .toast-close:hover{opacity:1;background:0 0;transition-duration:0s}app-time-picker{align-items:center;gap:var(--space-1);display:inline-flex}app-time-picker select{width:auto;padding:var(--space-2)}app-time-picker span{font-weight:600}app-date-range{align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}app-date-range .date-range-field{gap:var(--space-1);flex-direction:column;flex:1;min-width:10rem;display:flex}app-date-range .date-range-error{font-size:var(--text-sm);color:var(--color-error);width:100%;min-height:1.25rem}app-file-input{display:block}app-file-input .drop-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;cursor:pointer;transition:border-color var(--duration-hover-out), background-color var(--duration-hover-out);color:var(--color-text-secondary);font-size:var(--text-sm)}app-file-input .drop-zone:hover{border-color:var(--color-primary);background:var(--color-selected);transition-duration:0s}app-file-input .drop-zone[data-dragover]{border-color:var(--color-primary);background:var(--color-selected)}app-file-input .file-info{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary)}app-file-input .file-error{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-error)}app-dropdown{display:block;position:relative}app-dropdown .dropdown-input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:text}app-dropdown .dropdown-listbox{z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:16rem;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}app-dropdown .dropdown-listbox[hidden]{display:none}app-dropdown .dropdown-option{padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--text-sm);transition:background-color var(--duration-hover-out)}app-dropdown .dropdown-option:hover{background:var(--color-surface-alt);transition-duration:0s}app-dropdown .dropdown-option[aria-selected=true]{background:var(--color-surface-alt)}app-dropdown .dropdown-option[data-active]{background:var(--color-selected);color:var(--color-primary)}app-dropdown .dropdown-empty{padding:var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center}app-dialog dialog{border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-md);border:none;width:90vw;max-width:32rem;margin:auto}app-dialog dialog::backdrop{background:rgba(var(--color-black-rgb), .4)}app-dialog .dialog-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}app-dialog .dialog-title{font-size:var(--text-lg);font-weight:600}app-dialog .dialog-body{margin-bottom:var(--space-6)}app-dialog .dialog-footer{gap:var(--space-3);justify-content:flex-end;display:flex}app-table{display:block;overflow-x:auto}app-table table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}app-table th{padding:var(--space-3) var(--space-4);text-align:left;color:var(--color-text-secondary);background:var(--color-surface-alt);border-bottom:1px solid var(--color-border);white-space:nowrap;font-weight:600}app-table th button{font:inherit;color:var(--color-text-secondary);cursor:pointer;align-items:center;gap:var(--space-1);min-width:auto;transition:color var(--duration-hover-out);background:0 0;border:none;padding:0;font-weight:600;display:flex}app-table th button:hover{color:var(--color-text);background:0 0;transition-duration:0s}app-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text);transition:background-color var(--duration-hover-out)}app-table tr:hover td{background:var(--color-surface-alt);transition-duration:0s}app-table tr[data-clickable]{cursor:pointer}app-table .table-empty{padding:var(--space-8);text-align:center;color:var(--color-text-secondary)}app-table .table-pagination{padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-secondary);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}app-table .table-pagination button{border:1px solid var(--color-border);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-text);min-width:auto;transition:background-color var(--duration-hover-out);background:0 0}app-table .table-pagination button:disabled{opacity:.4}app-table .table-pagination button:hover:not(:disabled){background:var(--color-surface-alt);transition-duration:0s}app-anomaly-grid{display:block;overflow-x:auto}app-anomaly-grid table{border-collapse:collapse;white-space:nowrap;min-width:100%;font-size:.75rem}app-anomaly-grid thead th{background:var(--color-surface-alt);z-index:2;border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);text-align:center;color:var(--color-text-secondary);padding:.5rem .375rem;font-weight:600;position:sticky;top:0}app-anomaly-grid thead th:first-child{z-index:3;text-align:left;min-width:12rem;padding-left:.75rem;position:sticky;left:0}app-anomaly-grid tbody tr th{background:var(--color-surface);z-index:1;border-bottom:1px solid var(--color-border);border-right:2px solid var(--color-border);text-align:left;white-space:nowrap;min-width:12rem;transition:background-color var(--duration-hover-out);cursor:pointer;padding:.5rem .75rem;font-weight:500;position:sticky;left:0}app-anomaly-grid tbody tr th:hover{text-decoration:underline}app-anomaly-grid tbody tr:hover th{background:var(--color-surface-alt);transition-duration:0s}app-anomaly-grid td{border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);text-align:center;cursor:pointer;min-width:2rem;transition:opacity var(--duration-hover-out);padding:.375rem}app-anomaly-grid td:hover{opacity:.8;outline:1px solid var(--color-primary);transition-duration:0s}app-anomaly-grid td[data-anomaly=EMPTY]{background:var(--color-anomaly-empty)}app-anomaly-grid td[data-anomaly=INCOMPLETE]{background:var(--color-anomaly-incomplete)}app-anomaly-grid td[data-anomaly=CONFLICT]{background:var(--color-anomaly-conflict)}app-anomaly-grid td[data-anomaly=OK]{background:var(--color-presence)}app-anomaly-grid td[data-anomaly=WEEKEND]{background:var(--color-weekend)}app-anomaly-grid td[data-anomaly=HOLIDAY]{background:var(--color-holiday)}app-anomaly-grid td[data-anomaly=CLOSURE]{background:var(--color-closure)}app-anomaly-grid td:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}app-anomaly-grid th[data-weekend]{background:var(--color-surface-alt)}app-anomaly-grid .empty-state{text-align:center;color:var(--color-text-secondary);padding:2rem}app-anomaly-grid td[data-in-range]{background:var(--color-selected);outline:1px solid var(--color-primary);outline-offset:-1px}app-anomaly-grid[data-dragging]{user-select:none}app-anomaly-grid[data-dragging] td:hover{outline:none}app-calendar{display:block}app-calendar .cal-grid{touch-action:none;border-top:1px solid var(--color-border);border-left:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}app-calendar .cal-header{color:var(--color-text-secondary);text-align:center;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);padding:.5rem .25rem;font-size:.75rem;font-weight:600}app-calendar .cal-header:first-child{border-top-left-radius:var(--radius-lg)}app-calendar .cal-header:nth-child(7){border-top-right-radius:var(--radius-lg)}app-calendar .cal-cell:nth-last-child(7){border-bottom-left-radius:var(--radius-lg)}app-calendar .cal-cell:last-child{border-bottom-right-radius:var(--radius-lg)}app-calendar .cal-cell{text-align:center;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);cursor:pointer;min-width:0;min-height:4.8rem;padding:.25rem .5rem;font-size:.8rem;position:relative;overflow:hidden}app-calendar .cal-cell[data-editable]:hover:not([aria-selected=true]){outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}app-calendar .cal-cell:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;z-index:1}app-calendar .cal-cell[data-weekend]{background:var(--color-weekend);cursor:default;color:var(--color-text-muted)}app-calendar .cal-cell[data-holiday]{background:var(--color-holiday)}app-calendar .cal-cell[data-closure]{background:var(--color-closure)}app-calendar .cal-cell[data-anomaly=EMPTY]:not([data-today]),app-calendar .cal-cell[data-anomaly=INCOMPLETE]:not([data-today]){background:var(--color-anomaly-empty)}app-calendar .cal-cell[data-anomaly=CONFLICT]{background:var(--color-anomaly-conflict)}app-calendar .cal-cell[aria-selected=true]{outline:2px solid var(--color-primary);outline-offset:-2px;z-index:1}app-calendar .cal-cell[data-in-range]{background:var(--color-selected);outline:1px solid var(--color-primary);outline-offset:-1px;z-index:1}app-calendar[data-dragging]{user-select:none}app-calendar[data-dragging] .cal-cell:hover{outline:none}app-calendar .cal-cell[data-consolidated]{opacity:.7}app-calendar .cal-cell[data-other-month]{opacity:.4;transition:opacity var(--duration-hover-out)}app-calendar .cal-cell[data-other-month][data-editable]:hover{opacity:1;transition-duration:0s}app-calendar .day-header{justify-content:flex-end;align-items:center;gap:.25rem;margin-block-end:var(--space-2);display:flex}app-calendar .day-num{font-variant-numeric:tabular-nums;text-align:right;width:2ch;font-size:1rem;display:inline-block}app-calendar .cal-cell[data-today]{background:var(--color-selected)}app-calendar .cal-cell[data-today] .day-num{font-weight:700}app-calendar .day-attach-icon{color:var(--color-text-muted);display:flex}app-calendar .day-icon{color:var(--color-primary);display:flex}app-calendar .cal-cell[data-holiday] .day-icon{color:var(--color-warning)}app-calendar .cal-cell[data-closure] .day-icon{color:var(--color-text-muted)}app-calendar .day-body{min-height:3rem}app-calendar .day-info{color:var(--color-text);font-variant-numeric:tabular-nums;text-align:left;grid-template-columns:1fr auto;margin-top:.125rem;font-size:.7rem;display:grid}app-calendar .day-badge{background:rgba(var(--color-black-rgb), .08);white-space:nowrap;text-overflow:ellipsis;border-radius:.25rem;max-width:100%;margin-top:.125rem;padding:.1rem .25rem;font-size:.65rem;display:block;overflow:hidden}.calendar-nav{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.calendar-title{font-size:var(--text-lg);font-weight:600}.day-record{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface-alt);border-radius:var(--radius-md);font-size:var(--text-sm);display:flex}.day-record[data-type=presence]{border-left:3px solid var(--color-success)}.day-record[data-type=absence]{border-left:3px solid var(--color-error)}.day-record[data-type=overtime]{border-left:3px solid var(--color-warning)}.day-records{display:block}.day-record-hours{font-variant-numeric:tabular-nums;margin-left:auto}.day-record-icon-btn{cursor:pointer;border-radius:var(--radius-sm);min-width:auto;transition:color var(--duration-hover-out), background-color var(--duration-hover-out), opacity var(--duration-hover-out);background:0 0;border:none;align-items:center;padding:0;line-height:1;display:inline-flex}.day-record-attach{color:var(--color-text-secondary);justify-content:center;width:24px;height:24px;&[data-empty]{opacity:.3}&:hover{color:var(--color-text-muted);opacity:1;transition-duration:0s}}.day-record-delete{color:var(--color-error);border-radius:22%;overflow:hidden;&:hover{background:rgba(var(--color-error-rgb), .15);transition-duration:0s}}.day-popover{z-index:200;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-4);min-width:20rem;max-width:32rem;max-height:80vh;display:block;position:absolute;top:4rem;left:50%;overflow-y:auto;transform:translate(-50%)}.day-popover button{align-self:flex-end}.day-popover select{width:auto}.day-popover .cluster{flex-wrap:nowrap}.day-popover .form-group{gap:var(--space-2);flex-direction:row}.day-popover .form-group:not(:has(textarea)){align-items:center}.day-popover label{text-align:left;min-width:6rem}.day-popover .form-group>label{align-self:flex-start}.day-popover .cluster .cluster label{min-width:auto}.day-popover .cluster>.cluster:first-child{margin-left:calc(6rem + var(--space-2))}.day-popover .cluster>.cluster+.cluster{margin-left:var(--space-4)}.day-popover app-date-range .date-range-field{align-items:center;gap:var(--space-2);flex-direction:row;min-width:auto}.day-popover app-date-range .date-range-field label{min-width:2.1rem}.day-popover app-date-range .date-range-error{min-height:0}.day-popover app-date-range .date-range-error:empty{display:none}.day-popover app-file-input{width:100%}.day-popover-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.day-popover-title,.day-popover h3{margin:0}.day-popover-section{display:block}.day-popover-close{cursor:pointer;color:var(--color-text-secondary);padding:var(--space-1);border-radius:var(--radius-sm);min-width:auto;transition:background-color var(--duration-hover-out);background:0 0;border:none;font-size:1.2rem}.day-popover-close:hover{background:var(--color-surface-alt);transition-duration:0s}}@layer utilities{.text-sm{font-size:var(--text-sm)}.text-secondary{color:var(--color-text-secondary)}.font-bold{font-weight:700}.font-mono{font-family:var(--font-mono)}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}.gap-4{gap:var(--space-4)}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.w-full{width:100%}.overflow-x-auto{overflow-x:auto}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important}}}