.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-card{background:#fff;border-radius:12px;padding:40px;box-shadow:0 10px 40px #0000001a;width:100%;max-width:400px}.login-card h1{margin:0 0 10px;color:#333;font-size:28px;text-align:center}.login-card h2{margin:0 0 30px;color:#666;font-size:20px;text-align:center;font-weight:400}.form-group input{width:100%;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:16px;box-sizing:border-box;transition:border-color .3s}.form-group input:focus{outline:none;border-color:#667eea}button[type=submit]{width:100%;padding:12px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .3s}button[type=submit]:hover:not(:disabled){opacity:.9}button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.toggle-mode{text-align:center;margin-top:20px;color:#666}.link-button{background:none;border:none;color:#667eea;cursor:pointer;text-decoration:underline;font-size:inherit;padding:0}.link-button:hover{color:#764ba2}.divider{display:flex;align-items:center;text-align:center;margin:30px 0;color:#999}.divider:before,.divider:after{content:"";flex:1;border-bottom:1px solid #ddd}.divider span{padding:0 15px;font-size:14px;font-weight:500}.vacation-form-container{background:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 4px #0000001a}.vacation-form-container h2{margin:0 0 20px;color:#333;font-size:20px}.vacation-form{display:flex;flex-direction:column}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#333;font-weight:500}.form-group input,.form-group textarea{width:100%;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:16px;box-sizing:border-box;font-family:inherit;transition:border-color .3s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#667eea}.form-group textarea{resize:vertical}.date-error{margin-top:6px;font-size:12px;color:#dc3545}.date-display{margin-top:6px;font-size:14px;color:#666;font-style:italic}.form-select{width:100%;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:16px;box-sizing:border-box;background-color:#fff;cursor:pointer;transition:border-color .3s;font-family:inherit}.form-select:focus{outline:none;border-color:#667eea}.days-info{background:#f0f0f0;padding:12px;border-radius:6px;margin-bottom:20px;color:#666}.days-info strong{color:#333;font-size:18px}.form-actions{display:flex;justify-content:flex-end}.submit-button{padding:12px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .3s}.submit-button:hover:not(:disabled){opacity:.9}.submit-button:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:20px;font-size:14px}.employee-checkbox-item input[type=checkbox]{width:18px;height:18px;margin-right:12px;cursor:pointer;accent-color:#667eea}@media (max-width: 768px){.form-row{grid-template-columns:1fr}}.vacation-item{border:1px solid #ddd;border-radius:8px;padding:20px;background:#fff;transition:box-shadow .3s}.vacation-item:hover{box-shadow:0 2px 8px #0000001a}.vacation-item.status-pending{border-left:4px solid #ffc107}.vacation-item.status-approved{border-left:4px solid #28a745}.vacation-item.status-rejected{border-left:4px solid #dc3545}.vacation-item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px;flex-wrap:wrap;gap:15px}.vacation-item-dates{flex:1;min-width:200px;color:#333;font-size:16px}.date-label{font-weight:600;color:#666;margin-right:5px}.date-separator{margin:0 10px;color:#999}.vacation-item-meta{display:flex;gap:10px;align-items:center}.days-badge{background:#e9ecef;color:#333;padding:6px 12px;border-radius:20px;font-size:14px;font-weight:600}.status-badge{padding:6px 12px;border-radius:20px;font-size:14px;font-weight:600}.vacation-item-type{margin:10px 0}.type-badge{display:inline-block;padding:6px 12px;background:#e9ecef;color:#495057;border-radius:20px;font-size:13px;font-weight:600}.vacation-item-reason,.vacation-item-employee{margin:10px 0;padding:10px;background:#f8f9fa;border-radius:6px;color:#666;font-size:14px}.vacation-item-reason strong,.vacation-item-employee strong{color:#333}.vacation-item-actions{margin-top:15px;padding-top:15px;border-top:1px solid #eee}.action-button{padding:8px 16px;background:#667eea;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:background .3s}.action-button:hover{background:#5568d3}.approve-button,.reject-button,.cancel-button{padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:opacity .3s}.approve-button{background:#28a745;color:#fff}.approve-button:hover:not(:disabled){opacity:.9}.reject-button{background:#dc3545;color:#fff}.reject-button:hover:not(:disabled){opacity:.9}.cancel-button{background:#6c757d;color:#fff}.approve-button:disabled,.reject-button:disabled{opacity:.6;cursor:not-allowed}.vacation-item-footer{margin-top:15px;padding-top:15px;border-top:1px solid #eee;color:#999;font-size:12px}@media (max-width: 768px){.vacation-item-header{flex-direction:column}.vacation-item-meta{width:100%;justify-content:flex-start}}.vacation-list-container{background:#fff;border-radius:8px;padding:30px;box-shadow:0 2px 4px #0000001a}.vacation-list-container h2{margin:0 0 20px;color:#333;font-size:20px}.vacation-list{display:flex;flex-direction:column;gap:15px}.vacation-calendar{background:#fff;border-radius:8px;padding:30px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px;width:100%;box-sizing:border-box;overflow-x:auto}.calendar-header{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:30px}.calendar-header h2{margin:0;font-size:24px;color:#333;min-width:200px;text-align:center}.calendar-nav-button{background:#f0f0f0;border:none;border-radius:6px;padding:10px 15px;font-size:18px;cursor:pointer;transition:background .3s;font-weight:700}.calendar-nav-button:hover{background:#e0e0e0}.calendar-today-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;padding:10px 20px;font-size:14px;cursor:pointer;transition:opacity .3s;font-weight:600}.calendar-today-button:hover{opacity:.9}.calendar-view-toggle{background:#f0f0f0;border:none;border-radius:6px;padding:10px 15px;font-size:14px;cursor:pointer;transition:background .3s;font-weight:600;margin-left:10px}.calendar-view-toggle:hover{background:#e0e0e0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:20px;width:100%;min-width:0}.calendar-day-header{background:#f8f9fa;padding:12px;text-align:center;font-weight:600;color:#666;font-size:14px;border-radius:4px}.calendar-day{aspect-ratio:1;border:1px solid #e0e0e0;border-radius:4px;padding:8px;display:flex;flex-direction:column;position:relative;background:#fff;transition:background .2s}.calendar-day:hover{background:#f8f9fa}.calendar-day.empty{background:transparent;border:none}.calendar-day.today{background:#e3f2fd;border:2px solid #2196f3;font-weight:600}.calendar-day.holiday{background:#fff3cd;border-left:3px solid #ffc107}.calendar-day.holiday.today{background:#ffe69c}.calendar-day.weekend{background:#f5f5f5}.calendar-day.weekend.today{background:#d0e4f7}.day-number{font-size:14px;color:#333;margin-bottom:4px}.calendar-day.today .day-number{color:#2196f3}.vacation-abbreviations{display:flex;flex-wrap:wrap;gap:2px;margin-top:auto;width:100%;align-items:center;justify-content:flex-start}.vacation-abbreviation{font-size:14px;font-weight:600;color:#28a745;background-color:#d4edda;padding:5px 8px;border-radius:4px;line-height:1.2;white-space:nowrap}.vacation-abbreviation.reserved{color:#17a2b8;background-color:#d1ecf1}.holiday-name{font-size:9px;color:#856404;font-weight:600;display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.holiday-legend{background:#fff3cd;border:1px solid #ffc107}.calendar-legend{display:flex;gap:30px;justify-content:center;padding-top:20px;border-top:1px solid #e0e0e0}.legend-item{display:flex;align-items:center;gap:8px}.legend-color{width:20px;height:20px;border-radius:4px}.legend-item span{font-size:14px;color:#666}@media (max-width: 768px){.vacation-calendar{padding:15px;overflow-x:auto}.calendar-header{flex-wrap:wrap;gap:10px;justify-content:center}.calendar-header h2{font-size:18px;min-width:auto;width:100%;order:-1}.calendar-nav-button,.calendar-today-button,.calendar-view-toggle{font-size:12px;padding:8px 12px}.calendar-grid{min-width:0;width:100%;overflow-x:auto}.vacation-calendar{overflow-x:auto}.calendar-day{padding:4px;min-height:50px;aspect-ratio:unset;height:auto;min-width:0}.day-number{font-size:11px}.holiday-name{font-size:8px}.calendar-legend{flex-wrap:wrap;gap:15px;justify-content:center}.legend-item{font-size:12px}.legend-color{width:16px;height:16px}.legend-item span{font-size:12px}}@media (max-width: 480px){.vacation-calendar{padding:10px}.calendar-header{gap:8px;margin-bottom:20px}.calendar-header h2{font-size:16px}.calendar-nav-button,.calendar-today-button,.calendar-view-toggle{font-size:11px;padding:6px 10px}.calendar-day{padding:2px;min-height:35px;aspect-ratio:unset;height:auto}.calendar-day-header{padding:6px 3px;font-size:10px}.day-number{font-size:10px}.holiday-name{font-size:7px}.vacation-abbreviation{font-size:10px;padding:2px 4px}.calendar-day-header{padding:8px 4px;font-size:11px}.calendar-legend{gap:10px;padding-top:15px}.legend-item{font-size:11px}.legend-color{width:14px;height:14px}.legend-item span{font-size:11px}}.year-view{margin-bottom:20px}.year-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:20px}.year-month-calendar{background:#fff;border:2px solid #e0e0e0;border-radius:8px;padding:12px;transition:all .3s}.year-month-calendar:hover{border-color:#667eea;box-shadow:0 4px 8px #0000001a}.year-month-calendar.current-month{background:#f8f9fa;border-color:#2196f3}.year-month-header{font-size:16px;font-weight:600;color:#333;margin-bottom:10px;text-align:center;cursor:pointer;padding:5px;border-radius:4px;transition:background .2s}.year-month-header:hover{background:#e0e0e0}.year-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.year-month-day-header{background:#f8f9fa;padding:4px;text-align:center;font-weight:600;color:#666;font-size:10px;border-radius:2px}.year-month-day{aspect-ratio:1;border:1px solid #e0e0e0;border-radius:2px;padding:2px;display:flex;flex-direction:column;position:relative;background:#fff;min-height:24px;font-size:10px}.year-month-day.empty{background:transparent;border:none}.year-month-day.today{background:#e3f2fd;border:2px solid #2196f3;font-weight:600}.year-month-day.holiday{background:#fff3cd;border-left:2px solid #ffc107}.year-month-day.holiday.today{background:#ffe69c}.year-month-day.weekend{background:#f5f5f5}.year-month-day.weekend.today{background:#d0e4f7}.year-day-number{font-size:10px;color:#333;line-height:1}.year-month-day.today .year-day-number{color:#2196f3}.year-vacation-abbreviations{display:flex;flex-wrap:wrap;gap:1px;margin-top:auto;width:100%;align-items:center;justify-content:flex-start}.year-vacation-abbreviation{font-size:11px;font-weight:600;color:#28a745;background-color:#d4edda;padding:3px 5px;border-radius:3px;line-height:1;white-space:nowrap}.year-vacation-abbreviation.reserved{color:#17a2b8;background-color:#d1ecf1}@media (max-width: 1024px){.year-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.year-grid{grid-template-columns:repeat(2,1fr);gap:15px}.year-month-calendar{padding:10px}.year-month-header{font-size:14px}.year-month-day{min-height:20px}.year-day-number{font-size:9px}.calendar-view-toggle{font-size:12px;padding:8px 12px}}@media (max-width: 480px){.year-grid{grid-template-columns:1fr;gap:12px}.year-month-calendar{padding:8px}.year-month-header{font-size:12px;padding:4px}.year-month-day{min-height:18px;padding:1px}.year-day-number{font-size:8px}.year-month-day-header{font-size:9px;padding:3px}.year-vacation-abbreviation{font-size:10px;padding:3px 4px}}.vacation-balance{background:#fff;border-radius:8px;padding:30px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px}.balance-header{display:flex;align-items:center;justify-content:center;gap:15px;margin-bottom:20px;flex-wrap:wrap}.balance-header h2{margin:0;min-width:200px;text-align:center;color:#333;font-size:20px}.year-nav-button{background:#2196f3;color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:18px;cursor:pointer;transition:background .2s;min-width:45px}.year-nav-button:hover{background:#1976d2}.year-today-button{background:#4caf50;color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:14px;cursor:pointer;transition:background .2s}.year-today-button:hover{background:#45a049}.balance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:20px}.balance-item{text-align:center;padding:20px;border-radius:8px;background:#f8f9fa;border:2px solid #e9ecef;transition:transform .2s,box-shadow .2s}.balance-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.balance-item.approved{background:#d4edda;border-color:#28a745}.balance-item.pending{background:#fff3cd;border-color:#ffc107}.balance-item.reserved{background:#d1ecf1;border-color:#17a2b8;text-align:left;grid-column:span 2}.balance-item.remaining{background:#e7f3ff;border-color:#2196f3}.balance-item.summary-table{background:#f8f9fa;border-color:#e9ecef;text-align:left;grid-column:span 2}.summary-table-header{margin-bottom:15px;border-bottom:2px solid #e9ecef;padding-bottom:10px}.summary-table-header h3{margin:0;font-size:16px;font-weight:600;color:#333}.summary-table-content{width:100%;border-collapse:collapse}.summary-table-content td{padding:10px 15px;border-bottom:1px solid rgba(0,0,0,.1)}.summary-table-content tr:last-child td{border-bottom:none}.summary-row-rest{border-top:2px solid #333;background:#0d47a10d}.summary-row-rest .summary-label,.summary-row-rest .summary-value{font-weight:700}.summary-label{font-size:14px;font-weight:600;color:#333;width:120px}.summary-label-small{font-size:12px;font-weight:500;color:#666;padding-left:20px!important}.summary-value{font-size:20px;font-weight:700;color:#333;text-align:right}.summary-value-small{font-size:16px;font-weight:600;color:#666;text-align:right}.summary-separator{font-size:18px;font-weight:600;color:#666;text-align:center;padding:10px!important;border-bottom:none!important;width:30px}.balance-label{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.balance-value{font-size:28px;font-weight:700;color:#333}.balance-item.approved .balance-value{color:#155724}.balance-item.pending .balance-value{color:#856404}.balance-item.reserved .balance-value{color:#0c5460}.reserved-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.balance-item.reserved .reserved-header .balance-label{margin-bottom:0;font-size:14px}.balance-item.reserved .reserved-header .balance-value{font-size:28px}.balance-item.remaining .balance-value{color:#0d47a1}.reserved-table-container{margin-top:15px;padding-top:15px;border-top:1px solid #17a2b8}.reserved-table{width:100%;border-collapse:collapse;background:transparent;margin-top:10px}.reserved-table thead{background:transparent}.reserved-table th{padding:8px 10px;text-align:left;font-weight:600;color:#0c5460;font-size:12px;border-bottom:1px solid #17a2b8}.reserved-table td{padding:6px 10px;border-bottom:1px solid rgba(23,162,184,.2);color:#0c5460;font-size:12px}.reserved-table tbody tr:last-child td{border-bottom:none}.reserved-table tbody tr:hover{background:#ffffff4d}.holiday-indicator{font-size:10px;color:#666;font-weight:400;font-style:italic}.remaining-reserved-info{margin-top:15px;padding-top:15px;border-top:1px solid rgba(23,162,184,.3)}.remaining-reserved-header{display:flex;justify-content:space-between;align-items:center}.remaining-reserved-label{font-size:12px;font-weight:600;color:#0c5460}.remaining-reserved-value{font-size:18px;font-weight:700;color:#0c5460}@media (max-width: 768px){.balance-grid{grid-template-columns:repeat(2,1fr);gap:15px}.balance-item{padding:15px}.balance-item.reserved,.balance-item.summary-table{grid-column:span 2}.balance-value{font-size:24px}.summary-table-content{font-size:12px}.summary-label{width:100px;font-size:12px}.summary-value{font-size:18px}.summary-value-small{font-size:14px}.summary-separator{font-size:16px;padding:10px 5px!important}.reserved-table{font-size:11px}.reserved-table th,.reserved-table td{padding:5px 8px}}.dashboard{min-height:100vh;background:#f5f5f5}.dashboard-header{background:#fff;padding:20px 40px;box-shadow:0 2px 4px #0000001a;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px}.dashboard-header-actions{display:flex;gap:15px;align-items:center}.admin-link{padding:10px 20px;background:#667eea;color:#fff;text-decoration:none;border-radius:6px;font-weight:600;font-size:14px;transition:background .3s;display:inline-flex;align-items:center;gap:5px}.admin-link:hover{background:#5568d3}.dashboard-header h1{margin:0;color:#333;font-size:24px}.dashboard-header p{margin:5px 0 0;color:#666;font-size:14px}.logout-button{padding:10px 20px;background:#dc3545;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:background .3s}.dashboard-content{max-width:1200px;margin:0 auto;padding:40px 20px;width:100%;box-sizing:border-box}@media (max-width: 768px){.dashboard-content{padding:20px 15px}.dashboard-header{padding:15px 20px}.dashboard-header h1{font-size:20px}.dashboard-header p{font-size:12px}.action-section{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.primary-button{font-size:14px;padding:10px 18px;flex:1 1 auto;min-width:140px}.view-toggle{margin-bottom:15px}.toggle-button{font-size:13px;padding:8px 16px}}@media (max-width: 480px){.dashboard-content{padding:15px 10px}.dashboard-header{padding:12px 15px;flex-direction:column;align-items:flex-start}.dashboard-header-actions{width:100%;flex-wrap:wrap;gap:10px}.admin-link,.logout-button{font-size:12px;padding:8px 16px;flex:1 1 auto;min-width:120px}.action-section{flex-direction:column}.primary-button{width:100%;margin-left:0!important}}.action-section{margin-bottom:30px}.primary-button{padding:12px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .3s}.primary-button:hover{opacity:.9}.primary-button.active{background:linear-gradient(135deg,#5568d3,#6a3f8f);box-shadow:0 2px 8px #667eea66}.view-toggle{display:flex;gap:10px;margin-bottom:20px;justify-content:center}.toggle-button{padding:10px 20px;background:#f0f0f0;border:2px solid transparent;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s;color:#666}.toggle-button:hover{background:#e0e0e0}.toggle-button.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.reserved-days-management{background:#fff;border-radius:8px;padding:30px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px}.reserved-days-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.reserved-days-header h2{margin:0;color:#333;font-size:24px}.total-reserved{display:flex;align-items:center;gap:10px}.total-label{font-size:16px;color:#666;font-weight:500}.total-value{font-size:20px;font-weight:600;color:#667eea}.reserved-days-table-container{overflow-x:auto;border-radius:8px;border:1px solid #e0e0e0}.reserved-days-table{width:100%;border-collapse:collapse;background:#fff}.reserved-days-table thead{background:#f8f9fa}.reserved-days-table th{padding:15px;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0;font-size:14px}.reserved-days-table td{padding:15px;border-bottom:1px solid #e0e0e0;color:#333}.reserved-days-table tbody tr:hover{background:#f8f9fa}.reserved-days-table tbody tr:last-child td{border-bottom:none}.employee-info{display:flex;flex-direction:column;gap:5px}.employee-info h3{margin:0;font-size:18px;color:#333}.employee-email{font-size:14px;color:#666}.period-info{display:flex;flex-direction:column;gap:5px}.period-info h3{margin:0;font-size:18px;color:#333}.period-reason{font-size:14px;color:#666;font-style:italic}.reserved-days-info{display:flex;align-items:center;gap:15px}.reserved-days-badge{background:#fff3cd;color:#856404;padding:6px 12px;border-radius:6px;font-weight:600;font-size:14px;border:1px solid #ffc107;display:inline-block}.reserved-count{font-size:14px;color:#666}.total-days-badge{background:#e3f2fd;color:#1565c0;padding:8px 16px;border-radius:6px;font-weight:600;font-size:14px;border:1px solid #2196f3}.table-date-input{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;width:100%;max-width:150px}.table-days-value{font-weight:600;color:#667eea}.table-actions{display:flex;gap:8px;flex-wrap:wrap}.reserved-request-item{display:flex;flex-direction:column;gap:10px;padding:15px;margin-bottom:10px;background:#f8f9fa;border-radius:6px;border-left:3px solid #ffc107}.reserved-request-item>*:not(.edit-reservation-form){display:flex;align-items:center;gap:10px;flex-wrap:wrap}.reserved-request-item:last-child{margin-bottom:0}.request-dates{flex:1;font-size:14px;color:#333}.date-label{font-weight:600;color:#666}.date-separator{margin:0 8px;color:#999}.request-days{font-weight:600;color:#667eea;margin:0 20px}.request-reason{flex:1;font-size:13px;color:#666;margin:0 20px}.request-employee{flex:1;font-size:14px;color:#333;margin-bottom:8px;font-weight:500}.period-details{display:flex;flex-direction:column;gap:12px;margin-bottom:15px}.detail-row{display:flex;align-items:center;gap:10px}.detail-label{font-weight:600;color:#666;min-width:180px}.detail-value{color:#333}.request-actions{display:flex;gap:10px}.edit-reservation-button{background:#667eea;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:background .3s;white-space:nowrap}.edit-reservation-button:hover{background:#5568d3}.edit-reservation-form{width:100%;display:flex;flex-direction:column;gap:15px}.edit-form-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.edit-form-row label{display:flex;align-items:center;gap:5px}.employee-select{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;min-width:250px;background:#fff;cursor:pointer}.date-input,.reason-input{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;min-width:120px}.reason-input{flex:1;min-width:200px}.edit-form-actions{display:flex;gap:10px;justify-content:flex-end}.save-reservation-button{background:#28a745;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:background .3s;white-space:nowrap}.save-reservation-button:hover{background:#218838}.cancel-edit-button{background:#6c757d;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:background .3s;white-space:nowrap}.cancel-edit-button:hover{background:#5a6268}.employee-checkbox-list{border:1px solid #ddd;border-radius:6px;padding:10px;max-height:300px;overflow-y:auto;background:#fff}.employee-checkbox-item{display:flex;align-items:center;padding:10px;border-radius:4px;cursor:pointer;transition:background .2s}.employee-checkbox-item:hover{background:#f8f9fa}.employee-checkbox-item input[type=radio]{width:18px;height:18px;margin-right:12px;cursor:pointer;accent-color:#667eea}.employee-checkbox-label{font-size:14px;color:#333;-webkit-user-select:none;user-select:none}.cancel-reservation-button{background:#dc3545;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:background .3s;white-space:nowrap}.cancel-reservation-button:hover{background:#c82333}.empty-state{text-align:center;padding:40px;color:#666}@media (max-width: 768px){.reserved-days-header{flex-direction:column;align-items:flex-start;gap:15px}.reserved-days-table-container{overflow-x:auto}.reserved-days-table{min-width:600px}.reserved-days-table th,.reserved-days-table td{padding:10px 8px;font-size:13px}.table-actions{flex-direction:column;width:100%}.table-actions button{width:100%}.table-date-input{max-width:100%}}.admin-panel{min-height:100vh;background:#f5f5f5;padding:20px}.admin-header{background:#fff;padding:20px;border-radius:8px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.admin-header h1{margin:0;color:#333}.admin-header p{margin:5px 0 0;color:#666;font-size:14px}.admin-header-actions{display:flex;gap:15px;align-items:center}.back-button{padding:10px 20px;background:#6c757d;color:#fff;text-decoration:none;border-radius:6px;font-weight:600;transition:background .3s}.logout-button{padding:10px 20px;background:#dc3545;color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer;transition:background .3s}.logout-button:hover{background:#c82333}.admin-content{max-width:1200px;margin:0 auto}.admin-section{background:#fff;padding:25px;border-radius:8px;margin-bottom:20px;box-shadow:0 2px 4px #0000001a}.admin-section h2{margin:0 0 20px;color:#333;border-bottom:2px solid #667eea;padding-bottom:10px}.table-container{overflow-x:auto;border-radius:8px;border:1px solid #e0e0e0}.employees-table{width:100%;border-collapse:collapse;background:#fff}.employees-table thead{background:#667eea;color:#fff}.employees-table th{padding:15px;text-align:left;font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.5px}.employees-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s}.employees-table tbody tr:hover{background-color:#f8f9fa}.employees-table tbody tr:last-child{border-bottom:none}.employees-table td{padding:15px;vertical-align:middle}.employee-name{font-weight:600;color:#333;font-size:15px}.employee-link{color:#667eea;text-decoration:none;font-weight:600;transition:color .2s}.employee-link:hover{color:#5568d3;text-decoration:underline}.employee-email{color:#666;font-size:14px}.roles-cell{min-width:200px}.add-role-cell{min-width:180px}.entitlement-cell{min-width:150px}.entitlement-display{display:flex;align-items:center;gap:10px}.entitlement-label{font-weight:600;color:#666}.entitlement-value{font-weight:600;color:#333;font-size:16px}.entitlement-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.entitlement-input{padding:8px 12px;border:1px solid #ddd;border-radius:6px;width:80px;font-size:14px}.edit-button,.save-button,.cancel-button{padding:6px 10px;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .3s;min-width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center}.edit-button{background:#667eea;color:#fff}.edit-button:hover{opacity:.9}.save-button{background:#28a745;color:#fff}.save-button:hover{opacity:.9}.cancel-button{background:#dc3545;color:#fff}.cancel-button:hover{opacity:.9}.no-available-roles{color:#999;font-size:13px;font-style:italic}.roles-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.role-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;background:#667eea;color:#fff;border-radius:20px;font-size:14px;font-weight:600}.remove-role-button{background:#ffffff4d;border:none;color:#fff;width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .3s;padding:0}.remove-role-button:hover{background:#ffffff80}.no-roles{color:#999;font-style:italic}.add-role-section{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.add-role-section strong{color:#333}.role-select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;width:100%;max-width:200px;background:#fff;cursor:pointer}.roles-info{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}.role-info-card{border:1px solid #e0e0e0;border-radius:8px;padding:15px;background:#fafafa}.role-info-card h3{margin:0 0 10px;color:#667eea;font-size:16px}.role-info-card p{margin:0 0 10px;color:#666;font-size:14px}.role-stats{margin-top:10px;padding-top:10px;border-top:1px solid #e0e0e0;color:#999;font-size:12px}.access-denied{text-align:center;padding:50px 20px;background:#fff;border-radius:8px;max-width:500px;margin:50px auto}.access-denied h2{color:#dc3545;margin-bottom:10px}.access-denied p{color:#666}@media (max-width: 768px){.admin-header{flex-direction:column;align-items:flex-start;gap:15px}.admin-header-actions{width:100%;flex-direction:column}.back-button,.logout-button{width:100%;text-align:center}.table-container{overflow-x:scroll}.employees-table{min-width:800px}.employees-table th,.employees-table td{padding:10px 8px;font-size:13px}.entitlement-edit{flex-direction:column;align-items:flex-start}.roles-info{grid-template-columns:1fr}}.employee-year-calendar{background:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.employee-year-calendar h2{margin:0 0 20px;color:#333;font-size:24px;border-bottom:2px solid #e0e0e0;padding-bottom:15px}.calendar-form-container{background:#fffacd;border:2px solid #4a90e2;border-radius:4px;padding:15px}.calendar-form-table{width:100%;border-collapse:collapse;background:#fff;font-size:12px;min-width:1000px}.calendar-form-table th,.calendar-form-table td{border:1px solid #4a90e2;padding:4px;text-align:center;min-width:25px}.year-header-cell{background:#f0f0f0;font-weight:600;vertical-align:top;width:80px}.year-header-cell .year-value{font-size:16px;margin-top:5px;font-weight:700}.day-header-cell{background:#e8f4f8;font-weight:600;font-size:11px;padding:6px 2px;min-width:28px}.category-header{background:#e8f4f8;font-weight:600;font-size:11px;padding:6px 4px;min-width:50px}.month-name-cell{background:#f0f0f0;font-weight:600;text-align:left;padding:8px 12px;width:80px}.calendar-day-cell{background:#fff;min-height:25px;font-weight:500;font-size:11px;vertical-align:middle}.calendar-day-cell.empty{background:#f5f5f5;border:none}.calendar-day-cell.has-code{font-weight:700;font-size:12px}.calendar-day-cell.weekend-holiday{background-color:#d3d3d3}.category-cell{background:#f8f9fa;font-weight:600;font-size:11px;min-width:50px}.calendar-month-row:hover{background:#f8f9fa}.calendar-legend{margin-top:20px;padding:15px;background:#fff;border:1px solid #e0e0e0;border-radius:4px;display:flex;flex-wrap:wrap;gap:20px;font-size:13px}.legend-item{display:flex;align-items:center;gap:5px}.legend-item strong{color:#333;font-weight:600}@media (max-width: 1200px){.employee-year-calendar{padding:15px}.calendar-form-table{font-size:10px;min-width:800px}.calendar-day-cell{min-height:20px;font-size:10px}}.employee-detail{min-height:100vh;background:#f5f5f5;padding:20px}.employee-detail-header{background:#fff;padding:20px;border-radius:8px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.employee-detail-header h1{margin:0;color:#333}.employee-detail-header p{margin:5px 0 0;color:#666;font-size:14px}.employee-detail-content{max-width:1200px;margin:0 auto}.employee-info-section,.vacation-summary-section,.vacation-requests-section{background:#fff;padding:25px;border-radius:8px;margin-bottom:20px;box-shadow:0 2px 4px #0000001a}.employee-info-section h2,.vacation-summary-section h2,.vacation-requests-section h2{margin:0 0 20px;color:#333;border-bottom:2px solid #667eea;padding-bottom:10px}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}.info-item{display:flex;flex-direction:column;gap:5px}.info-item label{font-weight:600;color:#666;font-size:14px}.info-item span{color:#333;font-size:16px}.year-selector{margin-bottom:20px;display:flex;align-items:center;gap:10px}.year-selector label{font-weight:600;color:#333}.year-selector select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background:#fff;cursor:pointer}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;margin-top:20px}.summary-card{padding:20px;border-radius:8px;text-align:center;box-shadow:0 2px 4px #0000001a}.summary-card.approved{background:#d4edda;border:1px solid #c3e6cb}.summary-card.pending{background:#fff3cd;border:1px solid #ffeaa7}.summary-card.total{background:#d1ecf1;border:1px solid #bee5eb}.summary-label{font-size:14px;color:#666;margin-bottom:10px;font-weight:600}.summary-value{font-size:24px;font-weight:700;color:#333}.table-container{overflow-x:auto;border-radius:8px;border:1px solid #e0e0e0;margin-top:20px}.vacation-requests-table{width:100%;border-collapse:collapse;background:#fff}.vacation-requests-table thead{background:#667eea;color:#fff}.vacation-requests-table th{padding:15px;text-align:left;font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.5px}.vacation-requests-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s}.vacation-requests-table tbody tr:hover{background-color:#f8f9fa}.vacation-requests-table tbody tr:last-child{border-bottom:none}.vacation-requests-table td{padding:15px;vertical-align:middle}.vacation-requests-table tbody tr.status-approved{background-color:#f0f9f4}.vacation-requests-table tbody tr.status-pending{background-color:#fffbf0}.vacation-requests-table tbody tr.status-rejected{background-color:#fef0f0}.status-badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.status-badge.status-approved{background:#d4edda;color:#155724}.status-badge.status-pending{background:#fff3cd;color:#856404}.status-badge.status-rejected{background:#f8d7da;color:#721c24}.no-requests{text-align:center;padding:40px;color:#666}.error-message{text-align:center;padding:40px}.access-denied{text-align:center;padding:40px;color:#dc3545}.back-button{padding:10px 20px;background:#6c757d;color:#fff;text-decoration:none;border-radius:6px;font-weight:600;transition:background .3s;display:inline-block}.back-button:hover{background:#5a6268}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333}#root{min-height:100vh}
