:root{color-scheme:dark;--primary: #3b82f6;--primary-hover: #2563eb;--secondary: #94a3b8;--background: #0f172a;--surface: #1e293b;--surface-hover: #334155;--text-main: #f8fafc;--text-muted: #cbd5e1;--danger: #ef4444;--success: #10b981;--warning: #f59e0b;--border: rgba(255, 255, 255, .1);--glass-bg: rgba(30, 41, 59, .7);--glass-border: rgba(255, 255, 255, .08);--input-bg: rgba(15, 23, 42, .6);--subtle-bg: rgba(255, 255, 255, .08);--subtle-hover: rgba(255, 255, 255, .05);--table-header-bg: rgba(255, 255, 255, .05);--table-row-hover: rgba(255, 255, 255, .04);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .3);--text: #f8fafc}:root[data-theme=light]{color-scheme:light;--primary: #2563eb;--primary-hover: #1d4ed8;--secondary: #64748b;--background: #f1f5f9;--surface: #ffffff;--surface-hover: #e2e8f0;--text-main: #0f172a;--text-muted: #475569;--danger: #dc2626;--success: #059669;--warning: #d97706;--border: rgba(15, 23, 42, .14);--glass-bg: rgba(255, 255, 255, .82);--glass-border: rgba(255, 255, 255, .9);--input-bg: rgba(255, 255, 255, .9);--subtle-bg: rgba(15, 23, 42, .05);--subtle-hover: rgba(15, 23, 42, .08);--table-header-bg: #e2e8f0;--table-row-hover: rgba(15, 23, 42, .04);--glass-shadow: 0 8px 24px rgba(15, 23, 42, .08);--text: #0f172a}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Cairo,sans-serif;background-color:var(--background);color:var(--text-main);line-height:1.6;min-height:100vh;display:flex;flex-direction:column}.glass{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}h1,h2,h3,h4,h5,h6{color:var(--text-main);font-weight:700;margin-bottom:1rem}h1{font-size:2.25rem}h2{font-size:1.75rem}h3{font-size:1.25rem}p{color:var(--text-muted);margin-bottom:1rem}input,select,button{font-family:inherit;font-size:1rem;transition:all .2s ease}input,select{width:100%;padding:.75rem 1rem;background-color:var(--input-bg);border:1px solid var(--border);border-radius:.5rem;color:var(--text-main);outline:none}select option{background-color:var(--surface);color:var(--text-main)}::selection{background-color:var(--primary);color:#fff}::-moz-selection{background-color:var(--primary);color:#fff}input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 2px #3b82f633}button{cursor:pointer;padding:.75rem 1.5rem;border-radius:.5rem;border:none;background-color:var(--primary);color:#fff;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}button:hover{background-color:var(--primary-hover);transform:translateY(-1px)}button:active{transform:translateY(0)}.sortable-header{width:auto;padding:0;border:0;background:transparent;color:inherit;font:inherit;display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.sortable-header:hover{background:transparent;color:var(--primary);transform:none}button.secondary{background-color:var(--subtle-bg);border:1px solid var(--border);color:var(--text-main)}button.secondary:hover{background-color:var(--surface-hover);color:var(--text-main)}button.danger{background-color:#ef44441a;color:var(--danger);border:1px solid rgba(239,68,68,.2)}button.danger:hover{background-color:var(--danger);color:#fff}.screen{min-height:100vh;display:flex;flex-direction:column}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(circle at top right,rgba(59,130,246,.15) 0%,transparent 40%),radial-gradient(circle at bottom left,rgba(16,185,129,.1) 0%,transparent 40%)}.login-box{width:100%;max-width:420px;padding:2.5rem;border-radius:1rem;text-align:center}.login-box h1{background:linear-gradient(135deg,#60a5fa,#3b82f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.5rem}.login-box p.subtitle{margin-bottom:2rem;color:var(--text-muted)}.login-form{display:flex;flex-direction:column;gap:1rem}.error-text{color:var(--danger);font-size:.875rem;margin-top:.5rem;animation:fadeIn .3s ease}.topbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30;background:var(--surface);transition:padding .2s ease}.topbar.compact{padding:.45rem 1.5rem}.topbar.compact .brand{font-size:1.05rem}.topbar.compact .brand-title{display:none}.topbar.compact .brand>div{padding:.35rem!important}.theme-select{width:auto;min-width:7.5rem;padding:.45rem .65rem;font-size:.85rem;cursor:pointer}.theme-control{display:inline-flex;align-items:center}.brand{font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:.75rem}.user-info{display:flex;align-items:center;gap:1.5rem}.tabs{display:flex;gap:1rem;padding:1rem 2rem;overflow-x:auto;border-bottom:1px solid var(--border)}.mobile-menu-trigger{display:none}.mobile-menu-button{display:flex;align-items:center;justify-content:flex-start;gap:.65rem;width:100%;min-height:48px;text-align:start}.mobile-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0206179e;animation:fadeIn .18s ease}.mobile-navigation-drawer{position:absolute;inset-block:0;inset-inline-start:0;display:flex;flex-direction:column;gap:.4rem;width:min(86vw,340px);height:100dvh;padding:1rem;overflow-y:auto;background:var(--surface);border-inline-end:1px solid var(--border);box-shadow:var(--glass-shadow);animation:mobileDrawerIn .22s ease-out}.mobile-navigation-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:48px;margin-bottom:.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.mobile-navigation-heading button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:.5rem}.mobile-navigation-item{width:100%;min-height:48px;padding:.7rem .85rem;border:1px solid transparent;border-radius:.65rem;background:transparent;color:var(--text-main);font:inherit;text-align:start;cursor:pointer}.mobile-navigation-item:hover,.mobile-navigation-item.active{background:var(--subtle-bg);border-color:var(--border);color:var(--primary)}@keyframes mobileDrawerIn{0%{opacity:.7;transform:translate(18px)}to{opacity:1;transform:translate(0)}}.tab-btn{background:transparent;color:var(--text-muted);border:none;padding:.5rem 1rem;border-radius:2rem;font-weight:600;white-space:nowrap}.tab-btn:hover{background:var(--subtle-hover);color:var(--text-main);transform:none}.tab-btn.active{background:var(--primary);color:#fff}main.content{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.toolbar{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-bottom:2rem;padding:1rem;border-radius:.75rem}.toolbar label{font-weight:600;color:var(--text-muted)}.toolbar input,.toolbar select{width:auto;min-width:200px}.table-container{overflow-x:auto;border-radius:.75rem;border:1px solid var(--border)}.table-responsive{overflow-x:auto;max-width:100%}.schedule-subtabs{display:flex;gap:.5rem;border-bottom:1px solid var(--border);padding-bottom:.5rem}.schedule-subtab-select{display:none}.schedule-pattern-week{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;border:1px solid var(--border);border-radius:.75rem;padding:.75rem}.schedule-pattern-week legend{padding:0 .4rem;font-weight:700}.schedule-pattern-day{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.schedule-pattern-day select{min-width:0;max-width:65%}.schedule-pattern-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.schedule-modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.team-roster-filters{display:flex;flex-wrap:wrap;gap:.6rem}.team-roster-filters>*{flex:1 1 180px;min-width:0}.team-roster-grid{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0}.team-roster-grid th,.team-roster-grid td{min-width:74px;padding:.35rem;text-align:center;border-bottom:1px solid var(--border)}.team-roster-grid thead th{position:sticky;top:0;z-index:1;background:var(--bg-card)}.team-roster-grid th:first-child{position:sticky;right:0;z-index:2;min-width:190px;text-align:right;background:var(--bg-card)}.team-roster-grid thead th:first-child{z-index:3}.team-roster-grid th small,.team-roster-grid tbody th small,.team-roster-mobile-card small{display:block;color:var(--text-muted);font-size:.7rem;font-weight:400}.team-roster-cell{width:100%;min-height:42px;padding:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem}.team-roster-cell.is-off{color:#ef4444}.team-roster-cell.has-roster{outline:2px solid var(--primary);outline-offset:-2px}.team-roster-mobile-day,.team-roster-mobile-list{display:none}.team-roster-mobile-day label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600}.team-roster-mobile-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:.75rem;border:1px solid var(--border);border-radius:.65rem}.team-roster-mobile-schedule{text-align:center}.team-roster-mobile-schedule .is-off{color:#ef4444}.team-roster-pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.75rem;color:var(--text-muted);font-size:.85rem;margin-top:1rem}table{width:100%;border-collapse:collapse;text-align:right}th,td{padding:1rem 1.5rem;border-bottom:1px solid var(--border)}th{background-color:var(--table-header-bg);color:var(--text-main);font-weight:700;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}tbody tr:hover{background-color:var(--table-row-hover)}.badge{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600}.badge.active,.status-pill.done{background-color:#10b9811a;color:var(--success);border:1px solid rgba(16,185,129,.2)}.badge.inactive,.status-pill.error{background-color:#ef44441a;color:var(--danger);border:1px solid rgba(239,68,68,.2)}.status-pill.pending{background-color:#f59e0b1a;color:var(--warning);border:1px solid rgba(245,158,11,.2)}.status-pill.sent{background-color:#3b82f61a;color:var(--primary);border:1px solid rgba(59,130,246,.2)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem;animation:fadeIn .2s ease}.modal-box{width:100%;max-width:500px;padding:2rem;border-radius:1rem;max-height:90vh;overflow-y:auto;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}.modal-actions{display:flex;gap:1rem;margin-top:2rem}.modal-actions button{flex:1}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.text-center{text-align:center}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.flex{display:flex}.gap-2{gap:.5rem}.gap-4{gap:1rem}.empty-state{text-align:center;padding:3rem}.attendance-mobile-list{display:none}.attendance-log-modal{text-align:start}.attendance-log-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.attendance-log-modal-header h3{margin:0}.attendance-log-modal-header button{min-width:44px;min-height:44px;justify-content:center}.attendance-log-details{display:grid;gap:.25rem;margin:0 0 1rem}.attendance-log-details>div{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.attendance-log-details dt{color:var(--text-muted)}.attendance-log-details dd{margin:0;text-align:end;overflow-wrap:anywhere}.attendance-log-edit{width:100%;min-height:44px;justify-content:center;color:var(--text-muted)}.card{border-radius:.75rem;background-color:var(--surface);border:1px solid var(--border)}.overview-clickable-card{cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.overview-clickable-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px -5px #0006}.overview-clickable-card:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.overview-kpi-card{position:relative;overflow:hidden;border-left:4px solid var(--kpi-accent);background:linear-gradient(135deg,var(--kpi-tint) 0%,rgba(30,41,59,.7) 100%)}.overview-kpi-working{--kpi-accent: #34d399;--kpi-tint: rgba(16, 185, 129, .15);--kpi-icon-bg: rgba(16, 185, 129, .2)}.overview-kpi-departed{--kpi-accent: #60a5fa;--kpi-tint: rgba(59, 130, 246, .15);--kpi-icon-bg: rgba(59, 130, 246, .2)}.overview-kpi-absent{--kpi-accent: #f87171;--kpi-tint: rgba(239, 68, 68, .15);--kpi-icon-bg: rgba(239, 68, 68, .2)}.overview-kpi-total{--kpi-accent: #a5b4fc;--kpi-tint: rgba(99, 102, 241, .15);--kpi-icon-bg: rgba(99, 102, 241, .2);border-left-color:var(--primary)}:root[data-theme=light] .overview-kpi-card{background:var(--glass-bg)}:root[data-theme=light] .overview-kpi-working{--kpi-accent: #047857}:root[data-theme=light] .overview-kpi-departed{--kpi-accent: #1d4ed8}:root[data-theme=light] .overview-kpi-absent{--kpi-accent: #b91c1c}:root[data-theme=light] .overview-kpi-total{--kpi-accent: #4338ca}.stat-card{padding:1.25rem;border-radius:.75rem;transition:transform .2s ease,box-shadow .2s ease}.biometrics-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.biometrics-stats-grid .stat-card{display:flex;align-items:center;gap:1rem}.biometrics-stat-icon{display:inline-flex;flex:0 0 3rem;width:3rem;height:3rem;align-items:center;justify-content:center;border-radius:.75rem}.biometrics-stat-info{display:flex;min-width:0;flex-direction:column}.stat-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px -5px #0006}.stat-label{font-size:.85rem;color:var(--text-muted);font-weight:600}.stat-value{font-size:1.6rem;font-weight:700;margin-top:.25rem}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.alert{padding:1rem 1.25rem;border-radius:.5rem;font-weight:600}.alert.success{background-color:#10b98126;color:#34d399;border:1px solid rgba(16,185,129,.3)}.alert.error{background-color:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.3)}.badge.info{background-color:#3b82f626;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.badge.warning{background-color:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.badge.success{background-color:#10b98126;color:#34d399;border:1px solid rgba(16,185,129,.3)}.badge.danger{background-color:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.3)}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@media (max-width: 640px){.topbar,.topbar.compact{align-items:center;flex-direction:row;gap:.5rem;padding:.45rem .75rem}.topbar .brand-title{display:none}.brand{font-size:1rem;gap:.5rem}.user-info{width:auto;justify-content:space-between;gap:.5rem}.topbar .theme-select{min-width:0;width:auto;padding:.4rem}.tabs{padding:.75rem 1rem;overflow:visible}.tabs .tab-btn{display:none}.mobile-menu-trigger{display:block;width:100%}.tab-btn{padding:.625rem .875rem}main.content{padding:1rem}.toolbar{gap:.75rem;margin-bottom:1.25rem;padding:.75rem}.toolbar input,.toolbar select{width:100%;min-width:0}.toolbar>div{width:100%;min-width:0}.toolbar>div select{flex:1;width:auto}.schedule-subtabs{display:block;border:0;padding:0}.schedule-subtabs>button{display:none!important}.schedule-subtab-select{display:block;width:100%;min-width:0;min-height:44px}.mobile-grid{grid-template-columns:minmax(0,1fr)!important;gap:1rem!important}.mobile-grid>.glass{padding:1rem!important}.table-container th,.table-container td,.table th,.table td{padding:.75rem}.mobile-card-table{overflow:visible;border:0;background:transparent;box-shadow:none}.attendance-desktop-table{display:none}.attendance-mobile-list{display:grid;gap:.45rem}.attendance-mobile-card,.attendance-mobile-empty{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:.65rem;text-align:start}.attendance-mobile-card{display:flex;flex-direction:column;gap:.3rem;color:var(--text);cursor:pointer}.attendance-mobile-card-main,.attendance-mobile-card-meta{display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-width:0}.attendance-mobile-card-main strong,.attendance-mobile-card-meta>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attendance-mobile-card-main strong{font-size:.9rem}.attendance-mobile-card-main .badge{flex:0 0 auto;padding:.2rem .45rem;font-size:.72rem}.attendance-mobile-card-meta{color:var(--text-muted);font-size:.74rem}.attendance-mobile-corrected{align-self:flex-start;color:var(--warning);font-size:.7rem}.attendance-mobile-empty{color:var(--text-muted);text-align:center}.mobile-card-table table,.mobile-card-table tbody{display:block}.mobile-card-table thead{display:none}.mobile-card-table tbody tr{display:block;margin-bottom:.75rem;padding:.25rem .875rem;border:1px solid var(--border);border-radius:.75rem;background:var(--surface)}.mobile-card-table tbody td{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.65rem 0;text-align:start;overflow-wrap:anywhere}.mobile-card-table tbody td[data-label]:before{flex:0 0 36%;color:var(--text-muted);font-size:.8rem;font-weight:600;content:attr(data-label)}.mobile-card-table tbody td[colspan]{display:block;border:0;text-align:center}.mobile-card-table td[data-label=الإجراءات] .flex{flex:1;justify-content:flex-start}.mobile-card-table td[data-label=الإجراءات] button{min-width:44px;min-height:44px}.team-roster-desktop{display:none}.team-roster-mobile-day,.team-roster-mobile-list{display:block}.team-roster-mobile-list{display:flex;flex-direction:column;gap:.5rem}.team-roster-filters>*{flex-basis:100%;min-height:44px}.team-roster-mobile-card button{min-height:44px}.modal-overlay{align-items:flex-end;padding:0}.modal-box{width:100%;max-width:none;max-height:92dvh;padding:1.25rem 1rem;border-radius:1rem 1rem 0 0}.schedule-pattern-modal{max-width:none!important}.schedule-pattern-week,.schedule-pattern-fields{grid-template-columns:minmax(0,1fr)}.schedule-pattern-day select{width:62%;max-width:none;min-height:44px}.schedule-modal-actions{position:sticky;bottom:-1.25rem;z-index:1;justify-content:stretch;margin:0 -1rem -1.25rem;padding:.75rem 1rem 1.25rem;background:var(--surface);border-top:1px solid var(--border)}.schedule-modal-actions button{flex:1;min-height:44px}.modal-box .flex.gap-4{flex-direction:column;gap:.75rem}.modal-actions{gap:.75rem}.login-box{width:calc(100% - 2rem);padding:1.5rem}}@media (max-width: 380px){.user-info{align-items:flex-start;flex-direction:column}.topbar .user-info{align-items:center;flex-direction:row}.user-info button{width:100%}.topbar #welcome-user{display:none}.topbar .user-info button{width:auto}.modal-actions{flex-direction:column}}
