*{box-sizing:border-box;margin:0;padding:0}:root{--primary-color: #007bff;--primary-hover: #0069d9;--secondary-color: #6c757d;--secondary-hover: #5a6268;--success-color: #28a745;--success-hover: #218838;--danger-color: #dc3545;--danger-hover: #c82333;--warning-color: #ffc107;--light-color: #f8f9fa;--dark-color: #343a40;--border-color: #dee2e6;--text-color: #212529;--text-muted: #6c757d;--shadow: 0 2px 4px rgba(0, 0, 0, .1);--transition: all .3s ease;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}body{margin:0;min-width:320px;min-height:100vh;background-color:#f5f7fa}h1{font-size:3.2em;line-height:1.1}button,input{font-family:inherit}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}button{background-color:#f9f9f9}}.today-pass-container{margin:1.5rem 0}.status-card{border-radius:12px;padding:1.5rem;margin:.5rem 0 1.5rem;box-shadow:var(--shadow);display:flex;align-items:center;position:relative;gap:1rem}.status-card.allocated{background-color:var(--success-color);color:#fff}.status-card.pending,.status-card.waiting{background-color:var(--warning-color);color:var(--text-color)}.status-card.no-pass{background-color:var(--danger-color);color:#fff}.status-card.weekend{background-color:#0078d7;color:#fff}.status-card.confirmed{background-color:var(--success-color);color:#fff}.status-card .pass-number{font-size:2.5rem;font-weight:700;min-width:60px;text-align:center}.status-card .status-icon{font-size:2rem;font-weight:700;min-width:60px;text-align:center}.status-card .status-text{flex:1;text-align:left}.status-card .status-title{font-size:1.25rem;font-weight:600;margin-bottom:.25rem}.status-card .status-date{font-size:1rem;opacity:.9}.status-card .request-button{padding:.5rem 1rem;border-radius:6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;transition:all .2s ease;align-self:center;width:auto;min-width:60px}.status-card.pending .request-button{background-color:var(--success-color);color:#fff;margin-right:1rem}.delete-icon-button{position:absolute;top:.75rem;right:.75rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background-color:#fff3;color:#fff;cursor:pointer;transition:all .2s ease;z-index:5;padding:0}.status-card.allocated .delete-icon-button{background-color:#fff3;color:#fff}.status-card.pending .delete-icon-button{background-color:#0000001a;color:var(--text-color)}.delete-icon-button svg{width:16px;height:16px}.error-message{background-color:#fff5f5;color:#c53030;border:1px solid #feb2b2;padding:.75rem 1rem;border-radius:4px;margin-bottom:1rem;font-size:.875rem}.future-dates-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:20px 0}@media (max-width: 576px){.dashboard-nav-buttons{flex-direction:column;width:100%}.dashboard-nav-buttons button{margin:.25rem 0;width:100%}.future-dates-grid{grid-template-columns:repeat(2,1fr)}}.future-date-card{position:relative;border:2px solid #e0e0e0;border-radius:8px;padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:120px;background:#fff;transition:all .2s ease}.future-date-card.assigned{border-left:4px solid var(--success-color)}.future-date-card.pending{border-left:4px solid var(--warning-color)}.future-date-card.no-request{border-left:4px solid #dee2e6}.date-info{text-align:center;margin-bottom:15px}.date-info .date{font-size:1rem;color:#666}.date-info .day{font-size:1.8rem;font-weight:700;color:#333;line-height:1.2}.date-info .month{font-size:1rem;color:#666}.pass-status{margin-top:auto;display:flex;justify-content:center}.pending-button{background-color:var(--warning-color);color:var(--text-color);border:none;padding:.5rem 1rem;border-radius:4px;font-weight:500;cursor:pointer;transition:background-color .2s}.pending-button.small{font-size:.8rem;padding:.4rem .8rem}.pass-assigned{color:#28a745;font-weight:600}.pass-pending{color:#ffc107;font-weight:600}.no-request{color:#6c757d}button.small{padding:6px 12px;font-size:.85rem}.future-passes-container.loading{min-height:200px;display:flex;align-items:center;justify-content:center;font-style:italic;color:#6c757d}.future-requests-view{padding:1rem 0;margin:0 auto;max-width:65rem}.calendars-container{display:grid;grid-template-columns:1fr;gap:2rem;margin:1.5rem 0}.month-calendar{padding:1.25rem;border-radius:12px;background-color:#fff;box-shadow:0 2px 8px #00000014}.month-title{font-size:1.2rem;font-weight:600;margin-bottom:1rem;text-align:center;color:#2c3e50}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.weekday-header{text-align:center;font-weight:500;color:#475569;font-size:.8rem;padding:.5rem 0}.calendar-day{aspect-ratio:1;border-radius:5px;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer;background-color:#f8f9fa;transition:background-color .3s;font-size:.9rem}.empty-day{background:transparent;cursor:default}.has-request{background-color:#e6f0fa;border-color:#bfdbfe}.has-allocated-pass{background-color:#f8f9fa;border-color:#e2e8f0}.non-working-day{background-color:#f8fafc;cursor:not-allowed}.past-date{background-image:repeating-linear-gradient(45deg,#00000008,#00000008 5px,#0000000f 5px,#0000000f 10px);cursor:not-allowed;opacity:.8}.holiday{color:#dc2626}.day-number{font-size:.9rem;font-weight:500;line-height:1;color:#1e293b}.non-working-day .day-number{color:#94a3b8;opacity:1}.request-indicator{position:absolute;bottom:6px;width:6px;height:6px;border-radius:50%;background-color:#f59e0b;margin-top:2px}.request-indicator.allocated-pass{background-color:#10b981}.calendar-legend{display:flex;justify-content:center;gap:1.5rem;margin-top:1rem;color:#334155}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.legend-item .request-indicator{position:static;margin:0}.non-working-sample{width:16px;height:16px;background-color:#f8fafc;border-radius:3px;border:1px solid #e2e8f0}@media (min-width: 768px){.calendars-container{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.calendars-container{grid-template-columns:repeat(3,1fr)}}.range-operation-buttons{display:flex;gap:2rem;margin-bottom:2rem;justify-content:center}.create-range-button,.delete-range-button{padding:.75rem 1.5rem;border-radius:6px;font-weight:500;border:none;cursor:pointer;transition:background-color .2s}.create-range-button{background-color:var(--primary-color);color:#fff}.delete-range-button{background-color:var(--danger-color);color:#fff}.delete-range-button:disabled{background-color:#e9ecef;color:#adb5bd;cursor:not-allowed}.success-message{background-color:#f0fff4;color:#2f855a;border:1px solid #c6f6d5;padding:.75rem 1rem;border-radius:4px;margin-bottom:1rem;font-size:.875rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0006;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem}.modal-container{background-color:#fff;padding:1.5rem;border-radius:8px;width:100%;max-width:450px;max-height:90vh;overflow-y:auto;box-shadow:0 10px 15px -3px #0000001a}.modal-container h3{font-size:1.25rem;font-weight:600;color:#2c3e50;margin-top:0;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:1px solid #e2e8f0}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#4a5568}.form-group input,.form-group select{width:100%;padding:.625rem 2rem .625rem .625rem;border:1px solid #e2e8f0;border-radius:4px;font-size:.875rem;color:#2d3748;background-color:#fff;transition:border-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%234a5568' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 3px #4299e126}.form-note{font-size:.875rem;color:#718096;font-style:italic;margin-bottom:1.5rem}.modal-buttons{display:flex;justify-content:flex-end;gap:.75rem}.modal-buttons button{padding:.625rem 1.25rem;border-radius:4px;font-weight:500;font-size:.875rem;cursor:pointer;transition:all .2s}.cancel-button{background-color:#e2e8f0;color:#4a5568;border:none}.submit-button{background-color:#4299e1;color:#fff;border:none}.submit-button:disabled{background-color:#a0aec0;cursor:not-allowed;opacity:.7}.month-stats-wrapper{display:flex;flex-direction:column;gap:1.5rem;padding:1rem 0;max-width:45rem;margin:0 auto}.month-stats-wrapper h2{font-size:1.5rem;font-weight:600;color:var(--text-color)}.stats-card{background-color:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:1.25rem;width:100%}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid #e2e8f0;flex-wrap:nowrap}.section-header h3{margin:0;white-space:nowrap;font-size:1.25rem;font-weight:600;color:#2c3e50}.toggle-container{display:flex;align-items:baseline;justify-content:flex-end;margin-left:1rem;flex-shrink:0}.toggle-container label{padding:.5rem 1rem;font-size:.9rem;color:#6c757d;cursor:pointer}.toggle-container input[type=checkbox]{margin-right:.5rem;width:.9rem;height:.9rem;accent-color:var(--primary-color);cursor:pointer;opacity:.8;border-radius:3px}.stats-card h3{font-size:1.25rem;font-weight:600;color:#2c3e50;padding-bottom:.5rem}.usage-pills-container{width:100%}.usage-pills{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.5rem}.usage-pill{background-color:#f8f9fa;border-radius:10px;padding:1rem;display:flex;flex-direction:row;align-items:center;justify-content:center;transition:transform .3s;cursor:pointer}.usage-pill.low-usage{background-color:#fff8f8;border:1px solid #fed7d7}.usage-pill.good-usage{background-color:#f7fffa;border:1px solid #c6f6d5}.pass-name{font-size:.875rem;font-weight:500;color:#718096;margin-right:.875rem}.usage-count{font-weight:700;padding:.1rem .3rem;border-radius:1rem;min-width:2.75rem;text-align:center;color:#fff;box-shadow:0 2px 4px #00000026}.low-usage .usage-count{background-color:#f56565}.good-usage .usage-count{background-color:#48bb78}.app-layout{display:flex;flex-direction:column;min-height:100vh;width:100%}.main-content{flex:1;padding:1rem;margin-top:60px}.top-bar{display:flex;justify-content:space-between;align-items:center;height:60px;padding:0 1rem;background-color:#fff;box-shadow:var(--shadow);position:fixed;top:0;left:0;width:100%;z-index:1000}.app-title{font-size:1.25rem;font-weight:600;margin:0;color:var(--primary-color)}.user-info-compact{font-size:.875rem;color:var(--text-muted)}.hamburger-menu{cursor:pointer;z-index:1001}.hamburger-icon{width:24px;height:18px;position:relative;transform:rotate(0);transition:.5s ease-in-out}.hamburger-icon span{display:block;position:absolute;height:3px;width:100%;background:var(--primary-color);border-radius:3px;opacity:1;left:0;transform:rotate(0);transition:.25s ease-in-out}.hamburger-icon span:nth-child(1){top:0}.hamburger-icon span:nth-child(2){top:8px}.hamburger-icon span:nth-child(3){top:16px}.hamburger-icon.open span:nth-child(1){top:8px;transform:rotate(135deg)}.hamburger-icon.open span:nth-child(2){opacity:0;left:-60px}.hamburger-icon.open span:nth-child(3){top:8px;transform:rotate(-135deg)}.sidebar{position:fixed;top:60px;left:-250px;width:250px;height:calc(100vh - 60px);background-color:#fff;box-shadow:var(--shadow);transition:left .3s ease;overflow-y:auto;z-index:900;padding-bottom:70px}.sidebar.open{left:0}.sidebar-overlay{position:fixed;top:60px;left:0;width:100vw;height:calc(100vh - 60px);background-color:#00000080;z-index:800}.main-nav ul{list-style:none;padding:0}.main-nav li{border-bottom:1px solid var(--border-color)}.main-nav li button{width:100%;text-align:left;padding:1rem 1.5rem;background:none;border:none;color:#212529;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .3s;border-radius:0;display:flex;align-items:center;gap:.5rem}.main-nav li.active button{font-weight:600;color:var(--primary-color);border-left:4px solid var(--primary-color);padding-left:calc(1rem - 4px)}.logout-container{position:absolute;bottom:0;left:0;width:100%;padding:1rem;border-top:1px solid var(--border-color);background-color:#fff}.logout-container .logout-button{width:100%;text-align:left;padding:1rem 1.5rem;background:none;border:none;color:#dc3545;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .3s;border-radius:0;display:flex;align-items:center;gap:.5rem}@media (min-width: 768px){.main-content{margin-left:250px}.sidebar{left:0}.hamburger-menu,.sidebar-overlay{display:none}}.dashboard-content,.future-requests-content,.month-stats-content{max-width:40rem;margin:0 auto}@media (min-width: 576px){.main-content{padding:1.5rem}}@media (min-width: 992px){.main-content{padding:2rem}}.today-pass-container{background-color:#fff;border-radius:8px;padding:1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow)}.today-pass-container h2{font-size:1.25rem;margin-bottom:1rem;color:var(--text-color);border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.future-passes-container{background-color:#fff;border-radius:8px;padding:1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow)}.future-passes-container h2{font-size:1.25rem;margin-bottom:1rem;color:var(--text-color);border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.action-button{display:inline-block;padding:.5rem 1rem;border-radius:4px;font-weight:500;text-align:center;border:none;cursor:pointer;transition:background-color .2s;min-width:90px;height:36px;line-height:1}.action-button.small{font-size:.85rem;padding:.4rem .8rem;min-width:80px;height:32px}.action-button:disabled{opacity:.7;cursor:not-allowed}.action-button.loading{position:relative}.action-button.loading:after{content:"";position:absolute;right:8px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;animation:button-spinner .8s linear infinite}@keyframes button-spinner{to{transform:rotate(360deg)}}.request-button{background-color:var(--primary-color);color:#fff}.pending-button{background-color:var(--warning-color);color:var(--text-color)}.cancel-button{background-color:var(--danger-color);color:#fff}.add-usage-button{background-color:var(--success-color);color:#fff}button:disabled{opacity:.65;cursor:not-allowed}button.small{padding:.25rem .5rem;font-size:.875rem}.relative-container{position:relative}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:10;border-radius:8px}.spinner{width:40px;height:40px;border-radius:50%;border:3px solid rgba(0,123,255,.2);border-top-color:var(--primary-color);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.future-dates-container{margin:20px 0}.dashboard-loading{z-index:500;background-color:#ffffffe6;position:fixed;top:60px;left:0;right:0;bottom:0;border-radius:0}@media (min-width: 768px){.dashboard-loading{left:250px}}.dashboard-loading .spinner{width:50px;height:50px;border-width:4px}.no-future-requests{margin:2rem 0;text-align:center;color:var(--text-color)}.view-future-requests-button{display:inline-block;margin-top:1rem;padding:.75rem 1.5rem;background-color:#007bff;color:#fff;border:none;border-radius:5px;font-weight:500;cursor:pointer;transition:background-color .3s}.usage-blocks{display:flex;flex-direction:column}.usage-block{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid #e2e8f0}.usage-block:last-child{border-bottom:none}.usage-details{display:flex;flex-direction:column}.usage-date{font-weight:600;color:#2c3e50;font-size:.9375rem;margin-bottom:.25rem}.usage-info{display:flex;align-items:center;color:#4a5568;font-size:.875rem}.separator{margin:0 .5rem;color:#a0aec0}.usage-actions{display:flex}.delete-button{background-color:transparent;color:#dc3545;border:1px solid #dc3545;padding:.375rem .75rem;font-size:.875rem;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.delete-button:disabled{opacity:.5;cursor:not-allowed}.additional-usages-actions{display:flex;justify-content:flex-end;margin-bottom:1rem}.add-usage-button{background-color:#28a745;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:5px;font-weight:500;cursor:pointer;transition:background-color .3s}.no-data-message{font-style:italic;color:#718096;text-align:center;padding:1rem 0}@media (min-width: 640px){.month-stats-wrapper{padding:1.5rem}}.stats-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #00000014}@media (max-width: 480px){.section-header{flex-direction:column;align-items:flex-start;gap:0}.section-header h3{margin-bottom:0;padding-bottom:0}.toggle-container{align-self:flex-end;margin-top:0}.section-header h3{font-size:1.1rem;max-width:50%}}.pwa-install-prompt{position:fixed;bottom:0;left:0;right:0;background-color:#3498db;color:#fff;padding:12px;z-index:1000;box-shadow:0 -2px 10px #0000001a}.prompt-content{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.prompt-message{display:flex;align-items:center;gap:12px;flex:1}.prompt-message .icon{font-size:1.5rem}.prompt-message p{margin:0;font-size:.9rem}.install-button{background-color:#fff;color:#3498db;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-weight:700;margin:0 12px;width:10rem}.dismiss-button{background:none;border:none;color:#fff;font-size:1.2rem;cursor:pointer;padding:4px 8px;width:2rem}@media (max-width: 600px){.prompt-content{flex-direction:column;align-items:flex-start;gap:12px}.install-button{margin:8px 0;width:100%}.dismiss-button{position:absolute;top:8px;right:8px}}.update-prompt{position:fixed;top:20px;right:20px;background-color:#2ecc71;color:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 2px 10px #0000001a;z-index:1000;display:flex;align-items:center;gap:12px}.update-prompt p{margin:0;font-size:.9rem}.update-prompt button{background-color:#007bff;color:#fff;border:none;padding:.5rem 1rem;border-radius:5px;font-weight:500}.pass-badge{position:absolute;top:-2px;left:-3px;background-color:var(--success-color);color:#fff;padding:4px 8px;font-size:1.2rem;font-weight:700;border-top-left-radius:6px;border-bottom-right-radius:8px}.month-stats-wrapper{position:relative;width:100%;padding:1rem;background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;max-width:45rem;margin:0 auto}.month-stats-wrapper .ms-month-selector{display:flex;align-items:center;justify-content:center;margin-bottom:1.5rem;gap:1rem}.month-stats-wrapper .ms-month-nav-button{background:var(--light-color, #f8f9fa);border:1px solid var(--border-color, #dee2e6);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;color:#333;transition:background-color .2s}.month-stats-wrapper .ms-month-nav-button:hover{background-color:#e0e0e0}.ms-pending-requests-badge{position:absolute;top:1rem;right:1rem}.ms-pending-requests-bottom{position:relative;top:auto;right:auto;display:flex;justify-content:flex-end;margin-bottom:1rem}.ms-pending-button{background:var(--warning-color, #ffc107);border:1px solid rgba(0,0,0,.1);border-radius:16px;padding:.3rem .8rem;cursor:pointer;font-size:.9rem;color:var(--text-color, #212529);transition:background-color .2s}.ms-pending-button:hover{background-color:#e0a800}.month-stats-wrapper .ms-month-grid-container{overflow-x:auto;margin-bottom:1.5rem}.month-stats-wrapper .ms-month-grid{display:table;width:100%;border-collapse:collapse;font-size:.9rem;table-layout:fixed}.month-stats-wrapper .ms-month-grid-header{display:flex;background-color:#f5f5f5;font-weight:700;color:#333}.month-stats-wrapper .ms-month-grid-row{display:table-row;border-bottom:1px solid var(--border-color, #dee2e6)}.month-stats-wrapper .ms-month-grid-date-column,.month-stats-wrapper .ms-month-grid-pass-column{padding:.5rem;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;width:1rem}.month-stats-wrapper .ms-month-grid-date-column{position:sticky;left:0;background-color:#f9f9fa;z-index:1;font-weight:500;min-width:4rem;width:10rem;text-align:left;color:var(--text-color, #212529)}.month-stats-wrapper .ms-month-grid-passes-columns{display:flex;flex-grow:1;text-align:center;cursor:pointer;font-size:.85rem;height:2.5rem;transition:background-color .2s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-stats-wrapper .ms-month-cell:hover{filter:brightness(.95)}.month-stats-wrapper .ms-unallocated-future{background-color:#f8f9fa;color:var(--text-color, #212529)}.month-stats-wrapper .ms-allocated-future{background-color:#d1f7c4;color:#1e3a29;font-weight:500}.month-stats-wrapper .ms-unallocated-past{background-color:#a0a0a0;color:#fff}.month-stats-wrapper .ms-allocated-past{background-color:var(--success-color, #28a745);color:#fff;font-weight:500}.month-stats-wrapper .ms-additional-usage{background-color:#b3d4ff;color:#1a365d;font-weight:500}.month-stats-wrapper .ms-good-usage{color:#48bb78;font-weight:700}.month-stats-wrapper .ms-low-usage{color:#f56565;font-weight:700}.ms-modal-container{background-color:#fff;padding:1.5rem;border-radius:8px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 12px #00000026;color:#212529}.ms-modal-content{margin:1rem 0}.ms-modal-container h3{font-size:1.25rem;font-weight:600;color:#2c3e50;margin-bottom:1rem}.ms-allocation-info,.ms-additional-usage-info{margin-bottom:1.5rem;padding:1rem;background-color:#f9f9fa;border-radius:4px}.ms-allocation-info h4,.ms-additional-usage-info h4,.ms-manual-assign-form h5{color:#2c3e50;margin-bottom:.5rem}.ms-allocation-info p,.ms-additional-usage-info p{color:#212529}.ms-manual-assign-form{margin-top:1rem}.ms-employee-select{width:100%;padding:.5rem;margin:.5rem 0;border:1px solid var(--border-color, #dee2e6);border-radius:4px;color:#212529;background-color:#fff}.ms-modal-container .ms-submit-button,.ms-modal-container .ms-cancel-button,.ms-modal-container .ms-delete-button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s;width:auto}.ms-modal-container .ms-submit-button{background-color:var(--primary-color, #007bff);color:#fff}.ms-modal-container .ms-submit-button:hover{background-color:var(--primary-hover, #0069d9)}.ms-modal-container .ms-cancel-button{background-color:var(--secondary-color, #6c757d);color:#fff}.ms-modal-container .ms-cancel-button:hover{background-color:var(--secondary-hover, #5a6268)}.ms-modal-container .ms-delete-button{background-color:var(--danger-color, #dc3545);color:#fff}.ms-modal-container .ms-delete-button:hover{background-color:var(--danger-hover, #c82333)}.ms-error-message,.ms-success-message{padding:.75rem;border-radius:4px;margin-bottom:1rem}.ms-error-message{background-color:#fff5f5;color:#c53030}.ms-success-message{background-color:#f0fff4;color:#2f855a}.ms-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:100}.ms-spinner{border:4px solid #f3f3f3;border-top:4px solid var(--primary-color, #007bff);border-radius:50%;width:30px;height:30px;animation:ms-spin 1s linear infinite}@keyframes ms-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.month-stats-wrapper .ms-month-grid{font-size:.8rem}.month-stats-wrapper .ms-month-grid-header{display:none}.month-stats-wrapper .ms-month-grid-row{display:flex;flex-direction:column;overflow:hidden}.month-stats-wrapper .ms-month-grid-date-column{width:100%;padding:.5rem;font-weight:500;color:#333;text-align:left;width:10rem;flex-grow:0;flex-shrink:0}.month-stats-wrapper .ms-month-grid-row>:not(.ms-month-grid-date-column){display:flex;flex-direction:row;width:100%;overflow-x:auto}.month-stats-wrapper .ms-month-cell{flex:1;min-width:50px;padding:.75rem .5rem;text-align:center;border-right:1px solid var(--border-color, #dee2e6);font-size:.85rem;height:3rem}.month-stats-wrapper .ms-month-cell:last-child{border-right:none}}.ms-month-selector{display:flex;align-items:center;justify-content:center;margin-bottom:1.5rem;gap:1rem}.ms-month-selector h2{margin:0;font-size:1.5rem;color:var(--text-color, #212529)}.ms-month-nav-button{background:var(--light-color, #f8f9fa);border:1px solid var(--border-color, #dee2e6);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;color:#333;transition:background-color .2s}.ms-month-nav-button:hover{background-color:#e0e0e0}.ms-grid{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:1.5rem;overflow-x:auto}.ms-grid .row{display:flex}.row.header{background-color:#f5f5f5;font-weight:700;color:#333}.row.today-row{position:relative;border-top:3px solid var(--danger-color, #dc3545);border-bottom:3px solid var(--danger-color, #dc3545)}.row.next-workday-row{position:relative;border-top:3px solid var(--danger-color, #dc3545)}.today-date{font-weight:700!important}.today-highlight{font-weight:700}.cell{padding:.5rem;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.date-cell{position:sticky;left:0;background-color:#f9f9fa;z-index:1;font-weight:500;min-width:8rem;width:120px;text-align:left;color:var(--text-color, #212529);flex-grow:0;flex-shrink:0}.cell-group{display:flex;flex-grow:1;flex-shrink:1;text-align:center}.cell-group .cell{width:1rem;flex-grow:1;flex-shrink:1}.cell:hover{filter:brightness(.95)}.cell{border-left:1px solid #eeeeee;cursor:pointer}.allocated-future{background-color:#d1f7c4;color:#1e3a29;font-weight:500}.allocated-past{background-color:var(--success-color, #28a745);color:#fff;font-weight:500}.additional-usage{background-color:#b3d4ff;color:#1a365d;font-weight:500}.good-usage{color:#28a745;font-weight:700}.low-usage{color:#dc3545;font-weight:700}.ms-grid .row.footer-row{border-top:1px solid #ced4da;background-color:#f8f9fa;font-weight:700}@media (max-width: 768px){.ms-grid{font-size:.8rem}.row.header .date-cell{display:none}.row{display:flex;flex-direction:column;overflow:hidden}.cell.date-cell{width:100%;padding:.25rem;background-color:#f5f5f5;min-width:0}.cell-group{display:flex;flex-direction:row;width:100%;overflow-x:auto}.cell{flex:1;padding:.5rem;text-align:center;font-size:.85rem;height:2.5rem}.cell:last-child{border-right:none}}.ms-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.ms-loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:1100}.ms-modal-content{background-color:#fff;padding:1.5rem;border-radius:8px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 12px #00000026;color:#212529}.ms-modal-header{margin-bottom:1rem}.ms-modal-header h3{font-size:1.25rem;font-weight:600;color:#2c3e50;margin:0}.ms-modal-subtitle{font-size:1rem;font-weight:400;color:#4a5568;margin:.5rem 0 0}.ms-modal-body{margin:1rem 0}.ms-modal-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.5rem}.ms-pass-info{margin-bottom:1.5rem;padding:1rem;background-color:#f9f9fa;border-radius:4px}.ms-pass-info p{margin:.5rem 0;color:#212529}.ms-allocation-info,.ms-additional-usage-info,.ms-section{margin-bottom:1.5rem;padding:1rem;background-color:#f9f9fa;border-radius:4px}.ms-section h4{font-size:1rem;color:#2c3e50;margin:0 0 .75rem}.ms-allocation-info p,.ms-additional-usage-info p{color:#212529;margin:.5rem 0}.ms-additional-usage-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.ms-employee-select{padding:.5rem;border:1px solid #e2e8f0;border-radius:.375rem;background-color:#fff;width:100%;font-size:.875rem;color:#4a5568;margin-bottom:.5rem}.ms-pass-select-group{display:flex;gap:.5rem;align-items:flex-start}.ms-pass-select{flex:1;padding:.5rem;border:1px solid #e2e8f0;border-radius:.375rem;background-color:#fff;font-size:.875rem;color:#4a5568;min-width:0}.ms-pass-select:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 1px #4299e1}.ms-submit-button,.ms-cancel-button,.ms-delete-button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .2s;width:auto}.ms-submit-button{background-color:var(--primary-color, #007bff);color:#fff}.ms-submit-button:hover{background-color:var(--primary-hover, #0069d9)}.ms-cancel-button{background-color:var(--secondary-color, #6c757d);color:#fff}.ms-cancel-button:hover{background-color:var(--secondary-hover, #5a6268)}.ms-delete-button{background-color:var(--danger-color, #dc3545);color:#fff;margin-top:.5rem}.ms-delete-button:hover{background-color:var(--danger-hover, #c82333)}.ms-additional-usages-list{display:flex;flex-direction:column;gap:.5rem}.ms-additional-usage-item{display:flex;align-items:center;justify-content:space-between;padding:0}.ms-usage-name{color:#2c3e50;font-size:.9375rem;flex-grow:1;height:1.5rem}.ms-icon-button{padding:.25rem;border:none;background:none;cursor:pointer;color:var(--danger-color, #dc3545);opacity:.8;display:flex;align-items:center;justify-content:center;border-radius:4px;flex-grow:0;width:3rem;height:1.5rem}.ms-icon-button:hover{opacity:1;background-color:#dc35451a}.ms-trash-icon{display:block}.ms-allocate-form{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.ms-employee-select{padding:.5rem;border:1px solid #e2e8f0;border-radius:.375rem;background-color:#fff;width:100%;font-size:.875rem;color:#4a5568}.ms-employee-select:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 1px #4299e1}.ms-pending-requests-list{max-height:300px;overflow-y:auto}.ms-pending-request-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid var(--border-color, #dee2e6)}.ms-pending-request-info{display:flex;flex-direction:column;gap:.25rem}#root{margin:0 auto;padding:0;width:100%;min-height:100vh}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background-color:#f5f7fa}.app-container{display:flex;justify-content:center;align-items:center;min-height:100vh;width:100%}.loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.2rem;color:#555}.login-container{display:flex;justify-content:center;align-items:center;width:100%}.login-form-container button{margin-top:1rem}.login-form-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem;width:90%;max-width:400px}.login-form-container h2{margin-top:0;margin-bottom:1.5rem;color:#333;text-align:center}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#555}.form-group input{width:100%;padding:.75rem;font-size:1rem;border:1px solid #ddd;border-radius:4px;box-sizing:border-box}.form-group input:focus{border-color:#4a90e2;outline:none}button{width:100%;padding:.75rem;background-color:#4a90e2;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s}button:disabled{background-color:#ccc;cursor:not-allowed}.error-message{color:#e74c3c;margin-bottom:1rem;font-size:.9rem}.dashboard-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem;width:90%;max-width:600px;margin:0 auto}.dashboard-container h1{color:#333;margin-top:0;text-align:center}.user-info{margin-bottom:2rem;padding:1rem;background-color:#f8f9fa;border-radius:4px}.user-info h2{margin-top:0;font-size:1.2rem;color:#555}.logout-button{background-color:#e74c3c}
