.admin-page{padding:40px 20px;color:#333;min-height:100vh;background-color:#fafafa;font-family:inherit}.admin-header{display:flex;flex-direction:column;align-items:center;gap:32px;margin-bottom:48px}.admin-header h1{font-size:36px;font-weight:800;color:#1a1c2e;margin:0;letter-spacing:-.5px}.user-selector-container{display:flex;gap:16px;width:100%;max-width:900px;position:relative}.user-selector-container.dashboard-header-controls{justify-content:center}.glass-box{background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:16px;box-shadow:0 4px 6px #00000005;transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-box:hover{border-color:#6366f14d;box-shadow:0 8px 15px #0000000d}.wide-user-select-container{flex:1;position:relative}.wide-user-select{width:100%;padding:16px 24px;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:16px;color:#333;font-size:16px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23666'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 20px center;background-size:16px}.wide-user-select:focus{outline:none;border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e21a}.current-month-btn{padding:0 32px;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:16px;color:#4a90e2;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.current-month-btn:hover{background:#4a90e2;color:#fff;border-color:#4a90e2;transform:translateY(-2px);box-shadow:0 4px 12px #4a90e233}.month-scroller-container{display:flex;align-items:center;gap:16px;padding:20px;background:#fff;border-radius:20px;border:1px solid rgba(0,0,0,.05);box-shadow:0 2px 10px #00000005;max-width:1100px;margin:32px auto}.months-wrapper{display:flex;gap:8px;flex:1;justify-content:center;overflow:visible}.month-box{min-width:80px;height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f8f9fa;border:1px solid rgba(0,0,0,.05);border-radius:14px;cursor:pointer;transition:all .3s cubic-bezier(.175,.885,.32,1.275)}.month-box:hover{background:#fff;transform:translateY(-2px);border-color:#4a90e24d;box-shadow:0 4px 8px #0000000d}.month-box.selected{background:#4a90e2;color:#fff;border:none;box-shadow:0 8px 20px #4a90e24d;transform:scale(1.1);z-index:2}.month-label{font-size:16px;font-weight:700}.year-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;opacity:.6;margin-top:2px}.month-box.selected .year-label{opacity:.9}.scroll-arrow{width:40px;height:40px;border-radius:50%;background:#fff;border:1px solid rgba(0,0,0,.1);color:#666;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .2s ease}.scroll-arrow:hover{background:#f5f5f5;color:#333;transform:scale(1.1)}.timesheet-stack{display:flex;flex-direction:column;gap:40px;max-width:1200px;margin:40px auto}.timesheet-preview-wrapper{padding:32px;background:#fff;border-radius:20px;box-shadow:0 4px 20px #0000000d;border:1px solid rgba(0,0,0,.05)}.preview-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.generation-date{font-size:14px;color:#666;font-weight:500}.preview-meta{display:flex;align-items:center;gap:16px}.total-hours-badge{padding:6px 14px;background:#eef4ff;color:#4a90e2;border-radius:99px;font-size:13px;font-weight:700;border:1px solid rgba(74,144,226,.2)}.filter-toggle{display:flex;align-items:center;gap:10px;padding:0 20px;font-size:14px;font-weight:600;color:#666;cursor:pointer}.filter-toggle input{width:18px;height:18px;cursor:pointer}.download-btn-premium{padding:10px 24px;background:#4caf50;border:none;border-radius:10px;color:#fff;font-weight:600;font-size:14px;cursor:pointer;transition:all .2s ease}.download-btn-premium:hover{background:#43a047;transform:translateY(-1px);box-shadow:0 4px 12px #4caf5033}.download-btn-premium:disabled{opacity:.6;cursor:not-allowed;transform:none}.approve-btn-premium{padding:10px 24px;background:#4caf50;border:none;border-radius:10px;color:#fff;font-weight:600;font-size:14px;cursor:pointer;transition:all .2s ease}.approve-btn-premium:hover:not(:disabled){background:#43a047;transform:translateY(-1px);box-shadow:0 4px 12px #4caf5033}.approve-btn-premium:disabled{opacity:.6;cursor:not-allowed}.disapprove-btn-premium{padding:10px 24px;background:#d32f2f;border:none;border-radius:10px;color:#fff;font-weight:600;font-size:14px;cursor:pointer;transition:all .2s ease}.disapprove-btn-premium:hover:not(:disabled){background:#b71c1c;transform:translateY(-1px);box-shadow:0 4px 12px #d32f2f33}.disapprove-btn-premium:disabled{opacity:.6;cursor:not-allowed}.approval-badge{padding:6px 14px;border-radius:99px;font-size:13px;font-weight:700;border:1px solid transparent}.approval-badge-approved{background:#e8f5e9;color:#2e7d32;border-color:#2e7d3233}.approval-badge-pending{background:#f5f5f5;color:#616161;border-color:#0000001a}.approval-badge-disapproved{background:#ffebee;color:#c62828;border-color:#c6282833;cursor:pointer;font:inherit}.approval-badge-disapproved:hover{background:#ffcdd2}.approval-badge-uploaded{background:#e8f5e9;color:#2e7d32;border:1px solid rgba(46,125,50,.3);cursor:pointer;font:inherit}.approval-badge-uploaded:hover{background:#c8e6c9}.upload-excel-btn{padding:0 24px;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:16px;color:#2e7d32;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.upload-excel-btn:hover{background:#e8f5e9;color:#1b5e20;border-color:#2e7d324d}.upload-overlay-error{padding:12px;margin-bottom:16px;background:#ffebee;color:#c62828;border-radius:8px;font-size:14px}.approval-overlay.upload-overlay{max-width:520px}.approval-overlay-field input[type=file]{padding:8px 0;font-size:14px}.approval-overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:2000}.approval-overlay{padding:24px 32px;max-width:480px;width:90%}.approval-overlay h3{margin:0 0 20px;font-size:18px;color:#1a1c2e}.approval-overlay-message{margin-bottom:20px;color:#333}.approval-overlay-message p{margin:0 0 8px}.approval-overlay-comment{padding:12px;background:#f5f5f5;border-radius:8px;margin:8px 0;white-space:pre-wrap}.approval-overlay-field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;font-size:14px;font-weight:600;color:#333}.approval-overlay-field textarea{padding:12px;border-radius:10px;border:1px solid rgba(0,0,0,.1);font-size:14px;resize:vertical}.approval-overlay-checkbox{display:flex;align-items:center;gap:10px;margin-bottom:20px;font-size:14px;cursor:pointer}.approval-overlay-checkbox input{width:18px;height:18px}.approval-overlay-actions{display:flex;gap:12px;flex-wrap:wrap}.approval-overlay-cancel{padding:10px 24px;background:#f5f5f5;border:1px solid rgba(0,0,0,.1);border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;color:#666}.approval-overlay-cancel:hover{background:#eee}.admin-empty-state{text-align:center;padding:60px 0;color:#999}.loading-spinner{text-align:center;padding:40px;font-style:italic;color:#666}.admin-access-denied{display:flex;align-items:center;justify-content:center;height:50vh;font-size:24px;color:#c33;font-weight:600}.user-dropdown-custom{position:absolute;top:100%;left:0;right:0;margin-top:8px;background:#fff;border-radius:16px;box-shadow:0 10px 40px #0000001a;border:1px solid rgba(0,0,0,.05);z-index:1000;padding:12px;display:flex;flex-direction:column;gap:12px}.user-dropdown-custom input{width:100%;padding:12px 16px;border-radius:12px;border:1px solid rgba(0,0,0,.1);font-size:14px;outline:none;transition:border-color .2s;color:#333;background:#fff}.user-dropdown-custom input:focus{border-color:#4a90e2}.user-dropdown-custom ul{list-style:none;margin:0;padding:0;max-height:300px;overflow-y:auto}.user-dropdown-custom li{padding:12px 16px;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:all .2s;text-align:left}.user-dropdown-custom li:hover{background:#f5f8ff}.user-dropdown-custom li.selected{background:#eef4ff;border-left:4px solid #4a90e2}.user-dropdown-custom li strong{font-size:14px;color:#333}.user-dropdown-custom li span{font-size:12px;color:#666}.user-dropdown-custom li.no-results{text-align:center;padding:24px;color:#999;font-style:italic;cursor:default}.user-dropdown-custom li.no-results:hover{background:transparent}.app{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.app-header{margin-bottom:30px}.app-header h1{margin:0;color:#333}.app-main{display:flex;flex-direction:column;gap:30px}.error-banner{background-color:#fee;border:1px solid #fcc;color:#c33;padding:15px;border-radius:4px;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:none;border:none;font-size:24px;cursor:pointer;color:#c33;padding:0;width:30px;height:30px}.form-section{display:flex;gap:20px;flex-wrap:wrap}.form-group{display:flex;flex-direction:column;gap:5px}.form-group label{font-weight:500;font-size:14px}.form-group select,.form-group input[type=number]{padding:8px 12px;border:1px solid #ccc;border-radius:4px;font-size:14px}.user-select-group{min-width:300px}.user-filter-bar{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px;padding:8px;background-color:#f9f9f9;border-radius:4px;border:1px solid #ddd}.alphabet-button{padding:6px 10px;font-size:12px;font-weight:600;background-color:#fff;color:#333;border:1px solid #ccc;border-radius:4px;cursor:pointer;transition:all .2s;min-width:28px;text-align:center}.alphabet-button:hover:not(:disabled){background-color:#e9ecef;border-color:#4a90e2}.alphabet-button:disabled{opacity:.5;cursor:not-allowed}.alphabet-button.active{background-color:#4a90e2;color:#fff;border-color:#4a90e2}.backspace-button,.clear-button{padding:6px 12px;font-size:11px}.filter-hint{font-size:12px;color:#666;margin:5px 0 10px;font-style:italic}.user-select-container{position:relative;display:flex;align-items:center;border:1px solid #ccc;border-radius:4px;background-color:#fff}.user-display{flex:1;padding:8px 12px;font-size:14px;color:#333;min-height:20px}.dropdown-toggle{padding:8px 12px;background:none;border:none;border-left:1px solid #ccc;cursor:pointer;font-size:12px;color:#666;transition:background-color .2s}.dropdown-toggle:hover{background-color:#f5f5f5}.user-dropdown{position:absolute;top:100%;left:0;right:0;margin:4px 0 0;padding:0;list-style:none;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 4px 6px #0000001a;max-height:200px;overflow-y:auto;z-index:100}.user-dropdown li{padding:10px 12px;cursor:pointer;border-bottom:1px solid #eee;transition:background-color .2s}.user-dropdown li:last-child{border-bottom:none}.user-dropdown li:hover{background-color:#f5f5f5}.user-dropdown li.highlighted{background-color:#4a90e2;color:#fff;font-weight:600}.user-dropdown li.selected{background-color:#e7f3ff;font-weight:600}.user-dropdown li.no-results{color:#999;font-style:italic;cursor:default}.user-dropdown li.no-results:hover{background-color:#fff}.percentage-form{display:flex;flex-direction:column;gap:15px}.percentage-form-header{display:flex;justify-content:space-between;align-items:center}.percentage-form-header h3{margin:0;color:#333}.customize-button{padding:8px 16px;font-size:14px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.customize-button:hover{background-color:#5a6268}.percentage-summary{font-size:16px;font-weight:500;display:flex;gap:10px;align-items:center}.percentage-summary .error{color:#c33}.error-message{color:#c33;font-size:14px}.projects-table-container{max-height:500px;overflow-y:auto;border:1px solid #ddd;border-radius:4px}.projects-table{width:100%;border-collapse:collapse}.projects-table thead{background-color:#f5f5f5;position:sticky;top:0;z-index:10}.projects-table th{padding:12px;text-align:left;font-weight:600;border-bottom:2px solid #ddd}.projects-table td{padding:10px 12px;border-bottom:1px solid #eee}.projects-table tbody tr:hover{background-color:#f9f9f9}.percentage-input{width:100px;padding:6px 10px;border:1px solid #ccc;border-radius:4px;font-size:14px}.percentage-input:focus{outline:none;border-color:#4a90e2}.description-fields{display:flex;flex-direction:column;gap:4px;width:300px;max-height:200px;overflow-y:auto}.description-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:4px;font-size:14px;box-sizing:border-box}.description-input::placeholder{color:var(--placeholder-color, #999);opacity:1}.description-input::-webkit-input-placeholder{color:var(--placeholder-color, #999);opacity:1}.description-input::-moz-placeholder{color:var(--placeholder-color, #999);opacity:1}.description-input:-ms-input-placeholder{color:var(--placeholder-color, #999);opacity:1}.description-input.required{border-color:red;border-width:2px}.description-input:focus{outline:none;border-color:#4a90e2}.description-input.required:focus{border-color:red}.calendar-container{display:flex;flex-direction:column;gap:15px}.calendar-container h3{margin:0;color:#333}.calendar-grid{display:flex;flex-direction:column;border:1px solid #ddd;border-radius:4px;overflow:hidden}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);background-color:#f5f5f5}.calendar-day-header{padding:10px;text-align:center;font-weight:600;border-right:1px solid #ddd}.calendar-day-header:last-child{border-right:none}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-day{padding:10px;text-align:center;border-right:1px solid #ddd;border-bottom:1px solid #ddd;cursor:pointer;min-height:40px;display:flex;align-items:center;justify-content:center}.calendar-day.empty{cursor:default;background-color:#fafafa}.calendar-day.weekend{background-color:#f5f5f5;cursor:not-allowed;color:#999}.calendar-day.selected{background-color:#ffe0e0;color:#c33;font-weight:600}.calendar-day:not(.weekend):not(.empty):hover{background-color:#f0f0f0}.calendar-day.selected:not(.weekend):hover{background-color:#fcc}.calendar-note{font-size:14px;color:#666;margin:0}.form-actions{display:flex;flex-direction:column;align-items:center;gap:15px;padding:20px 0}.validation-error-banner{width:100%;max-width:800px;background-color:#fee;border:1px solid #fcc;border-radius:4px;padding:0;margin-bottom:10px}.validation-error-item{border-bottom:1px solid #fcc}.validation-error-item:last-child{border-bottom:none}.validation-error-header{display:flex;justify-content:space-between;align-items:center;padding:15px;cursor:pointer;transition:background-color .2s}.validation-error-item.basic-error .validation-error-header{cursor:default}.validation-error-header:hover{background-color:#fdd}.validation-error-close{background:none;border:none;font-size:20px;cursor:pointer;color:#c33;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .2s;border-radius:3px}.validation-error-close:hover{background-color:#cc33331a}.validation-error-message{color:#c33;flex:1;font-size:14px;line-height:1.5}.validation-error-toggle{color:#c33;font-size:12px;margin-left:10px;flex-shrink:0}.validation-error-details{padding:0 15px 15px;background-color:#fff;border-top:1px solid #fcc;color:#666;font-size:13px}.validation-error-details strong{display:block;margin-bottom:8px;color:#c33}.uncovered-days-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.uncovered-day-badge{display:inline-block;padding:4px 10px;background-color:#ffe0e0;border:1px solid #ff6b6b;border-radius:4px;color:#c33;font-size:12px;font-weight:500}.generate-button{padding:12px 30px;font-size:16px;font-weight:600;background-color:#4a90e2;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.generate-button:hover:not(:disabled){background-color:#357abd}.generate-button:disabled{background-color:#ccc;cursor:not-allowed}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 6px #0000001a}.modal-header{padding:20px;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;color:#333}.modal-close{background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.modal-close:hover{background-color:#f0f0f0}.modal-body{padding:20px;overflow-y:auto;flex:1}.modal-note{font-size:14px;color:#666;margin:0 0 20px}.modal-footer{padding:20px;border-top:1px solid #ddd;display:flex;justify-content:flex-end;gap:10px}.button-primary{padding:10px 20px;font-size:14px;background-color:#4a90e2;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.button-primary:hover:not(:disabled){background-color:#357abd}.button-primary:disabled{background-color:#ccc;cursor:not-allowed}.button-secondary{padding:10px 20px;font-size:14px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.button-secondary:hover:not(:disabled){background-color:#5a6268}.button-secondary:disabled{background-color:#ccc;cursor:not-allowed}.preferences-table-container{max-height:500px;overflow-y:auto;border:1px solid #ddd;border-radius:4px}.preferences-actions{display:flex;gap:10px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #e0e0e0}.button-select-all,.button-deselect-all{padding:8px 16px;font-size:14px;border:1px solid #ccc;border-radius:4px;background-color:#fff;color:#333;cursor:pointer;transition:all .2s}.button-select-all:hover{background-color:#e8f5e9;border-color:#4caf50;color:#2e7d32}.button-deselect-all:hover{background-color:#ffebee;border-color:#f44336;color:#c62828}.button-select-all:disabled,.button-deselect-all:disabled{opacity:.5;cursor:not-allowed}.preferences-table{width:100%;border-collapse:collapse}.preferences-table thead{background-color:#f5f5f5;position:sticky;top:0;z-index:10}.preferences-table th{padding:12px;text-align:left;font-weight:600;border-bottom:2px solid #ddd}.preferences-table td{padding:10px 12px;border-bottom:1px solid #eee}.preferences-table tbody tr:hover{background-color:#f9f9f9}.color-input{width:60px;height:32px;border:1px solid #ccc;border-radius:4px;cursor:pointer;margin-right:10px}.color-clear{padding:6px 12px;font-size:12px;background-color:#f5f5f5;color:#333;border:1px solid #ccc;border-radius:4px;cursor:pointer}.color-clear:hover{background-color:#e9ecef}.description-field-wrapper{position:relative;margin-bottom:4px}.description-field-wrapper:last-child{margin-bottom:0}.description-input-container{display:flex;gap:4px;align-items:center;position:relative;z-index:1}.description-calendar-button{padding:6px 10px;border:1px solid #ccc;border-radius:4px;background-color:#fff;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;transition:all .2s}.description-calendar-button:hover{background-color:#f0f0f0;border-color:#4a90e2}.description-calendar-button.has-selection{background-color:#e3f2fd;border-color:#4a90e2;color:#1976d2}.description-calendar-button.has-selection:hover{background-color:#bbdefb}.description-calendar-popup{background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 12px #00000026;padding:12px;min-width:280px;max-width:320px}.description-calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600;font-size:14px;color:#333}.description-calendar-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;line-height:1}.description-calendar-close:hover{background-color:#f0f0f0;color:#333}.description-calendar-grid{display:flex;flex-direction:column;gap:2px}.description-calendar-day-header{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.description-calendar-header-cell{text-align:center;font-size:11px;font-weight:600;color:#666;padding:4px 0}.description-calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.description-calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer;font-size:12px;background-color:#fff;transition:all .15s;min-height:32px}.description-calendar-day.empty{border:none;cursor:default;background:transparent}.description-calendar-day.weekend{background-color:#f5f5f5;color:#999;cursor:not-allowed}.description-calendar-day.selected-this{background-color:#4a90e2!important;color:#fff!important;border-color:#357abd!important;font-weight:700;font-size:13px;box-shadow:0 2px 4px #4a90e24d}.description-calendar-day.selected-other{background-color:#fff9c4;border-color:#fdd835;color:#333}.description-calendar-day.uncovered{border:2px solid #ff6b6b;background-color:#ffe0e0;animation:pulse-warning 2s ease-in-out infinite}.description-calendar-day.uncovered:hover{background-color:#fcc;border-color:#ff5252}.description-calendar-day.drag-preview{background-color:#c5e1ff!important;border-color:#4a90e2!important;border-width:2px;opacity:.8}.description-calendar-day.drag-preview.selected-other{background-color:#fff4c4!important;border-color:#fdd835!important}.description-calendar-day.disabled{opacity:.4;cursor:not-allowed;pointer-events:none;background-color:#f5f5f5;border-color:#ccc}.description-calendar-day:not(.weekend):not(.empty):not(.selected-this):not(.selected-other):not(.uncovered):not(.disabled):not(.holiday):hover{background-color:#e3f2fd;border-color:#4a90e2}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.7}}.description-calendar-legend{display:flex;gap:12px;margin-top:10px;padding-top:10px;border-top:1px solid #e0e0e0;font-size:11px}.legend-item{display:flex;align-items:center;gap:6px}.legend-color{width:16px;height:16px;border-radius:3px;border:1px solid #ccc}.legend-color.selected-this{background-color:#4a90e2;border-color:#357abd}.legend-color.selected-other{background-color:#fff9c4;border-color:#fdd835}.legend-color.uncovered{background-color:#ffe0e0;border-color:#ff6b6b}.description-calendar-warning{margin-top:10px;padding:10px;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404;font-size:12px;line-height:1.4}.preview-calendar-container{margin-top:30px;padding:20px;background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.preview-calendar-container h3{margin-top:0;margin-bottom:8px;color:#333;font-size:18px}.preview-note{margin-bottom:16px;color:#666;font-size:13px}.preview-empty{padding:20px;text-align:center;color:#999;font-style:italic}.preview-calendar-grid{display:flex;flex-direction:column;gap:2px}.preview-calendar-header{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.preview-calendar-header-cell{text-align:center;font-weight:600;font-size:12px;color:#666;padding:8px 4px;background-color:#f5f5f5;border-radius:4px}.preview-calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.preview-calendar-day{min-height:120px;border:1px solid #e0e0e0;border-radius:4px;padding:6px;background-color:#fff;position:relative;display:flex;flex-direction:column;overflow:hidden;transition:all .2s}.preview-calendar-day.clickable{cursor:pointer}.preview-calendar-day.clickable:hover{background-color:#f8f9fa;border-color:#4a90e2}.preview-calendar-day.not-clickable{cursor:not-allowed;opacity:.9}.preview-calendar-day.has-description-assignment{border-color:#4a90e2;border-style:dashed;border-width:2px;background-color:#f0f7ff;position:relative}.preview-calendar-day.has-description-assignment:after{content:"🔒";position:absolute;top:4px;right:4px;font-size:12px;opacity:.6;z-index:10}.preview-calendar-day.has-description-assignment:hover{background-color:#e8f2ff;border-color:#357abd}.preview-calendar-day.weekend{background-color:#f9f9f9;opacity:.7;cursor:not-allowed}.preview-calendar-day.weekend.clickable:hover{background-color:#f9f9f9;border-color:#e0e0e0}.preview-calendar-day.day-off{background-color:#ffe0e0;border-color:#f99;position:relative}.preview-calendar-day.day-off:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,153,153,.2) 10px,rgba(255,153,153,.2) 20px);pointer-events:none;z-index:1}.preview-calendar-day.day-off>*{position:relative;z-index:2}.preview-calendar-day.has-work{border-color:#4a90e2;border-width:2px}.preview-calendar-day.empty{border:none;background:transparent}.preview-day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.preview-day-number{font-weight:600;font-size:13px;color:#333}.preview-day-off-indicator{color:#f33;font-weight:700}.preview-day-locked-indicator{font-size:12px;opacity:.7;cursor:help}.preview-calendar-day.holiday{background-color:#fff3cd;border:2px solid #ffc107;position:relative}.preview-calendar-day.holiday .preview-day-header{justify-content:space-between;align-items:flex-start;margin-bottom:4px}.preview-calendar-day.holiday .preview-day-holiday-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;margin-top:0}.preview-day-holiday-badge{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;font-size:11px;font-weight:700;padding:4px 8px;border-radius:12px;white-space:nowrap;box-shadow:0 2px 4px #0003;display:inline-flex;align-items:center;justify-content:center;gap:2px;text-align:center;margin-top:6px}.calendar-day.holiday{background-color:#fff3cd;border:2px solid #ffc107;position:relative}.calendar-day-holiday-badge{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;font-size:9px;font-weight:700;padding:2px 6px;border-radius:8px;white-space:nowrap;box-shadow:0 2px 4px #0003;display:block;text-align:center;width:100%;margin-top:4px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.description-calendar-day.holiday{background-color:#fff3cd;border:2px solid #ffc107;position:relative}.description-calendar-holiday-badge{position:absolute;top:2px;right:2px;background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;font-size:8px;font-weight:700;width:6px;height:6px;border-radius:50%;box-shadow:0 1px 2px #0000004d;display:block;z-index:10;pointer-events:none}.preview-day-off-label{font-size:11px;color:#c00;font-weight:600;text-align:center;padding:4px 0;margin-bottom:4px}.preview-day-content{flex:1;display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:100px}.preview-project-item{padding:4px 6px;border-radius:3px;border:1px solid #ddd;font-size:10px;line-height:1.3;background-color:#f8f8f8}.preview-project-item.missing-description{border:2px solid #ff6b6b!important;background-color:#ffe0e0!important;color:#c33!important;font-weight:600}.preview-project-name{font-weight:600;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-project-hours{font-weight:600;color:#4a90e2;margin-bottom:2px;transition:background-color .2s}.preview-project-hours:hover{background-color:#4a90e21a;border-radius:3px;padding:2px 4px}.preview-project-hours-input{font-weight:600;color:#4a90e2;margin-bottom:2px}.preview-project-description{font-size:9px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:italic}.preview-project-description.missing-desc-text{color:#c33!important;font-weight:600;font-style:normal}.preview-day-total{margin-top:4px;padding-top:4px;border-top:1px solid #ddd;font-weight:600;font-size:11px;color:#333}.preview-legend{display:flex;gap:16px;margin-top:16px;padding-top:16px;border-top:1px solid #e0e0e0;font-size:12px;flex-wrap:wrap}.preview-legend .legend-item{display:flex;align-items:center;gap:6px}.preview-legend .legend-color{width:16px;height:16px;border-radius:3px;border:1px solid #ccc}.preview-legend .legend-color.has-work{background-color:transparent;border:2px solid #4a90e2;border-color:#4a90e2}.preview-legend .legend-color.day-off{background-color:#ffe0e0;border-color:#f99}.preview-legend .legend-color.weekend{background-color:#f9f9f9;border-color:#ddd}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,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}*{box-sizing:border-box}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;background-color:#fafafa;color:#333}#root{width:100%;margin:0 auto;padding:0 2rem}
