:root{--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#dbeafe;--success:#10b981;--success-light:#d1fae5;--warning:#f59e0b;--warning-light:#fef3c7;--danger:#ef4444;--danger-light:#fee2e2;--bg:#f1f5f9;--bg-white:#fff;--text:#1e293b;--text-light:#64748b;--border:#e2e8f0;--shadow:0 1px 3px #0000001a;--shadow-md:0 4px 6px #0000001a;--radius:8px}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;width:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f1f5f9;background:var(--bg);color:#1e293b;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.6}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh;width:100%}button,input,select,textarea{font-family:inherit}button{background:none;border:none;cursor:pointer}a{color:#2563eb;color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.spinner{border:4px solid #e2e8f0;border-top:4px solid #2563eb;border:4px solid var(--border);border-top-color:var(--primary);height:40px;width:40px}.spinner-small{border-width:2px;height:24px;width:24px}.btn-primary{background:var(--primary)}.btn-primary:hover{background:var(--primary-dark);box-shadow:0 4px 6px #0000001a;box-shadow:var(--shadow-md)}.btn-primary:disabled{background:#64748b;background:var(--text-light);opacity:.6}.btn-secondary{background:#e2e8f0;background:var(--border);color:#1e293b;color:var(--text)}.btn-secondary:hover{background:#cbd5e1}.btn-danger{background:#ef4444;background:var(--danger)}.btn-danger:hover{background:#dc2626}.btn-success{background:#10b981;background:var(--success)}.btn-success:hover{background:#059669}.btn-warning{background:#f59e0b;background:var(--warning)}.btn-warning:hover{background:#d97706}.btn-xs{font-size:.8rem;padding:.375rem .75rem}.card{background:#fff;background:var(--bg-white);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);box-shadow:0 1px 3px #0000001a;box-shadow:var(--shadow);padding:1.5rem}.card-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);margin-bottom:1.5rem;padding-bottom:1rem}.card-header h2{color:#1e293b;color:var(--text);font-size:1.25rem;margin:0}.card-body{padding:1rem 0}.card-footer{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem}.badge{border-radius:999px;font-size:.75rem;padding:.25rem .75rem}.badge-primary{background:#dbeafe;background:var(--primary-light);color:#1d4ed8;color:var(--primary-dark)}.badge-success{background:#d1fae5;background:var(--success-light);color:#047857}.badge-warning{background:#fef3c7;background:var(--warning-light);color:#92400e}.badge-danger{background:#fee2e2;background:var(--danger-light);color:#991b1b}.badge-info{background:#e0f2fe;color:#0369a1}.form-label{color:#1e293b;color:var(--text);display:block;font-size:.95rem;font-weight:500;margin-bottom:.5rem}.form-label .required{color:#ef4444;color:var(--danger)}.form-control,.form-select,.form-textarea{background:#fff;background:var(--bg-white);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);color:#1e293b;color:var(--text);font-family:inherit;font-size:.95rem;padding:.75rem;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.form-control:focus,.form-select:focus,.form-textarea:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.form-control:disabled,.form-select:disabled{background:#f1f5f9;background:var(--bg);cursor:not-allowed;opacity:.6}.form-textarea{min-height:120px;resize:vertical}.form-error{color:#ef4444;color:var(--danger)}.form-error,.form-help{font-size:.85rem;margin-top:.25rem}.form-help{color:#64748b;color:var(--text-light)}.table{border-collapse:collapse;font-size:.95rem;width:100%}.table th{background:#f1f5f9;background:var(--bg);border-bottom:2px solid #e2e8f0;border-bottom:2px solid var(--border);color:#1e293b;color:var(--text);font-weight:600;padding:1rem;text-align:left}.table td{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);padding:1rem}.table tbody tr:hover{background:#f1f5f9;background:var(--bg)}.table tbody tr:last-child td{border-bottom:none}.table-actions{align-items:center;display:flex;gap:.5rem}.alert{align-items:flex-start;border-radius:var(--radius);display:flex;gap:.75rem;margin-bottom:1rem}.alert-success{background:#d1fae5;background:var(--success-light);border-color:#10b981;border-color:var(--success);color:#047857}.alert-warning{background:#fef3c7;background:var(--warning-light);border-color:#f59e0b;border-color:var(--warning);color:#92400e}.alert-danger{background:#fee2e2;background:var(--danger-light);border-color:#ef4444;border-color:var(--danger);color:#991b1b}.alert-info{background:#e0f2fe;border-color:#0284c7;color:#0369a1}.alert-close{background:none;border:none;color:inherit;cursor:pointer;font-size:1.25rem;margin-left:auto}.toast-container{pointer-events:none;position:fixed;right:1.5rem;top:1.5rem;z-index:9999}.toast{animation:slideIn .3s ease;background:#fff;background:var(--bg-white);border-left:4px solid;border-radius:8px;border-radius:var(--radius);box-shadow:0 4px 6px #0000001a;box-shadow:var(--shadow-md);margin-bottom:1rem;max-width:400px;padding:1rem 1.5rem;pointer-events:auto}.toast-success{border-left-color:#10b981;border-left-color:var(--success);color:#047857}.toast-error{border-left-color:#ef4444;border-left-color:var(--danger);color:#991b1b}.toast-info{border-left-color:#0284c7;color:#0369a1}.grid{grid-gap:1.5rem;display:grid;gap:1.5rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.flex{display:flex}.flex-between{justify-content:space-between}.flex-between,.flex-center{align-items:center;display:flex}.flex-center{justify-content:center}.flex-col{flex-direction:column}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.m-1{margin:.5rem}.m-2{margin:1rem}.m-3{margin:1.5rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:#64748b;color:var(--text-light)}.text-sm{font-size:.85rem}.text-lg{font-size:1.125rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}@media (max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.hide-mobile{display:none}}.loading{padding:2rem}.empty-state{color:#64748b;padding:3rem 1.5rem}.empty-state-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h3{color:#1e293b;color:var(--text);margin-bottom:.5rem}.placeholder-page{background:var(--bg-white);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text-light);font-size:1.1rem;min-height:50vh;padding:2rem;text-align:center}.loading,.placeholder-page{align-items:center;display:flex;justify-content:center}.loading{background:var(--bg);min-height:100vh}.loading .card{max-width:400px;text-align:center}.loading .card h1{color:var(--text);margin-bottom:1rem}.loading .card p{color:var(--text-light);margin-bottom:2rem}.modal-overlay{animation:fadeIn .2s ease;background:#00000080}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{animation:slideUp .3s ease;background:var(--bg-white);border-radius:var(--radius);box-shadow:var(--shadow-md);max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.modal-close{align-items:center;background:none;border:none;border-radius:4px;color:var(--text-light);cursor:pointer;display:flex;font-size:1.5rem;height:32px;justify-content:center;padding:0;transition:background .2s ease;width:32px}.modal-close:hover{background:var(--bg);color:var(--text)}.modal-body{padding:1.5rem}.modal-footer{border-top:1px solid var(--border);display:flex;gap:.5rem;justify-content:flex-end;padding:1.5rem}.breadcrumb{align-items:center;display:flex;font-size:.95rem;gap:.5rem;margin-bottom:1.5rem}.breadcrumb a{color:var(--primary)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb .separator{color:var(--text-light);margin:0 .25rem}.breadcrumb .current{color:var(--text);font-weight:500}.page-title{color:var(--text);font-size:2rem;font-weight:700;margin-bottom:.5rem}.page-subtitle{color:var(--text-light);font-size:1rem}.section{margin-bottom:2rem}.section-title{border-bottom:2px solid var(--border);color:var(--text);font-size:1.25rem;font-weight:600;margin-bottom:1rem;padding-bottom:.5rem}.list-view{display:flex;flex-direction:column;gap:1rem}.list-item{align-items:center;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;display:flex;justify-content:space-between;padding:1.5rem;transition:all .2s ease}.list-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.list-item-info{flex:1 1}.list-item-title{color:var(--text);font-weight:600;margin-bottom:.25rem}.list-item-subtitle{color:var(--text-light);font-size:.9rem}.list-item-actions{display:flex;gap:.5rem;margin-left:1rem}.pagination{gap:.5rem}.pagination-item{align-items:center;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;display:flex;font-weight:500;height:40px;justify-content:center;transition:all .2s ease;width:40px}.pagination-item:hover:not(.disabled):not(.active){border-color:var(--primary);color:var(--primary)}.pagination-item.active{background:var(--primary);border-color:var(--primary);color:#fff}.pagination-item.disabled{cursor:not-allowed;opacity:.5}.search-bar{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.search-input{flex:1 1;min-width:250px}.search-input input{width:100%}.filter-group{align-items:center}.filter-group label{color:var(--text);font-weight:500;white-space:nowrap}.card-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;margin-bottom:2rem}.card-grid.grid-2{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.card-grid.grid-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.card-grid.grid-4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stat-label{margin-bottom:.5rem}.stat-change{align-items:center;display:flex;font-size:.85rem;gap:.25rem}.stat-change.positive{color:var(--success)}.stat-change.negative{color:var(--danger)}.tabs{border-bottom:2px solid var(--border);display:flex;gap:1rem;margin-bottom:1.5rem}.tab-button{background:none;border:none;border-bottom:3px solid #0000;color:var(--text-light);cursor:pointer;font-weight:600;margin-bottom:-2px;padding:1rem 0;transition:all .2s ease}.tab-button:hover{color:var(--text)}.tab-button.active{border-bottom-color:var(--primary);color:var(--primary)}.tab-content{animation:fadeIn .2s ease}.tooltip{display:inline-block;position:relative}.tooltip-text{background-color:var(--text);border-radius:4px;bottom:125%;color:#fff;font-size:.85rem;left:50%;margin-left:-50px;opacity:0;padding:.5rem .75rem;position:absolute;text-align:center;transition:opacity .3s;visibility:hidden;white-space:nowrap;z-index:1}.tooltip:hover .tooltip-text{opacity:1;visibility:visible}@media (max-width:768px){.page-title,.stat-value{font-size:1.5rem}.card-grid.grid-2,.card-grid.grid-3,.card-grid.grid-4{grid-template-columns:1fr}.list-item{align-items:flex-start;flex-direction:column}.list-item-actions{margin-left:0;margin-top:1rem;width:100%}.search-bar{flex-direction:column}.search-input{min-width:100%}.modal{max-height:95vh;width:95%}.tabs{overflow-x:auto}}.layout{background:var(--bg);display:flex;min-height:100vh}.sidebar{background:linear-gradient(180deg,#1e293b,#0f172a);box-shadow:2px 0 4px #0000001a;color:#fff;height:100vh;left:0;overflow-y:auto;position:fixed;top:0;transition:transform .3s ease;width:260px;z-index:999}.sidebar-header{border-bottom:1px solid #ffffff1a}.sidebar-header .logo{color:#fff;font-size:1.25rem;font-weight:700;margin:0}.read-only-banner{background:#fbbf24;color:#78350f;font-size:.75rem;font-weight:700;letter-spacing:.1em;padding:.5rem 1rem;text-align:center;text-transform:uppercase}.sidebar-close{background:none;border:none;color:#fff;cursor:pointer;display:none;font-size:1.5rem;padding:0}.sidebar-nav{display:flex;flex-direction:column;padding:1rem 0}.nav-item{align-items:center;border-left:3px solid #0000;color:#ffffffb3;display:flex;gap:1rem;padding:.75rem 1.5rem;position:relative;text-decoration:none;transition:all .2s ease}.nav-item:hover{background:#ffffff1a;color:#fff;padding-left:1.25rem}.nav-item.active{background:#2563eb1a;border-left-color:var(--primary);color:#fff;font-weight:600}.nav-item .badge{font-size:.7rem;margin-left:auto;padding:.25rem .5rem}.sidebar-divider{background:#ffffff1a;height:1px;margin:1rem 0}.admin-section{padding:1rem 0}.admin-section h3{color:#ffffff80;font-size:.75rem;font-weight:700;margin:0;padding:.5rem 1.5rem;text-transform:uppercase}.sidebar-overlay{background:#00000080;display:none;inset:0;position:fixed;z-index:998}.main-wrapper{display:flex;flex:1 1;flex-direction:column;margin-left:260px;min-height:100vh}.header{background:var(--bg-white);border-bottom:1px solid var(--border);box-shadow:var(--shadow);justify-content:space-between;padding:1rem 2rem;position:sticky;top:0;z-index:100}.header,.header-left{align-items:center;display:flex}.header-left{gap:1rem}.hamburger{background:none;border:none;color:var(--text);cursor:pointer;display:none;font-size:1.5rem;padding:0}.header .page-title{color:var(--text);font-size:1.25rem;font-weight:600;margin:0}.header-right{gap:1.5rem}.notification-icon{position:relative}.notification-link{align-items:center;border-radius:var(--radius);color:var(--text-light);cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:color .2s ease}.notification-link:hover{background:var(--primary-light);color:var(--primary)}.notification-badge{background:var(--danger);border-radius:50%;color:#fff;font-size:.7rem;font-weight:700;height:20px;justify-content:center;position:absolute;right:0;top:0;width:20px}.notification-badge,.user-menu{align-items:center;display:flex}.user-menu{background:var(--bg);border-radius:var(--radius);gap:.75rem;padding:.5rem 1rem}.user-avatar{align-items:center;background:linear-gradient(135deg,var(--primary) 0,var(--primary-dark) 100%);border-radius:50%;color:#fff;display:flex;font-size:.9rem;font-weight:700;height:32px;justify-content:center;width:32px}.user-name{color:var(--text);font-weight:500;white-space:nowrap}.logout-btn{align-items:center;background:none;border:none;border-radius:4px;color:var(--text-light);cursor:pointer;display:flex;justify-content:center;padding:.25rem;transition:color .2s ease}.logout-btn:hover{background:var(--danger-light);color:var(--danger)}.content{flex:1 1;overflow-y:auto;padding:2rem}.content::-webkit-scrollbar{width:8px}.content::-webkit-scrollbar-track{background:var(--bg)}.content::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.content::-webkit-scrollbar-thumb:hover{background:var(--text-light)}@media (max-width:768px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-close,.sidebar-overlay{display:block}.main-wrapper{margin-left:0}.hamburger{display:block}.header{padding:1rem}.header-right{gap:1rem}.header .page-title{font-size:1rem}.user-name{display:none}.content{padding:1rem}.sidebar{width:280px}}@media (max-width:480px){.header{flex-wrap:wrap;gap:1rem}.header-left{flex:1 1;min-width:0;order:1}.header-right{flex:0 0 auto;order:2}.sidebar{max-width:280px;width:100%}}@media (prefers-color-scheme:dark){.sidebar{background:linear-gradient(180deg,#0f172a,#020617)}}.login-container{align-items:center;background:linear-gradient(135deg,var(--primary) 0,var(--primary-dark) 100%);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{animation:slideUp .5s ease;background:var(--bg-white);border-radius:var(--radius);box-shadow:0 10px 40px #0003;max-width:420px;padding:3rem 2rem;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.login-header{margin-bottom:2rem;text-align:center}.login-header .logo{align-items:center;background:linear-gradient(135deg,var(--primary) 0,var(--primary-dark) 100%);border-radius:50%;color:#fff;display:flex;height:64px;justify-content:center;margin:0 auto 1rem;width:64px}.login-header h1{color:var(--text);font-size:1.75rem;margin:.5rem 0}.login-header p{color:var(--text-light);font-size:.95rem;margin:0}.login-form{margin-bottom:2rem}.login-form .form-group{margin-bottom:1.25rem}.login-form .form-label{align-items:center;color:var(--text);display:flex;font-size:.95rem;font-weight:600;gap:.5rem;margin-bottom:.75rem}.login-form .form-control{border-radius:var(--radius);font-size:.95rem;padding:.875rem}.login-btn{align-items:center;display:flex;font-size:1rem;gap:.5rem;justify-content:center;margin-top:1rem;padding:.875rem;width:100%}.login-footer{border-top:1px solid var(--border);padding-top:1.5rem;text-align:center}.login-footer p{color:var(--text-light);font-size:.9rem;margin:.5rem 0}.login-footer p:first-child{color:var(--text);font-weight:600}.credentials{align-items:center;display:flex;font-size:.85rem;gap:.5rem;justify-content:center}.credentials code{background:var(--bg);border-radius:4px;color:var(--primary);font-family:Courier New,monospace;font-weight:600;padding:.25rem .5rem}@media (max-width:480px){.login-card{padding:2rem 1.5rem}.login-header h1{font-size:1.5rem}.login-header .logo{height:56px;width:56px}}.dashboard{width:100%}.welcome-section{margin-bottom:2rem}.welcome-section h1{color:var(--text);font-size:2rem;margin-bottom:.5rem}.welcome-section p{color:var(--text-light);font-size:1rem}.stats-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.stat-card{background:var(--bg-white);border-left:4px solid;box-shadow:var(--shadow);transition:all .2s ease}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.stat-card.primary{border-left-color:var(--primary)}.stat-card.primary .stat-header{color:var(--primary)}.stat-card.success{border-left-color:var(--success)}.stat-card.success .stat-header{color:var(--success)}.stat-card.warning{border-left-color:var(--warning)}.stat-card.warning .stat-header{color:var(--warning)}.stat-card.danger{border-left-color:var(--danger)}.stat-card.danger .stat-header{color:var(--danger)}.stat-header{align-items:center;display:flex;gap:.75rem;margin-bottom:1rem}.stat-label{color:var(--text-light);font-weight:500}.stat-value{font-size:2.5rem;line-height:1}.stat-value,.stat-value-text{color:var(--text);margin-bottom:.5rem}.stat-value-text{font-size:1.5rem;font-weight:600;line-height:1.2;word-break:break-word}.stat-subtitle{color:var(--text-light);font-size:.9rem}.dashboard-content{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.dashboard-section{background:var(--bg-white);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.section-header{border-bottom:1px solid var(--border);margin-bottom:1.5rem;padding-bottom:1rem}.section-header h2{color:var(--text);font-size:1.25rem}.view-all{align-items:center;color:var(--primary);display:flex;font-size:.9rem;font-weight:600;gap:.5rem;transition:all .2s ease}.view-all:hover{gap:.75rem;text-decoration:none}.recent-list{display:flex;flex-direction:column;gap:.75rem}.recent-item{align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);display:flex;justify-content:space-between;padding:1rem;position:relative;text-decoration:none;transition:all .2s ease}.recent-item:hover{background:var(--primary-light);border-color:var(--primary)}.recent-item.unread{background:#fef3c7}.recent-item-info{flex:1 1;min-width:0}.recent-item-title{color:var(--text);font-weight:600;margin-bottom:.25rem;word-break:break-word}.recent-item-meta{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.recent-date,.recent-hours,.recent-status{color:var(--text-light);font-size:.85rem}.recent-status{background:var(--bg);border-radius:999px;font-weight:500;padding:.25rem .75rem;text-transform:capitalize}.recent-status.submitted{background:var(--primary-light);color:var(--primary-dark)}.recent-status.approved{background:var(--success-light);color:#047857}.recent-status.rejected{background:var(--danger-light);color:#991b1b}.recent-status.pending{background:var(--warning-light);color:#92400e}.notification-dot{background:var(--danger);border-radius:50%;display:inline-block;flex-shrink:0;height:8px;width:8px}.action-buttons .btn{flex:1 1;justify-content:center;min-width:150px}.empty-state{color:var(--text-light);padding:2rem 1rem}.empty-state p{font-size:.95rem}@media (max-width:1024px){.dashboard-content{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}@media (max-width:768px){.welcome-section h1{font-size:1.5rem}.stat-value{font-size:2rem}.stat-value-text{font-size:1.25rem}.dashboard-content,.stats-grid{grid-template-columns:1fr}.section-header{align-items:flex-start;flex-direction:column}.view-all{margin-top:.5rem}.action-buttons{flex-direction:column}.action-buttons .btn{width:100%}}@media (max-width:480px){.welcome-section h1{font-size:1.25rem}.stat-card{padding:1rem}.stat-value{font-size:1.75rem}.stat-value-text{font-size:1rem}.dashboard-section{padding:1rem}.recent-item{padding:.75rem}.recent-item-title{font-size:.95rem}.recent-item-meta{font-size:.8rem;gap:.5rem}}.timesheet-list-container{margin:0 auto;max-width:1200px;padding:2rem}.timesheet-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.timesheet-header h1{color:#1f2937;font-size:2rem;margin:0}.week-navigator{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2rem}.week-label{color:#374151;font-size:1.1rem;font-weight:600;min-width:250px;text-align:center}.summary-card{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);margin-bottom:2rem;padding:1.5rem}.summary-item{align-items:center;display:flex;justify-content:space-between}.summary-label{color:#6b7280;font-weight:500}.summary-value{color:#2563eb;color:var(--primary,#2563eb);font-size:1.75rem;font-weight:700}.weekly-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.day-card{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 2px #0000000d;box-shadow:0 1px 2px var(--shadow,#0000000d);cursor:pointer;padding:1.25rem;transition:all .2s ease}.day-card:hover{box-shadow:0 4px 12px #00000026;box-shadow:0 4px 12px var(--shadow,#00000026);transform:translateY(-2px)}.day-card.today,.day-card:hover{border-color:#2563eb;border-color:var(--primary,#2563eb)}.day-card.today{background:#eff6ff}.day-header{align-items:center;border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb);display:flex;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem}.day-name{color:#374151;font-weight:600}.day-date{color:#2563eb;color:var(--primary,#2563eb);font-size:1.25rem;font-weight:700}.day-content{align-items:center;display:flex;flex-direction:column;gap:.75rem}.hours{color:#1f2937;font-size:1.5rem;font-weight:700}.status-submitted{background:#d1fae5;color:#065f46}.empty{color:#9ca3af;font-size:.875rem;text-align:center}.alert-error{background:#fee2e2;border:1px solid #fecaca;color:#991b1b}.admin-container{margin:0 auto;max-width:1400px;padding:2rem}.admin-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.admin-header h1{color:var(--primary);font-size:2rem;font-weight:700;margin:0}.header-subtitle{color:#6b7280;font-size:.9rem;margin:.25rem 0 0}.filters-section{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;gap:1rem}.search-box{min-width:300px}.search-box input{font-family:inherit}.table-wrapper{background:#fff;box-shadow:var(--shadow)}.data-table tbody tr{transition:background-color .2s}.data-table tbody tr.clickable-row{cursor:pointer}.data-table tbody tr.clickable-row:hover{background-color:#f9fafb}.name-cell{align-items:center;display:flex;font-weight:500;gap:.75rem}.employee-avatar{background:linear-gradient(135deg,var(--primary),var(--primary-light));flex-shrink:0;font-size:.85rem;height:36px;width:36px}.status-badge.inactive{background-color:#e5e7eb;color:#374151}.pagination{border-radius:var(--radius);gap:1rem;justify-content:center;margin-top:2rem;padding:1.5rem}.pagination,.pagination-btn{align-items:center;background:#fff;display:flex}.pagination-btn{border:1px solid var(--border);border-radius:var(--radius);color:#374151;cursor:pointer;font-weight:600;gap:.5rem;padding:.75rem 1.5rem;transition:all .2s}.pagination-btn:hover:not(:disabled){background-color:var(--primary);border-color:var(--primary);color:#fff}.pagination-btn:disabled{cursor:not-allowed;opacity:.5}.pagination-info{color:#6b7280;font-size:.9rem}.no-results{padding:3rem 2rem}.department-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.department-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1rem;padding:1.5rem;transition:all .2s}.department-card:hover{border-color:var(--primary);box-shadow:0 4px 12px #2563eb26;transform:translateY(-2px)}.card-header{align-items:start;gap:1rem}.card-header h3{color:#1f2937;font-size:1.25rem;font-weight:700;margin:0}.card-description{color:#6b7280;flex:1 1;line-height:1.5;margin:0}.card-stats{display:flex;gap:.5rem}.stat-badge{background-color:#eff6ff;border-radius:var(--radius);color:var(--primary);font-size:.85rem;font-weight:600;padding:.375rem .75rem}.card-actions{display:flex;gap:.75rem;margin-top:auto}.btn-sm{gap:.375rem}.btn-danger{background-color:var(--danger)}.btn-danger:hover:not(:disabled){box-shadow:0 4px 12px #dc26264d}.btn-warning{background-color:var(--warning);color:#fff}.btn-warning:hover:not(:disabled){background-color:#d97706}.btn-success{background-color:var(--success)}.action-buttons{flex-wrap:wrap;gap:.5rem}.form-header h1{color:var(--primary);font-size:2rem;font-weight:700}.employee-form{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem}.form-section{border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem}.form-section:last-of-type{margin-bottom:2rem;padding-bottom:0}.section-title{border-bottom:2px solid var(--primary-light);color:#1f2937;font-size:1.1rem;font-weight:700;margin:0 0 1.5rem;padding-bottom:.75rem}.form-row{margin-bottom:1.5rem}.form-group input:disabled{background-color:#f3f4f6;cursor:not-allowed}.form-group.checkbox{align-items:center;flex-direction:row;gap:.75rem}.form-group.checkbox input{cursor:pointer;height:18px;width:18px}.form-group.checkbox label{margin:0}.department-form,.leave-type-form{display:flex;flex-direction:column;gap:1.5rem;padding:2rem}.modal-content.modal-sm{max-width:400px}.modal-body{padding:2rem}.confirmation-icon{color:var(--warning);margin-bottom:1rem;text-align:center}.confirmation-text{color:#374151;font-size:1rem;line-height:1.6;margin:0}.btn-ghost{background:none;border:1px solid var(--primary);color:var(--primary);padding:.5rem 1rem}.btn-ghost:hover:not(:disabled){background-color:#eff6ff}.font-weight-bold{font-weight:600}@media (max-width:768px){.admin-container{padding:1rem}.admin-header{align-items:flex-start;gap:1rem}.admin-header,.filters-section{flex-direction:column}.filter-select,.search-box{flex:1 1;min-width:0;min-width:auto;width:100%}.form-row{grid-template-columns:1fr}.form-actions{flex-direction:column-reverse}.btn{justify-content:center;width:100%}.department-grid{grid-template-columns:1fr}.action-buttons{flex-direction:column;width:100%}.action-buttons .btn{width:100%}.table-wrapper{overflow-x:auto}.data-table{min-width:800px}.modal-content{max-width:95vw}}.btn-deactivate{align-items:center;background:none;border:1px solid #ef4444;border-radius:var(--radius);color:#ef4444;cursor:pointer;display:inline-flex;gap:.25rem;padding:.35rem .5rem;transition:all .2s}.btn-deactivate:hover{background-color:#ef4444;color:#fff}.btn-sm{padding:.4rem .75rem}.bulk-upload-modal{max-width:650px}.upload-step{border-bottom:1px solid #e5e7eb;margin-bottom:1.5rem;padding-bottom:1.5rem}.upload-step:last-child{border-bottom:none}.upload-step h3{color:#374151;font-size:1rem;font-weight:600;margin:0 0 .5rem}.upload-step p{color:#6b7280;font-size:.9rem;margin:0 0 .75rem}.file-input-wrapper{align-items:center;display:flex;gap:.75rem}.file-name{color:#374151;font-size:.85rem}.upload-results{background:#f9fafb;border-radius:var(--radius);margin-top:1rem;padding:1.25rem}.upload-results h3{font-size:1rem;font-weight:600;margin:0 0 .75rem}.upload-summary{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.result-badge{align-items:center;border-radius:20px;display:inline-flex;font-size:.85rem;font-weight:500;gap:.35rem;padding:.4rem .85rem}.result-success{background:#dcfce7;color:#166534}.result-warning{background:#fef3c7;color:#92400e}.result-error{background:#fee2e2;color:#991b1b}.upload-detail-list{margin-top:.75rem}.upload-detail-list h4{color:#374151;font-size:.85rem;font-weight:600;margin:0 0 .35rem}.detail-item{color:#4b5563;font-size:.82rem;padding:.3rem 0}.error-item{color:#991b1b}.warning-item{color:#92400e}.success-item{color:#166534}.modal-close-btn{align-items:center;background:none;border:none;color:#6b7280;cursor:pointer;display:flex;padding:.25rem}.modal-close-btn:hover{color:#374151}.timesheet-form-container{background:#fff;border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);margin:0 auto;max-width:900px;padding:2rem}.form-header{justify-content:space-between}.btn-close:hover{background:#f3f4f6;color:#374151}.date-display{background:#f0f9ff;border-left:4px solid #2563eb;border-left:4px solid var(--primary,#2563eb);border-radius:8px;border-radius:var(--radius,8px);display:flex;gap:1rem;margin-bottom:2rem;padding:1rem}.date-display .label{color:#374151;font-weight:600}.date-display .date-value{color:#2563eb;color:var(--primary,#2563eb);font-weight:600}.alert-error{font-size:.875rem;line-height:1.5;white-space:pre-wrap}.alert-info{background:#f0f9ff;border-left-color:#2563eb;border-left-color:var(--primary,#2563eb);color:#0c4a6e}.entries-section{margin-bottom:2rem}.entries-table{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-collapse:collapse;border-radius:8px;border-radius:var(--radius,8px);overflow:hidden;width:100%}.entries-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb)}.entries-table th{color:#374151;font-size:.875rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.entries-table tbody tr{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);transition:background .2s ease}.entries-table tbody tr:hover{background:#f9fafb}.entries-table tbody tr:last-child{border-bottom:none}.entries-table td{padding:.75rem 1rem;vertical-align:middle}.description-input,.hours-select,.task-input{border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:6px;border-radius:var(--radius,6px);font-size:.875rem;padding:.5rem .75rem;transition:all .2s ease;width:100%}.description-input:focus,.hours-select:focus,.task-input:focus{border-color:#2563eb;border-color:var(--primary,#2563eb);box-shadow:0 0 0 3px #2563eb1a;outline:none}.description-input:disabled,.hours-select:disabled,.task-input:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.hours-select{min-width:100px}.btn-remove{align-items:center;background:#fee2e2;border:none;border-radius:6px;border-radius:var(--radius,6px);color:#991b1b;cursor:pointer;display:flex;font-size:1rem;height:32px;justify-content:center;transition:all .2s ease;width:32px}.btn-remove:hover{background:#fecaca;color:#7f1d1d}.btn-remove:disabled{cursor:not-allowed;opacity:.5}.add-entry-btn{margin-top:1rem}.totals-section{background:#f9fafb;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);margin-bottom:2rem;padding:1.5rem}.total-item{align-items:center;display:flex;gap:2rem;justify-content:space-between}.total-item .label{color:#374151;font-weight:600}.total-value{color:#2563eb;color:var(--primary,#2563eb);font-size:1.75rem;font-weight:700}.total-value.error,.validation-error{color:#dc2626;color:var(--danger,#dc2626)}.validation-error{font-size:.875rem;font-weight:500;margin-top:.5rem}.leave-balance-card{background:#fff;border:2px solid #e5e7eb;border:2px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);min-width:0;padding:1rem 1.25rem;transition:all .3s ease}.leave-balance-card:hover{box-shadow:0 4px 12px #00000026;box-shadow:0 4px 12px var(--shadow,#00000026);transform:translateY(-2px)}.leave-balance-card.color-green{border-color:#16a34a;border-color:var(--success,#16a34a)}.leave-balance-card.color-amber{border-color:#ca8a04;border-color:var(--warning,#ca8a04)}.leave-balance-card.color-red{border-color:#dc2626;border-color:var(--danger,#dc2626)}.balance-header{margin-bottom:.75rem}.balance-type{color:#1f2937;font-size:1rem;font-weight:700;margin:0}.balance-progress{margin-bottom:1rem}.progress-bar-container{margin-bottom:.75rem}.progress-bar-background{background:#e5e7eb;border-radius:4px;height:8px;overflow:hidden;width:100%}.progress-bar-fill{background:linear-gradient(90deg,#2563eb,#60a5fa);background:linear-gradient(90deg,var(--primary,#2563eb),var(--primary-light,#60a5fa));height:100%;transition:width .3s ease}.leave-balance-card.color-amber .progress-bar-fill{background:linear-gradient(90deg,#ca8a04,#fbbf24);background:linear-gradient(90deg,var(--warning,#ca8a04),#fbbf24)}.leave-balance-card.color-red .progress-bar-fill{background:linear-gradient(90deg,#dc2626,#f87171);background:linear-gradient(90deg,var(--danger,#dc2626),#f87171)}.progress-labels{color:#6b7280;display:flex;font-size:.75rem;font-weight:600;justify-content:space-between}.balance-stats{border-top:1px solid #e5e7eb;border-top:1px solid var(--border,#e5e7eb);gap:.75rem;padding-top:1rem}.balance-stats,.stat-item{align-items:center;display:flex}.stat-item{flex:1 1;flex-direction:column;gap:.25rem}.stat-label{color:#9ca3af;font-size:.7rem}.stat-value{color:#1f2937;font-size:1rem}.stat-value.highlight{color:#2563eb;color:var(--primary,#2563eb)}.leave-balance-card.color-amber .stat-value.highlight{color:#ca8a04;color:var(--warning,#ca8a04)}.leave-balance-card.color-red .stat-value.highlight{color:#dc2626;color:var(--danger,#dc2626)}.stat-divider{background:#e5e7eb;background:var(--border,#e5e7eb);height:24px;width:1px}.leave-list-container{margin:0 auto;max-width:1200px;padding:2rem}.leave-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.leave-header h1{color:#1f2937;font-size:2rem;margin:0}.balances-section{margin-bottom:3rem}.balances-section h2{color:#374151;font-size:1.25rem;margin:0 0 1.5rem}.balances-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.leaves-table-wrapper{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);overflow-x:auto}.leaves-table{border-collapse:collapse;width:100%}.leaves-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb)}.leaves-table th{color:#374151;font-size:.875rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.leaves-table tbody tr{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);transition:background .2s ease}.leaves-table tbody tr:hover{background:#f9fafb}.leaves-table tbody tr:last-child{border-bottom:none}.leaves-table td{color:#1f2937;font-size:.875rem;padding:1rem}.type-cell{color:#2563eb;color:var(--primary,#2563eb);font-weight:600}.center{text-align:center}.status-approved{background:#d1fae5;color:#065f46}.status-pending{background:#fef3c7;color:#92400e}.status-rejected{background:#fee2e2;color:#991b1b}.status-cancelled{background:#e5e7eb;color:#6b7280}.btn-cancel{align-items:center;background:#fee2e2;border:none;border-radius:6px;border-radius:var(--radius,6px);color:#991b1b;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .2s ease;width:32px}.btn-cancel:hover{background:#fecaca;color:#7f1d1d}.no-leaves{color:#6b7280;padding:3rem;text-align:center}.no-leaves p{font-size:1.1rem;margin-bottom:1.5rem}.no-data{padding:2rem}.leave-form-container{margin:0 auto;max-width:600px;padding:2rem}.alert{font-size:.875rem}.leave-form{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);padding:2rem}.balance-info{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:8px;border-radius:var(--radius,8px);margin-bottom:1.5rem;padding:1rem}.balance-item{align-items:center;display:flex;justify-content:space-between}.balance-item .label{color:#0c4a6e;font-weight:500}.balance-item .value{color:#2563eb;color:var(--primary,#2563eb);font-size:1.25rem;font-weight:700}.days-info{background:#fef3c7;border:1px solid #fde68a;border-radius:8px;border-radius:var(--radius,8px);margin-bottom:1.5rem;padding:1rem}.days-item{align-items:center;display:flex;justify-content:space-between}.days-item .label{color:#92400e;font-weight:500}.days-item .value{color:#b45309;font-size:1.25rem;font-weight:700}.days-item .value.warning{color:#dc2626;color:var(--danger,#dc2626)}.form-actions{margin-top:2rem}.document-upload-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1000}.document-upload-modal{background:#fff;border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 20px 25px -5px #0000001a;max-height:90vh;max-width:500px;overflow-y:auto;width:100%}.modal-header{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);padding:1.5rem}.modal-header h2{color:#1f2937;font-size:1.25rem}.btn-close{align-items:center;background:none;border:none;border-radius:8px;border-radius:var(--radius,8px);color:#6b7280;cursor:pointer;display:flex;font-size:1.5rem;height:2rem;justify-content:center;padding:0;transition:all .2s ease;width:2rem}.btn-close:hover:not(:disabled){background:#f3f4f6;color:#374151}.btn-close:disabled{cursor:not-allowed;opacity:.5}.alert{margin:1rem}.upload-form{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem}.form-group textarea{min-height:80px}.form-row{grid-template-columns:1fr}.drag-drop-area{background:#f9fafb;border:2px dashed #e5e7eb;border:2px dashed var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);cursor:pointer;padding:2rem;text-align:center;transition:all .3s ease}.drag-drop-area:hover{background:#f0f9ff}.drag-drop-area.dragging,.drag-drop-area:hover{border-color:#2563eb;border-color:var(--primary,#2563eb)}.drag-drop-area.dragging{background:#eff6ff;box-shadow:0 0 0 3px #2563eb1a}.upload-icon{color:#2563eb;color:var(--primary,#2563eb);font-size:3rem;margin-bottom:1rem}.drag-text{margin:1rem 0}.drag-title{color:#1f2937;font-weight:600;margin:0}.drag-subtitle{color:#6b7280;margin:.5rem 0}.btn-browse{background:#2563eb;background:var(--primary,#2563eb);border:none;border-radius:6px;border-radius:var(--radius,6px);color:#fff;cursor:pointer;font-weight:600;padding:.5rem 1.25rem;transition:all .2s ease}.btn-browse:hover{background:#1d4ed8;background:var(--primary-dark,#1d4ed8)}.btn-browse:disabled{background:#9ca3af;cursor:not-allowed}.file-info{color:#6b7280;font-size:.75rem;margin:1rem 0 0}.file-selected{background:#f9fafb;border:2px solid #e5e7eb;border:2px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);padding:1rem}.file-info-box{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.file-details{flex:1 1}.file-name{color:#1f2937;font-weight:600;margin:0;word-break:break-word}.file-size{color:#6b7280;font-size:.875rem;margin:.5rem 0 0}.btn-remove-file{background:#fee2e2;border:none;border-radius:6px;border-radius:var(--radius,6px);color:#dc2626;color:var(--danger,#dc2626);cursor:pointer;font-size:.875rem;font-weight:600;padding:.5rem .75rem;transition:all .2s ease;white-space:nowrap}.btn-remove-file:hover{background:#fecaca}.btn-remove-file:disabled{cursor:not-allowed;opacity:.5}.progress-container{border-top:1px solid #e5e7eb;border-top:1px solid var(--border,#e5e7eb);margin-top:1rem;padding-top:1rem}.progress-bar{background:#e5e7eb;border-radius:4px;height:8px;margin-bottom:.5rem;overflow:hidden;width:100%}.progress-fill{background:linear-gradient(90deg,#2563eb,#60a5fa);background:linear-gradient(90deg,var(--primary,#2563eb),var(--primary-light,#60a5fa));height:100%;transition:width .3s ease}.progress-text{color:#6b7280;font-size:.875rem;font-weight:600;margin:0}.form-actions{padding-top:1rem}.btn{font-size:.875rem}.documents-list-container{margin:0 auto;max-width:1200px;padding:2rem}.documents-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.documents-header h1{color:#1f2937;font-size:2rem;margin:0}.employee-filter{align-items:center;background:#f9fafb;background:var(--bg,#f9fafb);border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);display:flex;gap:1rem;margin-bottom:2rem;padding:1rem}.employee-filter label{color:#374151;font-weight:500}.employee-filter select{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);cursor:pointer;min-width:200px;padding:.5rem .75rem}.documents-categories{display:flex;flex-direction:column;gap:3rem}.category-section{border-radius:8px;border-radius:var(--radius,8px);overflow:hidden}.category-title{align-items:center;border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb);color:#1f2937;display:flex;font-size:1.25rem;font-weight:700;gap:.75rem;margin:0 0 1.5rem;padding:1rem 0}.category-icon{font-size:1.5rem}.documents-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.document-card{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);display:flex;flex-direction:column;gap:1rem;padding:1.5rem;position:relative;transition:all .2s ease}.document-card:hover{border-color:#2563eb;border-color:var(--primary,#2563eb);box-shadow:0 4px 12px #00000026;box-shadow:0 4px 12px var(--shadow,#00000026)}.document-card.expired{background:#fef2f2;border-color:#dc2626;border-color:var(--danger,#dc2626)}.document-card.expiring-soon{background:#fffbeb;border-color:#ca8a04;border-color:var(--warning,#ca8a04)}.expired-badge,.expiring-badge{border-radius:12px;font-size:.7rem;font-weight:700;letter-spacing:.5px;padding:.35rem .75rem;position:absolute;right:1rem;text-transform:uppercase;top:1rem}.expired-badge{background:#dc2626;background:var(--danger,#dc2626);color:#fff}.expiring-badge{background:#ca8a04;background:var(--warning,#ca8a04);color:#fff}.document-info{flex:1 1}.document-filename{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 1rem;padding-right:5rem;word-break:break-word}.document-details{display:flex;flex-direction:column;font-size:.875rem;gap:.75rem}.detail-item{justify-content:space-between}.detail-item.full-width{flex-direction:column}.detail-label{color:#6b7280;font-weight:500;min-width:80px}.detail-value{color:#1f2937;flex:1 1;text-align:right}.detail-item.full-width .detail-value{margin-top:.25rem;text-align:left}.detail-value.error{color:#dc2626;color:var(--danger,#dc2626);font-weight:600}.document-actions{border-top:1px solid #e5e7eb;border-top:1px solid var(--border,#e5e7eb);display:flex;gap:.75rem;padding-top:1rem}.btn-action{align-items:center;border:none;border-radius:6px;border-radius:var(--radius,6px);cursor:pointer;display:flex;flex:1 1;font-size:.875rem;font-weight:600;gap:.5rem;justify-content:center;padding:.5rem;transition:all .2s ease}.btn-download{background:#dbeafe;color:#2563eb;color:var(--primary,#2563eb)}.btn-download:hover{background:#bfdbfe}.btn-delete{background:#fee2e2;color:#dc2626;color:var(--danger,#dc2626)}.btn-delete:hover{background:#fecaca}.empty-category{background:#f9fafb;border:1px dashed #e5e7eb;border:1px dashed var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);color:#9ca3af;padding:2rem;text-align:center}.review-list-container{margin:0 auto;max-width:1200px;padding:2rem}.review-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.review-header h1{color:#1f2937;font-size:2rem;margin:0}.filters-section{background:#f9fafb;background:var(--bg,#f9fafb);border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);display:flex;gap:2rem;margin-bottom:2rem;padding:1.5rem}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{color:#374151;font-size:.875rem;font-weight:600}.filter-group select{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:6px;border-radius:var(--radius,6px);cursor:pointer;min-width:150px;padding:.5rem .75rem;transition:all .2s ease}.filter-group select:focus{border-color:#2563eb;border-color:var(--primary,#2563eb);box-shadow:0 0 0 3px #2563eb1a;outline:none}.reviews-table-wrapper{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);overflow-x:auto}.reviews-table{border-collapse:collapse;width:100%}.reviews-table thead{background:#f9fafb;border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb)}.reviews-table th{color:#374151;font-size:.875rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.reviews-table tbody tr{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);transition:background .2s ease}.reviews-table tbody tr:hover{background:#f9fafb}.reviews-table tbody tr:last-child{border-bottom:none}.reviews-table td{color:#1f2937;font-size:.875rem;padding:1rem}.period-cell{color:#2563eb;color:var(--primary,#2563eb);font-weight:600}.rating-stars{font-size:1.25rem;gap:.25rem}.btn-view{align-items:center;background:#dbeafe;border:none;border-radius:6px;border-radius:var(--radius,6px);color:#2563eb;color:var(--primary,#2563eb);cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .2s ease;width:32px}.btn-view:hover{background:#bfdbfe}.no-reviews{color:#6b7280;padding:3rem;text-align:center}.no-reviews p{font-size:1.1rem;margin-bottom:1.5rem}.loading{color:#6b7280;font-size:1.1rem;padding:3rem;text-align:center}.btn{font-weight:500;padding:.5rem 1rem}.btn-primary:hover{background:#1d4ed8;background:var(--primary-dark,#1d4ed8)}.review-detail-container{margin:0 auto;max-width:900px;padding:2rem}.detail-header{margin-bottom:2rem}.btn-back:hover{background:#d1d5db}.error-detail,.loading-detail{color:#6b7280;font-size:1.1rem;padding:3rem;text-align:center}.error-detail{color:#dc2626;color:var(--danger,#dc2626)}.review-card{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);overflow:hidden}.card-header{align-items:flex-start;background:#f9fafb;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);display:flex;gap:2rem;justify-content:space-between;padding:2rem}.header-info h1{color:#1f2937;font-size:1.75rem;margin:0 0 .5rem}.period{color:#6b7280;font-size:.95rem;margin:0}.header-meta{align-items:flex-end;display:flex;flex-direction:column;gap:1rem}.meta-item{align-items:center;display:flex;gap:.75rem}.meta-item .label{color:#6b7280;font-size:.875rem;font-weight:600;min-width:80px}.meta-item .value{color:#1f2937;font-weight:500}.status-badge{border-radius:12px;font-size:.75rem;padding:.35rem .75rem;text-transform:capitalize}.status-draft{background:#e5e7eb;color:#6b7280}.status-submitted{background:#bfdbfe;color:#0c4a6e}.status-acknowledged{background:#d1fae5;color:#065f46}.rating-section{background:#f0f9ff;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);padding:2rem}.rating-section h3{color:#374151;font-size:1rem;font-weight:600;margin:0 0 1rem}.rating-display{align-items:center;display:flex;gap:2rem}.rating-stars{display:flex;font-size:2rem;gap:.5rem}.star{color:#e5e7eb}.star.filled{color:#fbbf24;text-shadow:0 0 2px #0003}.rating-value{color:#2563eb;color:var(--primary,#2563eb);font-size:1.5rem;font-weight:700}.sections-container{padding:2rem}.review-section{margin-bottom:2rem}.review-section:last-child{margin-bottom:0}.review-section h3{border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb);color:#374151;font-size:1rem;font-weight:600;letter-spacing:.5px;margin:0 0 1rem;padding-bottom:.75rem;text-transform:uppercase}.section-content{color:#1f2937;line-height:1.6;margin:0;white-space:pre-wrap;word-break:break-word}.actions{background:#f9fafb;border-top:1px solid #e5e7eb;border-top:1px solid var(--border,#e5e7eb);display:flex;gap:1rem;justify-content:flex-end;padding:2rem}.btn-secondary:hover{background:#d1d5db}.review-form-container{margin:0 auto;max-width:900px;padding:2rem}.form-header{border-bottom:2px solid #e5e7eb;border-bottom:2px solid var(--border,#e5e7eb);gap:1.5rem;margin-bottom:2rem;padding-bottom:1.5rem}.btn-back,.form-header{align-items:center;display:flex}.btn-back{background:#e5e7eb;border:none;border-radius:8px;border-radius:var(--radius,8px);color:#374151;cursor:pointer;font-weight:600;gap:.5rem;padding:.5rem 1rem;transition:all .2s ease}.btn-back:hover:not(:disabled){background:#d1d5db}.btn-back:disabled{cursor:not-allowed;opacity:.5}.form-header h1{color:#1f2937;font-size:1.875rem;margin:0}.review-form{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a)}.form-section{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);padding:2rem}.form-section:last-of-type{border-bottom:none}.form-section h2{color:#374151;font-size:1.1rem;font-weight:600;letter-spacing:.5px;margin:0 0 1.5rem;text-transform:uppercase}.form-group{margin-bottom:1.5rem}.form-group:last-child{margin-bottom:0}.form-group label{margin-bottom:.5rem}.form-group textarea{min-height:120px}.rating-selector{gap:.5rem}.rating-selector,.rating-star{align-items:center;display:flex}.rating-star{background:#e5e7eb;border:2px solid #0000;border-radius:6px;border-radius:var(--radius,6px);color:#9ca3af;cursor:pointer;font-size:1.75rem;height:48px;justify-content:center;transition:all .2s ease;width:48px}.rating-star:hover:not(:disabled){background:#d1d5db;color:#fbbf24}.rating-star.active{background:#fef3c7;border-color:#fbbf24;color:#fbbf24}.rating-star:disabled{cursor:not-allowed;opacity:.5}.rating-label{color:#2563eb;color:var(--primary,#2563eb);font-size:1.1rem;font-weight:700;margin-left:1rem;min-width:60px}.form-actions{background:#f9fafb;border-top:1px solid #e5e7eb;border-top:1px solid var(--border,#e5e7eb);padding:2rem}.personal-details-container{margin:0 auto;max-width:1000px;padding:2rem}.page-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.page-header h1{color:#1f2937;font-size:2rem;margin:0}.error-page,.loading-page{color:#6b7280;font-size:1.1rem;padding:3rem;text-align:center}.error-page{color:#dc2626;color:var(--danger,#dc2626)}.alert{border-left:4px solid;border-radius:8px;border-radius:var(--radius,8px);line-height:1.5;margin-bottom:1.5rem;padding:1rem;white-space:pre-wrap}.alert-error{background:#fef2f2;border-left-color:#dc2626;border-left-color:var(--danger,#dc2626);color:#7f1d1d}.alert-success{background:#f0fdf4;border-left-color:#16a34a;border-left-color:var(--success,#16a34a);color:#166534}.profile-card{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);margin-bottom:2rem;padding:2rem}.profile-header{align-items:center;display:flex;gap:2rem}.profile-avatar{align-items:center;background:linear-gradient(135deg,#2563eb,#60a5fa);background:linear-gradient(135deg,var(--primary,#2563eb),var(--primary-light,#60a5fa));border-radius:50%;box-shadow:0 2px 8px #2563eb4d;color:#fff;display:flex;font-size:2rem;font-weight:700;height:100px;justify-content:center;width:100px}.profile-info h2{color:#1f2937;font-size:1.5rem;margin:0 0 .5rem}.job-title{color:#2563eb;color:var(--primary,#2563eb);font-size:.95rem;font-weight:600;margin:0 0 .25rem}.department{color:#6b7280;font-size:.875rem;margin:0}.details-section{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:8px;border-radius:var(--radius,8px);box-shadow:0 1px 3px #0000001a;box-shadow:0 1px 3px var(--shadow,#0000001a);margin-bottom:1.5rem;overflow:hidden}.section-header{background:#f9fafb;border:none;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border,#e5e7eb);color:#374151;cursor:pointer;font-size:1rem;font-weight:600;padding:1.5rem;transition:all .2s ease;width:100%}.section-header:hover{background:#f3f4f6}.toggle-icon{color:#6b7280;display:inline-block;transition:transform .3s ease}.toggle-icon.open{transform:rotate(180deg)}.section-content{padding:2rem}.read-only-notice{margin-bottom:1rem}.read-only-text{background:#fef3c7;border:1px solid #fde68a;border-radius:6px;border-radius:var(--radius,6px);color:#92400e;font-size:.875rem;margin:0;padding:.75rem 1rem}.form-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(2,1fr)}.form-grid .full-width{grid-column:1/-1}@media (max-width:768px){.form-grid{grid-template-columns:1fr}}.form-group label{font-size:.875rem}.form-group input,.form-group select,.form-group textarea{background:#fff;border:1px solid #e5e7eb;border:1px solid var(--border,#e5e7eb);border-radius:6px;border-radius:var(--radius,6px);font-size:.875rem;transition:all .2s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#2563eb;border-color:var(--primary,#2563eb)}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.form-group textarea{min-height:100px;resize:vertical}.display-value{align-items:center;background:#f9fafb;border-radius:6px;border-radius:var(--radius,6px);color:#1f2937;display:flex;font-size:.875rem;line-height:1.5;margin:0;min-height:40px;padding:.75rem;white-space:pre-wrap;word-break:break-word}.action-buttons{border-top:2px solid #e5e7eb;border-top:2px solid var(--border,#e5e7eb);display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;padding-top:2rem}.btn{border-radius:8px;border-radius:var(--radius,8px);display:flex;transition:all .2s ease}.btn-primary{background:#2563eb;background:var(--primary,#2563eb)}.btn-primary:hover:not(:disabled){background:#1d4ed8;background:var(--primary-dark,#1d4ed8)}.btn-primary:disabled{background:#9ca3af;cursor:not-allowed}.btn-secondary{background:#e5e7eb}.btn-secondary:hover:not(:disabled){background:#d1d5db}.btn-secondary:disabled{background:#f3f4f6;color:#d1d5db;cursor:not-allowed}.visa-management{margin:0 auto;max-width:1400px;padding:2rem}.visa-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.visa-header h1{color:var(--primary);font-size:2rem;font-weight:700;margin:0}.header-controls{display:flex;gap:1rem}.visa-management.employee-view .visa-detail-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:2rem;padding:2rem}.visa-card-header{align-items:flex-start;border-bottom:2px solid var(--border);display:flex;justify-content:space-between;margin-bottom:2rem;padding-bottom:1.5rem}.visa-card-header h2{color:var(--primary);font-size:1.75rem;font-weight:700;margin:0 0 .5rem}.visa-number{color:#6b7280;font-size:.875rem;margin:0}.visa-status-badge{align-items:center;border-radius:var(--radius);display:flex;font-size:.875rem;font-weight:600;gap:.5rem;justify-content:center;letter-spacing:.5px;min-width:140px;padding:.5rem 1rem;text-transform:uppercase}.visa-status-badge.active{background-color:#d1fae5;border:1px solid var(--success);color:#065f46}.visa-status-badge.expiring{animation:pulse-amber 2s infinite;background-color:#fef3c7;border:1px solid var(--warning);color:#92400e}.visa-status-badge.expired{background-color:#fee2e2;border:1px solid var(--danger);color:#991b1b}@keyframes pulse-amber{0%,to{opacity:1}50%{opacity:.7}}.visa-details-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.visa-detail-item{display:flex;flex-direction:column;gap:.5rem}.visa-detail-item .label{color:#6b7280;font-size:.875rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.visa-detail-item .value{color:#1f2937;font-size:1.125rem;font-weight:500}.visa-detail-item .value.countdown{font-size:1.25rem;font-weight:700}.visa-detail-item .value.countdown.active{color:var(--success)}.visa-detail-item .value.countdown.expiring{color:var(--warning)}.visa-detail-item .value.countdown.expired{color:var(--danger)}.visa-notes{background-color:#f9fafb;border-left:4px solid var(--primary);border-radius:var(--radius);margin-bottom:2rem;padding:1.5rem}.visa-notes .label{color:#6b7280;font-size:.875rem;font-weight:600;letter-spacing:.5px;margin-bottom:.5rem;text-transform:uppercase}.visa-notes .value{color:#374151;line-height:1.6;white-space:pre-wrap}.visa-filters,.visa-management.admin-view{margin-bottom:2rem}.visa-filters{display:flex;flex-wrap:wrap;gap:1rem}.search-box{align-items:center;background:#fff;border:1px solid var(--border);border-radius:var(--radius);display:flex;flex:1 1;gap:.75rem;min-width:250px;padding:.75rem 1rem}.search-box input{border:none;flex:1 1;font-size:.95rem;outline:none}.search-box svg{color:#9ca3af;flex-shrink:0}.filter-select{background:#fff;border:1px solid var(--border);border-radius:var(--radius);color:#374151;cursor:pointer;font-size:.95rem;min-width:150px;padding:.75rem 1rem}.filter-select:hover{border-color:var(--primary)}.visa-table-wrapper{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.visa-table{border-collapse:collapse;font-size:.95rem;width:100%}.visa-table thead{background-color:#f9fafb;border-bottom:2px solid var(--border)}.visa-table th{color:#374151;font-size:.85rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase;-webkit-user-select:none;user-select:none}.visa-table th.sortable{cursor:pointer;padding-right:1.5rem;position:relative;transition:background-color .2s}.visa-table th.sortable:hover{background-color:#f3f4f6}.sort-indicator{font-size:1rem;position:absolute;right:.5rem}.visa-table td{border-bottom:1px solid var(--border);color:#374151;padding:1rem}.visa-table tbody tr{cursor:pointer;transition:background-color .2s,box-shadow .2s}.visa-table tbody tr:hover{background-color:#f9fafb}.visa-table tr.visa-row.active{background-color:#f0fdf4}.visa-table tr.visa-row.active:hover{background-color:#e7f5e0}.visa-table tr.visa-row.expiring{background-color:#fffbeb}.visa-table tr.visa-row.expiring:hover{background-color:#fef3c7}.visa-table tr.visa-row.expired{background-color:#fef2f2}.visa-table tr.visa-row.expired:hover{background-color:#fee2e2}.status-badge{border-radius:9999px;display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.3px;padding:.375rem .75rem;text-transform:uppercase}.status-badge.active{background-color:#d1fae5;color:#065f46}.status-badge.expiring{background-color:#fef3c7;color:#92400e}.status-badge.expired{background-color:#fee2e2;color:#991b1b}.visa-table td.days-remaining{align-items:center;display:flex;font-weight:600;gap:.5rem}.visa-table td.days-remaining.active{color:var(--success)}.visa-table td.days-remaining.expiring{color:var(--warning)}.visa-table td.days-remaining.expired{color:var(--danger)}.visa-empty-state{background:#fff;border:2px dashed var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:4rem 2rem;text-align:center}.visa-empty-state h2{color:#374151;font-size:1.5rem;font-weight:700;margin:0 0 .5rem}.visa-empty-state p{color:#6b7280;margin:0 0 1.5rem}.no-results{background:#fff;border:1px solid var(--border)}.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:var(--radius);box-shadow:0 20px 25px -5px #0000001a;max-height:90vh;max-width:600px;overflow-y:auto;width:100%}.modal-header{align-items:center;background:#fff;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:2rem;position:sticky;top:0}.modal-header h2{color:var(--primary);font-size:1.5rem;font-weight:700;margin:0}.visa-form{gap:1.5rem;padding:2rem}.form-group,.visa-form{display:flex;flex-direction:column}.form-group{gap:.5rem}.form-group label{color:#374151;font-size:.95rem;font-weight:600}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border);border-radius:var(--radius);font-family:inherit;font-size:.95rem;padding:.75rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.form-group input.input-error,.form-group select.input-error,.form-group textarea.input-error{border-color:var(--danger)}.form-group input.input-error:focus,.form-group select.input-error:focus,.form-group textarea.input-error:focus{box-shadow:0 0 0 3px #ef44441a}.form-row{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:1fr 1fr}@media (max-width:640px){.form-row{grid-template-columns:1fr}}.error-message{color:var(--danger);font-size:.8rem;margin-top:.25rem}.form-actions{border-top:1px solid var(--border);display:flex;gap:1rem;justify-content:flex-end;margin-top:1rem;padding-top:1.5rem}.inline-spinner{animation:spin 1s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}@media (max-width:768px){.visa-management{padding:1rem}.visa-header{align-items:flex-start;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.visa-header h1{font-size:1.5rem}.visa-details-grid{gap:1.5rem;grid-template-columns:1fr}.visa-filters{flex-direction:column}.search-box{flex:initial;min-width:0;min-width:auto}.modal-content{max-width:95vw}.form-actions{flex-direction:column-reverse}.btn{justify-content:center;width:100%}}@media (max-width:640px){.visa-card-header{flex-direction:column;gap:1rem}.visa-status-badge{width:100%}.visa-table{font-size:.85rem}.visa-table td,.visa-table th{padding:.75rem}}.hierarchy-view{display:flex;flex-direction:column;gap:2rem;margin:0 auto;max-width:1400px;padding:2rem}.hierarchy-header{margin-bottom:1rem;text-align:center}.hierarchy-header h1{color:var(--primary);font-size:2rem;font-weight:700;margin:0 0 .5rem}.hierarchy-subtitle{color:#6b7280;font-size:1rem;margin:0}.hierarchy-search{align-items:center;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;gap:.75rem;margin:0 auto;max-width:500px;padding:.75rem 1rem;width:100%}.hierarchy-search .search-icon{color:#9ca3af;flex-shrink:0}.hierarchy-search input{border:none;flex:1 1;font-family:inherit;font-size:.95rem;outline:none}.hierarchy-search input::placeholder{color:#d1d5db}.clear-btn{align-items:center;background:none;border:none;color:#9ca3af;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:.5rem;transition:color .2s}.clear-btn:hover{color:#6b7280}.no-results{background:#f9fafb;border:1px dashed var(--border);border-radius:var(--radius);padding:2rem}.no-data,.no-results{color:#6b7280;text-align:center}.no-data{padding:4rem 2rem}.hierarchy-tree{display:flex;flex:1 1;flex-direction:column;gap:2rem;margin-bottom:2rem;overflow-x:auto;padding:1rem 0}.hierarchy-node{display:flex;flex-direction:column;gap:1rem;padding-left:0}.node-content{align-items:flex-start;cursor:pointer;display:flex;gap:1rem;transition:transform .2s}.node-content:hover{transform:translateX(4px)}.expand-btn{align-items:center;background:#fff;border:1px solid var(--border);border-radius:var(--radius);color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:36px;justify-content:center;transition:all .2s;width:36px}.expand-btn:hover{background-color:#f9fafb}.expand-btn.expanded,.expand-btn:hover{border-color:var(--primary);color:var(--primary)}.expand-btn.expanded{background-color:#eff6ff}.expand-placeholder{flex-shrink:0;height:36px;width:36px}.node-card{align-items:center;background:#fff;border:2px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex:1 1;gap:1rem;min-width:300px;padding:1rem;transition:all .2s}.node-card:hover{border-color:var(--primary);box-shadow:0 4px 12px #2563eb26}.hierarchy-node.current-user .node-card{background-color:#eff6ff;border:2px solid var(--primary);box-shadow:0 0 0 3px #2563eb1a,var(--shadow)}.hierarchy-node.highlighted .node-card{background-color:#f0fdf4;border-color:#10b981}.node-avatar{align-items:center;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:1.1rem;font-weight:700;height:48px;justify-content:center;width:48px}.node-info{display:flex;flex-direction:column;gap:.25rem;min-width:0}.node-name{color:#1f2937;font-size:1rem;font-weight:700;margin:0}.node-title{color:#6b7280;font-size:.875rem}.node-department,.node-title{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-department{color:#9ca3af;font-size:.8rem}.node-children{border-left:2px solid var(--border);display:flex;flex-direction:column;gap:1rem;margin-left:2rem;padding-left:2rem;position:relative}.node-children:before{border:2px solid var(--border);border-radius:2rem 0 0 0;border-right:none;border-top:none;content:"";height:1rem;left:-2px;position:absolute;top:-1rem;width:2rem}.employee-sidebar{animation:slideIn .3s ease-out;background:#fff;box-shadow:-4px 0 12px #0000001a;display:flex;flex-direction:column;height:100vh;position:fixed;right:0;top:0;width:400px;z-index:100}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}.sidebar-header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:1.5rem}.sidebar-header h2{color:var(--primary);font-size:1.25rem;font-weight:700;margin:0}.close-btn{align-items:center;background:none;border:none;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:color .2s}.close-btn:hover{color:#1f2937}.sidebar-content{display:flex;flex:1 1;flex-direction:column;gap:1.5rem;overflow-y:auto;padding:2rem 1.5rem}.employee-avatar{align-items:center;border-radius:50%;color:#fff;display:flex;font-size:1.75rem;font-weight:700;height:80px;justify-content:center;margin:0 auto;width:80px}.employee-name{color:#1f2937;font-size:1.5rem;font-weight:700;margin:0;text-align:center}.detail-section{background-color:#f9fafb;border-radius:var(--radius);display:flex;flex-direction:column;gap:1rem;padding:1rem}.detail-section h4{color:#6b7280;font-size:.9rem;font-weight:700;letter-spacing:.5px;margin:0;text-transform:uppercase}.detail-item{align-items:flex-start;display:flex;gap:1rem}.detail-icon{color:var(--primary);flex-shrink:0;margin-top:2px}.detail-item>div{display:flex;flex:1 1;flex-direction:column;gap:.25rem}.detail-item .label{color:#9ca3af;font-size:.8rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.detail-item .value{color:#1f2937;font-size:.95rem;font-weight:500;word-break:break-word}@media (max-width:1024px){.employee-sidebar{width:350px}.node-children{margin-left:1.5rem;padding-left:1.5rem}}@media (max-width:768px){.hierarchy-view{gap:1rem;padding:1rem}.hierarchy-header h1{font-size:1.5rem}.hierarchy-search{max-width:100%}.employee-sidebar{left:0;max-width:400px;right:auto;width:100%}.node-card{flex-direction:column;min-width:0;min-width:auto;text-align:center}.node-info{align-items:center}.node-children{margin-left:1rem;padding-left:1rem}}@media (max-width:640px){.hierarchy-view{padding:.75rem}.hierarchy-tree{gap:1rem}.hierarchy-node,.node-content{gap:.5rem}.expand-btn,.expand-placeholder{height:32px;width:32px}.node-card{gap:.75rem;padding:.75rem}.node-avatar{font-size:.95rem;height:40px;width:40px}.node-name{font-size:.9rem}.node-title{font-size:.8rem}.node-department{font-size:.75rem}.employee-sidebar{height:100%;width:100%}.sidebar-content{gap:1rem;padding:1.5rem 1rem}.employee-avatar{font-size:1.5rem;height:64px;width:64px}.employee-name{font-size:1.25rem}.detail-section{padding:.75rem}.detail-section h4{font-size:.8rem}}.notification-container{margin:0 auto;max-width:800px;padding:2rem}.notification-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.notification-header h1{color:var(--primary);font-size:2rem;font-weight:700;margin:0}.notification-header>div{align-items:center;display:flex;gap:1rem}.unread-badge{background-color:#fee2e2;border-radius:9999px;color:#991b1b;font-size:.8rem;font-weight:600;padding:.25rem .75rem}.notification-tabs{border-bottom:2px solid var(--border);display:flex;gap:1rem;margin-bottom:2rem}.tab{align-items:center;display:flex;gap:.5rem;padding:1rem}.tab.active:after{background-color:var(--primary);bottom:-2px;content:"";height:2px;left:0;position:absolute;right:0}.tab-badge{background-color:var(--danger);border-radius:9999px;color:#fff;font-size:.75rem;font-weight:700;margin-left:.5rem;padding:.125rem .5rem}.notification-list{display:flex;flex-direction:column;gap:1rem}.notification-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;padding:1.5rem;transition:all .2s}.notification-item:hover{border-color:var(--primary);box-shadow:0 4px 12px #2563eb26;transform:translateX(4px)}.notification-item.unread{background-color:#eff6ff;border-left:4px solid var(--primary)}.notification-content{align-items:flex-start;display:flex;gap:1rem;position:relative}.notification-icon-wrapper{align-items:center;background-color:#f9fafb;border-radius:50%;display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.notification-icon{height:24px;width:24px}.notification-icon.warning{color:var(--warning)}.notification-icon.info{color:#3b82f6}.notification-icon.purple{color:#8b5cf6}.notification-icon.gray{color:#9ca3af}.notification-main{flex:1 1}.notification-title{color:#1f2937;font-size:1rem;font-weight:500;margin:0 0 .5rem;transition:font-weight .2s}.notification-title.bold{font-weight:700}.notification-preview{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#6b7280;display:-webkit-box;font-size:.9rem;line-height:1.5;margin:0 0 .5rem;overflow:hidden}.notification-time{color:#9ca3af;font-size:.8rem}.unread-dot{background-color:var(--primary);border-radius:50%;flex-shrink:0;height:8px;position:absolute;right:0;top:1.5rem;width:8px}.notification-expanded{animation:slideDown .3s ease-out;border-top:1px solid var(--border);margin-top:1.5rem;padding-top:1.5rem}@keyframes slideDown{0%{max-height:0;opacity:0}to{max-height:500px;opacity:1}}.expanded-message{color:#374151;line-height:1.6;margin-bottom:1rem;white-space:pre-wrap}.empty-state{background:#fff;border:2px dashed var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:4rem 2rem;text-align:center}.empty-icon{color:#d1d5db;margin-bottom:1rem}.empty-state h2{color:#374151;font-size:1.5rem;font-weight:700;margin:0 0 .5rem}.empty-state p{color:#6b7280;margin:0}@media (max-width:768px){.notification-container{padding:1rem}.notification-header{align-items:flex-start;flex-direction:column;gap:1rem}.notification-item{padding:1rem}.notification-content{gap:.75rem}.notification-icon-wrapper{height:36px;width:36px}.notification-title{font-size:.95rem}.notification-preview{font-size:.85rem}}@media (max-width:640px){.notification-container{padding:.75rem}.notification-tabs{gap:.5rem}.tab{font-size:.9rem}.notification-item,.tab{padding:.75rem}.notification-icon-wrapper{height:32px;width:32px}}.reports-container{margin:0 auto;max-width:1600px;padding:2rem}.reports-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.reports-header h1{color:var(--primary);font-size:2rem;font-weight:700;margin:0}.reports-tabs{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem;padding:1rem}.tab{background:none;border:none;border-radius:var(--radius);color:#6b7280;cursor:pointer;font-weight:600;padding:.75rem 1.5rem;position:relative;transition:color .2s}.tab:hover{background-color:#f9fafb;color:var(--primary)}.tab.active{background-color:#eff6ff;border:1px solid var(--primary-light);color:var(--primary)}.report-section{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem}.section-header{align-items:center;display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-between;margin-bottom:2rem}.section-header h2{color:#1f2937;font-size:1.5rem;font-weight:700;margin:0}.date-range{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.date-range input{border:1px solid var(--border);border-radius:var(--radius);font-family:inherit;font-size:.95rem;padding:.75rem;width:150px}.date-range input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.date-range span{color:#6b7280}.btn{align-items:center;border:none;border-radius:var(--radius);cursor:pointer;display:inline-flex;font-size:.95rem;font-weight:600;gap:.5rem;padding:.75rem 1.5rem;text-decoration:none;transition:all .2s}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--primary-dark);box-shadow:0 4px 12px #2563eb4d;transform:translateY(-2px)}.btn-secondary{background-color:#e5e7eb;color:#374151}.btn-secondary:hover:not(:disabled){background-color:#d1d5db;transform:translateY(-2px)}.btn-sm{font-size:.85rem;padding:.5rem 1rem}.chart-container{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));margin-bottom:2rem}.chart-wrapper{background-color:#f9fafb;border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.chart-wrapper h3{color:#1f2937;font-size:1.1rem;font-weight:700;margin:0 0 1.5rem}.chart-wrapper canvas{max-height:400px}.stats-row{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:2rem}.stat-card{background:linear-gradient(135deg,#eff6ff,#f3f4f6);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:.5rem;padding:1.5rem}.stat-label{color:#6b7280;font-size:.85rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.stat-value{color:var(--primary);font-size:2rem;font-weight:700}.stat-value.warning{color:var(--warning)}.stat-value.danger{color:var(--danger)}.reports-content h3{color:#1f2937;font-size:1.1rem;font-weight:700;margin:2rem 0 1rem}.table-wrapper{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:2rem;overflow-x:auto}.data-table{border-collapse:collapse;font-size:.95rem;width:100%}.data-table thead{background-color:#f9fafb;border-bottom:2px solid var(--border)}.data-table th{color:#374151;font-size:.85rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.data-table td{border-bottom:1px solid var(--border);color:#374151;padding:1rem}.data-table tbody tr:hover{background-color:#f9fafb}.data-table td.expired{color:var(--danger);font-weight:600}.data-table td.warning{color:var(--warning);font-weight:600}.badge{border-radius:9999px;display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.3px;padding:.375rem .75rem;text-transform:uppercase}.badge.expired{background-color:#fee2e2;color:#991b1b}.badge.warning{background-color:#fef3c7;color:#92400e}.badge.approved{background-color:#d1fae5;color:#065f46}.task-list{list-style:none;margin:0;padding:0}.task-list li{font-size:.9rem;padding:.15rem 0}.task-desc{color:#6b7280;font-size:.85rem}.tasks-cell{max-width:350px}.reason-cell{max-width:250px}.row-danger{background-color:#fef2f2}.row-warning{background-color:#fffbeb}.loading-spinner{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:4rem 2rem;text-align:center}.spinner{animation:spin 1s linear infinite;border:4px solid #e5e7eb;border-radius:50%;border-top:4px solid var(--primary);height:48px;margin-bottom:1rem;width:48px}@keyframes spin{to{transform:rotate(1turn)}}.loading-spinner p{color:#6b7280;font-size:1rem}.error-banner{background-color:#fee2e2;border-left:4px solid var(--danger);border-radius:var(--radius);color:#991b1b;font-weight:500;margin-bottom:1.5rem;padding:1rem}@media (max-width:1024px){.chart-container{grid-template-columns:1fr}}@media (max-width:768px){.reports-container{padding:1rem}.reports-header{align-items:flex-start;flex-direction:column;gap:1rem}.reports-header h1{font-size:1.5rem}.section-header{align-items:flex-start;flex-direction:column;gap:1rem}.date-range{flex-wrap:wrap;width:100%}.date-range input{flex:1 1;min-width:150px}.stat-card{padding:1rem}.stat-value{font-size:1.5rem}.chart-wrapper{padding:1rem}.report-section{padding:1.5rem}}@media (max-width:640px){.reports-container{padding:.75rem}.reports-tabs{flex-direction:column}.tab{text-align:left;width:100%}.stats-row{grid-template-columns:1fr}.chart-container{gap:1rem}.chart-wrapper{padding:.75rem}.data-table{font-size:.85rem;min-width:600px}.data-table td,.data-table th{padding:.75rem}.section-header{padding:0}.section-header h2{font-size:1.25rem}}@media print{.date-range button,.reports-header button,.reports-tabs{display:none}.report-section{border:1px solid #e5e7eb;box-shadow:none;margin-bottom:2rem}.chart-wrapper,.report-section{page-break-inside:avoid}}.allocation-list{display:flex;flex-direction:column;gap:.75rem}.allocation-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .2s}.allocation-card.expanded{box-shadow:0 4px 16px #00000014}.allocation-card-header{align-items:center;cursor:pointer;display:flex;justify-content:space-between;padding:1rem 1.5rem;transition:background-color .15s}.allocation-card-header:hover{background-color:#f9fafb}.emp-info{align-items:center;display:flex;gap:.75rem}.emp-info h3{color:#1f2937;font-size:1rem;font-weight:600;margin:0}.emp-info p{color:#6b7280;font-size:.85rem;margin:0}.header-right{align-items:center;color:#6b7280;display:flex;gap:.75rem}.custom-badge{background-color:#eff6ff;border:1px solid var(--primary-light);border-radius:9999px;color:var(--primary);display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.3px;padding:.25rem .6rem;text-transform:uppercase}.allocation-card-body{background-color:#fafbfc;border-top:1px solid var(--border);padding:1.5rem}.allocation-table{border-collapse:collapse;font-size:.92rem;width:100%}.allocation-table thead{background-color:#f3f4f6}.allocation-table th{border-bottom:2px solid var(--border);color:#374151;font-size:.82rem;font-weight:600;letter-spacing:.3px;padding:.6rem .75rem;text-align:left;text-transform:uppercase}.allocation-table td{border-bottom:1px solid var(--border);padding:.6rem .75rem;vertical-align:middle}.allocation-table .custom-row{background-color:#eff6ff}.type-name{color:#1f2937;font-weight:600}.default-days{color:#6b7280}.days-input{border:1px solid var(--border);border-radius:var(--radius);font-family:inherit;font-size:.92rem;padding:.4rem .5rem;text-align:center;width:80px}.days-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.days-input.modified{background-color:#eff6ff;border-color:var(--primary);font-weight:600}.notes-input{border:1px solid var(--border);border-radius:var(--radius);color:#374151;font-family:inherit;font-size:.85rem;max-width:250px;padding:.4rem .5rem;width:100%}.notes-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.btn-reset{align-items:center;background:none;border:1px solid #d1d5db;border-radius:var(--radius);color:#6b7280;cursor:pointer;display:inline-flex;padding:.3rem;transition:all .2s}.btn-reset:hover{background-color:#fef2f2;border-color:#ef4444;color:#ef4444}.allocation-actions{display:flex;justify-content:flex-end;margin-top:1rem}.success-banner{background-color:#d1fae5;border-left:4px solid #10b981;border-radius:var(--radius);color:#065f46;font-weight:500;margin-bottom:1.5rem;padding:1rem}@media (max-width:768px){.allocation-card-header{align-items:flex-start;flex-direction:column;gap:.5rem}.days-input{width:65px}.notes-input{max-width:150px}.allocation-table{font-size:.85rem}}.ex-tabs{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;gap:.5rem;margin-bottom:1.5rem;padding:.75rem}.ex-tabs .tab{align-items:center;background:none;border:none;border-radius:var(--radius);color:#6b7280;cursor:pointer;display:flex;font-weight:600;gap:.5rem;padding:.6rem 1.25rem;transition:all .2s}.ex-tabs .tab:hover{background-color:#f9fafb;color:var(--primary)}.ex-tabs .tab.active{background-color:#eff6ff;border:1px solid var(--primary-light);color:var(--primary)}.ex-employee-list{display:flex;flex-direction:column;gap:1rem}.ex-employee-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.ex-employee-header{align-items:center;cursor:pointer;display:flex;justify-content:space-between;padding:1.25rem 1.5rem;transition:background-color .15s}.ex-employee-header:hover{background-color:#f9fafb}.ex-employee-info{align-items:center;display:flex;gap:1rem}.employee-avatar.inactive{align-items:center;background-color:#9ca3af;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:.9rem;font-weight:700;height:42px;justify-content:center;width:42px}.ex-employee-info h3{color:#1f2937;font-size:1.05rem;font-weight:600;margin:0}.emp-meta{color:#6b7280;font-size:.85rem;margin:.2rem 0 0}.ex-employee-summary{align-items:center;display:flex;gap:1rem}.summary-pill{align-items:center;background-color:#f3f4f6;border-radius:9999px;color:#374151;display:flex;font-size:.85rem;font-weight:500;gap:.35rem;padding:.35rem .75rem}.ex-employee-details{background-color:#fafbfc;border-top:1px solid var(--border);padding:1.5rem}.detail-section{margin-bottom:1.5rem}.detail-section:last-child{margin-bottom:0}.detail-section h4{align-items:center;color:#1f2937;display:flex;font-size:1rem;font-weight:600;gap:.5rem;margin:0 0 .75rem}.data-table.compact td,.data-table.compact th{font-size:.88rem;padding:.6rem .75rem}.no-data{color:#9ca3af;font-size:.9rem;font-style:italic;margin:0}.reason-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ex-docs-section .filter-group{align-items:center;display:flex;gap:.75rem}.ex-docs-section .filter-group label{color:#374151;font-weight:600;white-space:nowrap}.ex-docs-section .filter-select{min-width:350px}.ex-docs-list{display:flex;flex-direction:column;gap:.75rem}.ex-doc-card{align-items:center;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;justify-content:space-between;padding:1rem 1.25rem}.doc-info{align-items:flex-start;color:var(--primary);display:flex;gap:.75rem}.doc-info h4{color:#1f2937;font-size:.95rem;font-weight:600;margin:0}.doc-meta{color:#6b7280}.doc-meta,.doc-notes{font-size:.82rem;margin:.2rem 0 0}.doc-notes{color:#9ca3af;font-style:italic}.status-badge.approved{background-color:#d1fae5;color:#065f46}.status-badge.pending{background-color:#fef3c7;color:#92400e}.status-badge.rejected{background-color:#fee2e2;color:#991b1b}.status-badge.submitted{background-color:#dbeafe;color:#1e40af}.status-badge.draft{background-color:#f3f4f6;color:#6b7280}.btn-danger{background-color:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background-color:#dc2626;box-shadow:0 4px 12px #ef44444d;transform:translateY(-2px)}.btn-success{background-color:#10b981;color:#fff}.btn-success:hover:not(:disabled){background-color:#059669;transform:translateY(-2px)}@media (max-width:768px){.ex-employee-header{align-items:flex-start;flex-direction:column;gap:.75rem}.ex-employee-summary{justify-content:flex-start;width:100%}.ex-docs-section .filter-select{min-width:0;min-width:auto;width:100%}}
/*# sourceMappingURL=main.c76105ea.css.map*/