.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.share-modal{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px}.modal-header h2{font-size:1.5rem;margin:0}.modal-close{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;font-size:2rem;height:30px;justify-content:center;padding:0;width:30px}.modal-close:hover{color:#000}.modal-body{padding:20px}.error-message{background-color:#fee;color:#c33;margin-bottom:15px;padding:10px}.share-links-list{display:flex;flex-direction:column;gap:15px}.share-link-item{align-items:flex-start;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;display:flex;justify-content:space-between;padding:15px}.share-link-item.inactive{background:#f0f0f0;opacity:.6}.share-link-info{flex:1 1;margin-right:15px}.share-link-header{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px}.access-badge{border-radius:4px;font-size:.85rem;font-weight:500;padding:4px 8px}.access-badge.read{background-color:#e3f2fd;color:#1976d2}.access-badge.edit{background-color:#fff3e0;color:#f57c00}.status-badge{border-radius:4px;font-size:.85rem;padding:4px 8px}.status-badge.revoked{background-color:#ffebee;color:#c62828}.status-badge.expired{background-color:#fce4ec;color:#ad1457}.share-link-url{display:flex;gap:10px;margin-bottom:10px}.url-input{background:#fff;border:1px solid #ddd;border-radius:4px;flex:1 1;font-size:.9rem;padding:8px}.share-link-meta{color:#666;display:flex;flex-wrap:wrap;font-size:.85rem;gap:15px}.create-share-form{display:flex;flex-direction:column;gap:15px}.create-share-form h3{margin:0 0 15px}.form-group{display:flex;flex-direction:column;gap:5px}.form-control{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:8px}.form-group small{color:#666;font-size:.85rem}.form-actions{gap:10px;margin-top:10px}.btn{font-size:.9rem;padding:8px 16px}.btn-primary{background-color:#1976d2}.btn-primary:hover:not(:disabled){background-color:#1565c0}.btn-secondary{background-color:#e0e0e0;color:#333}.btn-secondary:hover:not(:disabled){background-color:#d0d0d0}.btn-danger{background-color:#d32f2f;color:#fff}.btn-danger:hover:not(:disabled){background-color:#c62828}.btn-sm{font-size:.85rem;padding:6px 12px}.btn:disabled{cursor:not-allowed;opacity:.5}.gantt-chart-container.ms-project-style{background:#fff;border:1px solid #d1d5db;border-radius:4px;box-shadow:0 1px 3px #0000001a;overflow:hidden;width:100%}.gantt-controls{align-items:center;background:#f3f4f6;border-bottom:1px solid #d1d5db;display:flex;justify-content:space-between;padding:8px 12px}.gantt-zoom-controls{align-items:center;display:flex;gap:8px}.gantt-zoom-btn{align-items:center;background:#fff;border:1px solid #d1d5db;border-radius:4px;cursor:pointer;display:flex;font-size:16px;font-weight:700;height:28px;justify-content:center;transition:background-color .2s;width:28px}.gantt-zoom-btn:hover{background:#e5e7eb}.gantt-zoom-level{color:#374151;font-size:12px;font-weight:600;min-width:50px;text-align:center}.gantt-zoom-hint{color:#6b7280;font-size:11px;font-style:italic}.gantt-split-container{display:flex;height:600px;overflow:hidden;position:relative}.gantt-left-panel{background:#fff;border-right:2px solid #d1d5db;flex-shrink:0;overflow-x:hidden;overflow-y:auto}.gantt-left-header{align-items:center;background:#f3f4f6;border-bottom:2px solid #d1d5db;color:#374151;display:flex;font-size:12px;font-weight:600;height:40px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.gantt-col-task-name{border-right:1px solid #e5e7eb;flex:1 1;min-width:150px;padding:8px 12px}.gantt-col-duration{width:100px}.gantt-col-duration,.gantt-col-start{border-right:1px solid #e5e7eb;padding:8px 12px;text-align:center}.gantt-col-start{width:140px}.gantt-col-finish{border-right:1px solid #e5e7eb;padding:8px 12px;text-align:center;width:140px}.gantt-col-resource{padding:8px 12px;text-align:center;width:120px}.gantt-left-body{background:#fff}.gantt-row{align-items:center;border-bottom:1px solid #e5e7eb;color:#1f2937;display:flex;font-size:12px;min-height:24px}.gantt-row:hover{background-color:#f9fafb}.gantt-task-row{background-color:#f3f4f6;border-bottom:2px solid #d1d5db;font-weight:600}.gantt-operation-row{background-color:#fff;padding-left:20px}.gantt-task-name{align-items:center;color:#111827;display:flex;font-weight:600;gap:6px}.gantt-task-icon{color:#6b7280;cursor:pointer;font-size:10px}.gantt-operation-name{color:#374151;font-weight:500}.gantt-splitter{background:#e5e7eb;border-left:1px solid #d1d5db;border-right:1px solid #d1d5db;cursor:col-resize;flex-shrink:0;position:relative;width:6px;z-index:30}.gantt-splitter.resizing,.gantt-splitter:hover{background:#3b82f6}.gantt-splitter-handle{background:#9ca3af;border-radius:1px;height:30px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:2px}.gantt-splitter.resizing .gantt-splitter-handle,.gantt-splitter:hover .gantt-splitter-handle{background:#fff}.gantt-right-panel{background:#fff;flex:1 1;overflow:auto;position:relative}.gantt-timeline-header{background:#f3f4f6;border-bottom:2px solid #d1d5db;display:flex;height:40px;position:-webkit-sticky;position:sticky;top:0;z-index:15}.gantt-timeline-day-header{align-items:center;background:#f9fafb;border-right:1px solid #e5e7eb;display:flex;flex-direction:column;justify-content:center;min-width:100px}.gantt-timeline-date{color:#111827;font-size:11px;font-weight:600;line-height:1.2}.gantt-timeline-day-name{color:#6b7280;font-size:10px;line-height:1.2;margin-top:2px;text-transform:uppercase}.gantt-timeline-hours{border-top:1px solid #e5e7eb;height:16px;margin-top:4px;position:relative;width:100%}.gantt-timeline-hour{color:#9ca3af;font-size:9px;position:absolute;top:2px;transform:translateX(-50%);white-space:nowrap}.gantt-dependency-arrow{overflow:visible;pointer-events:none}.gantt-operation-arrow{opacity:.7}.gantt-timeline-body{background:#fff;min-height:560px;position:relative}.gantt-timeline-vertical-line{background:#e5e7eb;bottom:0;position:absolute;top:0;width:1px;z-index:1}.gantt-timeline-horizontal-line{background:#e5e7eb;pointer-events:none;position:absolute;z-index:2}.gantt-bar{align-items:center;border:1px solid #0003;border-radius:3px;box-shadow:0 1px 2px #0000001a;cursor:pointer;display:flex;height:20px;margin-top:2px;padding:0 4px;position:absolute;transition:box-shadow .2s,transform .1s;z-index:5}.gantt-bar:hover{box-shadow:0 2px 4px #0003;transform:translateY(-1px);z-index:10}.gantt-bar-label{color:#fff;font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px #0000004d;white-space:nowrap;width:100%}.gantt-empty{background:#f9fafb;border-radius:4px;color:#6b7280;margin:20px 0;padding:40px;text-align:center}.gantt-view-fullscreen .gantt-split-container{height:calc(100vh - 150px)}.gantt-view-fullscreen .gantt-chart-container{border-radius:0;margin:0}.gantt-left-panel::-webkit-scrollbar,.gantt-right-panel::-webkit-scrollbar{height:8px;width:8px}.gantt-left-panel::-webkit-scrollbar-track,.gantt-right-panel::-webkit-scrollbar-track{background:#f1f1f1}.gantt-left-panel::-webkit-scrollbar-thumb,.gantt-right-panel::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.gantt-left-panel::-webkit-scrollbar-thumb:hover,.gantt-right-panel::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width:768px){.gantt-split-container{flex-direction:column;height:auto}.gantt-left-panel{border-bottom:2px solid #d1d5db;border-right:none;max-width:100%!important;width:100%!important}.gantt-splitter{cursor:row-resize;height:4px;width:100%}.gantt-splitter-handle{height:2px;left:50%;top:50%;transform:translate(-50%,-50%);width:30px}}.resource-utilization-container{background:#fff;border-radius:4px;box-shadow:0 1px 3px #0000001a;height:100%;overflow:hidden;width:100%}.resource-utilization-split-container{border:1px solid #d1d5db;border-radius:4px;display:flex;height:600px;overflow:hidden}.resource-utilization-left-panel{background:#fff;border-right:2px solid #d1d5db;flex-shrink:0;overflow-x:hidden;overflow-y:auto}.resource-utilization-left-header{background:#f3f4f6;border-bottom:2px solid #d1d5db;color:#111827;display:flex;font-size:12px;font-weight:600;position:-webkit-sticky;position:sticky;top:0;z-index:10}.resource-utilization-left-body{background:#fff}.resource-utilization-col-resource-name{border-right:1px solid #e5e7eb;flex:1 1;min-width:150px;padding:8px 12px}.resource-utilization-col-utilization{border-right:1px solid #e5e7eb;padding:8px 12px;text-align:center;width:150px}.resource-utilization-col-operations{padding:8px 12px;text-align:center;width:80px}.resource-utilization-row{align-items:center;border-bottom:1px solid #e5e7eb;color:#1f2937;display:flex;font-size:12px;min-height:24px}.resource-utilization-row:hover{background-color:#f9fafb}.utilization-bar-container{background:#e5e7eb;border-radius:3px;height:20px;overflow:hidden;position:relative;width:100%}.utilization-bar{border-radius:3px;height:100%;transition:width .3s ease}.utilization-text{color:#111827;font-size:10px;font-weight:600;left:50%;position:absolute;text-shadow:0 1px 2px #fffc;top:50%;transform:translate(-50%,-50%);z-index:1}.resource-utilization-splitter{background:#e5e7eb;border-left:1px solid #d1d5db;border-right:1px solid #d1d5db;cursor:col-resize;flex-shrink:0;position:relative;width:6px;z-index:30}.resource-utilization-splitter.resizing,.resource-utilization-splitter:hover{background:#3b82f6}.resource-utilization-splitter-handle{background:#9ca3af;border-radius:1px;height:30px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:2px}.resource-utilization-splitter.resizing .resource-utilization-splitter-handle,.resource-utilization-splitter:hover .resource-utilization-splitter-handle{background:#fff}.resource-utilization-right-panel{background:#fff;flex:1 1;overflow:auto;position:relative}.resource-utilization-timeline-header{background:#f3f4f6;border-bottom:2px solid #d1d5db;display:flex;height:60px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.resource-utilization-timeline-day-header{border-right:1px solid #d1d5db;min-width:60px;padding:4px 8px;position:relative;text-align:center}.resource-utilization-timeline-date{color:#111827;font-size:12px;font-weight:600;margin-bottom:2px}.resource-utilization-timeline-day-name{color:#6b7280;font-size:10px;text-transform:capitalize}.resource-utilization-timeline-hours{bottom:4px;color:#9ca3af;font-size:9px;height:16px;left:0;position:absolute;right:0}.resource-utilization-timeline-hour{position:absolute;transform:translateX(-50%)}.resource-utilization-timeline-body{background:#fff;min-height:400px;position:relative}.resource-utilization-timeline-vertical-line{background:#e5e7eb;bottom:0;position:absolute;top:0;width:1px;z-index:1}.resource-utilization-timeline-horizontal-line{background:#e5e7eb;pointer-events:none;position:absolute;z-index:2}.resource-utilization-bar{align-items:center;border:1px solid #0003;border-radius:3px;box-shadow:0 1px 2px #0000001a;cursor:pointer;display:flex;height:20px;margin-top:2px;padding:0 4px;position:absolute;transition:box-shadow .2s,transform .1s;z-index:5}.resource-utilization-bar:hover{box-shadow:0 2px 4px #0003;transform:translateY(-1px);z-index:10}.resource-utilization-bar-label{color:#fff;font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px #0000004d;white-space:nowrap;width:100%}.resource-utilization-empty{background:#f9fafb;border-radius:4px;color:#6b7280;margin:20px 0;padding:40px;text-align:center}.resource-utilization-hint{color:#6b7280;font-size:12px;padding:8px;text-align:center}.resource-utilization-left-panel::-webkit-scrollbar,.resource-utilization-right-panel::-webkit-scrollbar{height:8px;width:8px}.resource-utilization-left-panel::-webkit-scrollbar-track,.resource-utilization-right-panel::-webkit-scrollbar-track{background:#f1f1f1}.resource-utilization-left-panel::-webkit-scrollbar-thumb,.resource-utilization-right-panel::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.resource-utilization-left-panel::-webkit-scrollbar-thumb:hover,.resource-utilization-right-panel::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width:768px){.resource-utilization-split-container{flex-direction:column;height:auto}.resource-utilization-left-panel{border-bottom:2px solid #d1d5db;border-right:none;max-width:100%!important;width:100%!important}.resource-utilization-splitter{cursor:row-resize;height:4px;width:100%}.resource-utilization-splitter-handle{height:2px;width:30px}}.performance-metrics{display:flex;flex-direction:column;gap:1rem}.metric-row{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;justify-content:space-between;padding:.75rem}.metric-label{color:#495057;font-weight:500}.metric-value{font-size:1.1rem}.analytics-dashboard{padding:2rem}.dashboard-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.dashboard-header h1{margin:0}.metrics-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}.metric-card{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:1.5rem;text-align:center}.metric-card h3{color:#6c757d;font-size:.9rem;font-weight:400;margin:0 0 .5rem}.metric-value{color:#2c3e50;font-size:2rem;font-weight:700;margin:0}.charts-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));margin-bottom:2rem}.chart-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem}.chart-card h2{color:#2c3e50;font-size:1.2rem;margin:0 0 1rem}.feedback-form-container{margin:0 auto;max-width:600px;width:100%}.feedback-form{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:2rem}.feedback-form h3{color:#333;margin-top:0}.feedback-form h3,.form-group{margin-bottom:1.5rem}.form-group label{color:#555;font-weight:500;margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:1rem;padding:.75rem;transition:border-color .2s;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#007bff;outline:none}.form-group textarea{min-height:120px;resize:vertical}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background-color:#f5f5f5;cursor:not-allowed}.field-error{color:#dc3545;display:block;font-size:.875rem;margin-top:.25rem}.success-message{background-color:#d4edda;border-radius:4px;color:#155724;margin-bottom:1.5rem;padding:1rem}.form-actions{gap:1rem;justify-content:flex-end;margin-top:2rem}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#0056b3}.btn-primary:disabled{cursor:not-allowed}.btn-primary:disabled,.btn-secondary{background-color:#6c757d}.btn-secondary:hover:not(:disabled){background-color:#545b62}.btn-secondary:disabled{cursor:not-allowed;opacity:.6}.feedback-page{margin:0 auto;max-width:1200px}.feedback-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.feedback-header h1{color:#2c3e50;margin:0}.feedback-form-section{margin-bottom:2rem}.feedbacks-list{margin-top:2rem}.empty-state{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:3rem;text-align:center}.empty-state p{color:#666;font-size:1.1rem;margin-bottom:1.5rem}.feedbacks-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.feedback-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;cursor:pointer;padding:1.5rem;transition:transform .2s,box-shadow .2s}.feedback-card:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.feedback-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:1rem}.feedback-card-header h3{color:#2c3e50;flex:1 1;font-size:1.1rem;margin:0 1rem 0 0}.feedback-card-body{margin-bottom:1rem}.feedback-type{color:#007bff;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.feedback-message-preview{color:#666;font-size:.95rem;line-height:1.5;margin:0}.feedback-card-footer{align-items:center;border-top:1px solid #eee;display:flex;justify-content:space-between;padding-top:1rem}.feedback-date{color:#999;font-size:.85rem}.status-badge{border-radius:12px;display:inline-block;font-size:.75rem;font-weight:500;padding:.25rem .75rem;white-space:nowrap}.status-new{background-color:#007bff;color:#fff}.status-read{background-color:#6c757d;color:#fff}.status-archived{background-color:#e9ecef;color:#495057}.feedback-details{margin-top:2rem}.feedback-detail-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:2rem}.detail-header{align-items:flex-start;border-bottom:2px solid #eee;display:flex;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem}.detail-header h2{color:#2c3e50;flex:1 1;margin:0 1rem 0 0}.detail-meta{border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1.5rem;padding-bottom:1rem}.meta-item{color:#666;font-size:.95rem}.meta-item strong{color:#333;margin-right:.5rem}.detail-message{margin-top:1.5rem}.detail-message h3{color:#2c3e50;font-size:1.1rem;margin-bottom:1rem}.detail-message p{word-wrap:break-word;color:#555;line-height:1.6;white-space:pre-wrap}.loading{color:#666;padding:2rem;text-align:center}.error-message{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;margin-bottom:1.5rem;padding:1rem}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.App{min-height:100vh}.navbar{background:#2c3e50;box-shadow:0 2px 4px #0000001a;color:#fff;padding:1rem 0}.navbar .container{align-items:center;display:flex;justify-content:space-between}.navbar .logo{color:#fff;font-size:1.5rem;font-weight:700;text-decoration:none}.nav-links{display:flex;gap:1.5rem}.nav-links a{color:#fff;text-decoration:none;transition:opacity .2s}.nav-links a:hover{opacity:.8}.container{margin:0 auto;max-width:1200px;padding:2rem}.schedule-editor-container{max-width:100%;padding:1.5rem;width:100%}.header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.header h1{color:#2c3e50;margin:0}.btn{background:#95a5a6;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-block;font-size:1rem;padding:.75rem 1.5rem;text-align:center;text-decoration:none;transition:background-color .2s}.btn:hover{background:#7f8c8d}.btn-primary{background:#3498db}.btn-primary:hover{background:#2980b9}.btn-large{font-size:1.1rem;padding:1rem 2rem}.btn-sm{font-size:.9rem;padding:.5rem 1rem}.btn-danger{background:#e74c3c}.btn-danger:hover{background:#c0392b}.btn-secondary{background:#95a5a6;color:#fff}.btn-secondary:hover{background:#7f8c8d}.projects-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:2rem}.project-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:1.5rem;transition:transform .2s,box-shadow .2s}.project-card:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.project-card h3{color:#2c3e50;margin:0 0 .5rem}.project-card .task-type{color:#7f8c8d;font-size:.9rem;margin-bottom:.5rem}.project-card .status{margin:.5rem 0}.status-draft{color:#95a5a6}.status-optimizing{color:#f39c12}.status-completed{color:#27ae60}.status-failed{color:#e74c3c}.project-card .date{color:#7f8c8d;font-size:.9rem;margin:.5rem 0}.project-card .actions{display:flex;gap:.5rem;margin-top:1rem}.alert{border-radius:4px;margin-bottom:1rem;padding:1rem}.alert-error{background:#fee;border:1px solid #fcc;color:#c33}.info-box{background:#e3f2fd;border-left:4px solid #2196f3;border-radius:8px;margin:1.5rem 0;padding:1.5rem}.info-box ul{margin:.5rem 0 0 1.5rem}.error{background:#fee;border-radius:4px;color:#e74c3c;margin:1rem 0;padding:1rem}.result-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:2rem;padding:2rem}.result-section h2{color:#2c3e50;margin-bottom:1.5rem}.metrics,.validation{background:#f8f9fa;border-radius:6px;margin:1.5rem 0;padding:1rem}.metrics h3,.validation h3{color:#2c3e50;margin-bottom:1rem}.metrics ul,.validation ul{list-style:none;padding:0}.metrics li,.validation li{border-bottom:1px solid #ddd;padding:.5rem 0}.metrics li:last-child,.validation li:last-child{border-bottom:none}.optimization-progress{background:#fff;border-left:4px solid #3498db;border-radius:8px;box-shadow:0 2px 8px #00000026;margin:20px 0;padding:25px}.optimization-progress h3{color:#2c3e50;font-size:20px;margin-top:0}.stage-indicator{align-items:center;background:#f8f9fa;border-radius:6px;display:flex;gap:10px;margin-bottom:15px;padding:10px}.stage-label{color:#7f8c8d;font-size:14px;font-weight:600}.stage-name{color:#2c3e50;flex:1 1;font-size:16px;font-weight:700}.stage-status{color:#3498db;font-size:14px;font-weight:600}.stage-status.completed{color:#27ae60}.stage-completed{animation:fadeIn .5s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.progress-bar{background-color:#e0e0e0;border-radius:18px;box-shadow:inset 0 2px 4px #0000001a;height:35px;margin:15px 0;overflow:hidden;width:100%}.progress-fill{align-items:center;background:linear-gradient(90deg,#3498db,#2ecc71);box-shadow:0 2px 4px #0003;color:#fff;display:flex;font-size:14px;font-weight:700;height:100%;justify-content:center;transition:width .5s ease}.progress-text{color:#555;font-size:14px;margin:5px 0;text-align:center}.time-estimate{color:#7f8c8d;font-size:12px;font-style:italic;margin-top:5px;text-align:center}.success-message{background:#d4edda;border:1px solid #c3e6cb;border-radius:6px;color:#27ae60;font-size:16px;font-weight:700;margin-top:15px;padding:10px;text-align:center}.optimization-controls{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:20px 0;padding:20px}.method-selection{align-items:center;display:flex;margin-bottom:15px}.method-selection label{color:#2c3e50;font-size:16px;font-weight:600}.method-selection select{background:#fff;border:2px solid #ddd;border-radius:6px;cursor:pointer;font-size:14px;margin-left:10px;min-width:200px;padding:10px;transition:border-color .3s}.method-selection select:hover{border-color:#3498db}.method-selection select:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.statistics-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:20px;padding:20px}.statistics-group{margin-bottom:30px}.statistics-group h4{border-bottom:2px solid #3498db;color:#2c3e50;margin-bottom:15px;padding-bottom:10px}.statistics-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.statistics-item{background:#f8f9fa;border-left:4px solid #3498db;border-radius:6px;padding:15px}.statistics-item strong{color:#2c3e50;display:block;margin-bottom:8px}.statistics-item p{color:#555;font-size:14px;margin:5px 0}.gaps-statistics{background:#f8f9fa;border-radius:6px;margin-top:15px;padding:15px}.gaps-statistics h4{color:#2c3e50;margin-bottom:10px;margin-top:0}.form-group{margin-bottom:20px}.form-group label{color:#2c3e50;display:block;font-weight:600;margin-bottom:8px}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:10px;width:100%}.form-group input:focus,.form-group select:focus{border-color:#3498db;outline:none}.form-group .error-text{color:#e74c3c;display:block;font-size:.875rem;margin-top:.25rem}.success{background-color:#d4edda;border-radius:4px;color:#155724;margin-bottom:1rem;padding:1rem}.form-row{align-items:center;background-color:#f8f9fa;border-radius:4px;display:flex;gap:10px;margin-bottom:15px;padding:15px}.form-row input,.form-row select{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px}.form-row input[type=text]{flex:1 1;min-width:200px}.form-hint{color:#7f8c8d;font-size:12px;font-style:italic;margin-top:10px}.form-actions{border-top:1px solid #eee;display:flex;justify-content:space-between;margin-top:30px;padding-top:20px}.step-indicator{color:#7f8c8d;font-size:14px;margin-top:20px;padding:10px;text-align:center}.edit-project-form{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:20px;padding:30px}.form-section{border-bottom:2px solid #eee;margin-bottom:40px;padding-bottom:30px}.form-section:last-child{border-bottom:none}.form-section h2{border-bottom:2px solid #3498db;color:#2c3e50;margin-bottom:20px;padding-bottom:10px}.schedule-editor{margin-top:20px}.schedule-table-wrapper{background:#fff;border:1px solid #ddd;border-radius:8px;max-height:calc(100vh - 250px);overflow-x:auto;overflow-y:auto}.schedule-table-zoom-wrapper{min-height:100%;min-width:100%}.schedule-editor-table{border-collapse:collapse;font-size:11px;table-layout:fixed;width:100%}.schedule-editor-table th{background:#f8f9fa;border:1px solid #ddd;font-size:11px;font-weight:600;padding:6px 4px;position:-webkit-sticky;position:sticky;text-align:center;top:0;z-index:10}.schedule-editor-table .fixed-column{background:#f8f9fa;left:0;max-width:120px;min-width:120px;position:-webkit-sticky;position:sticky;z-index:20}.schedule-editor-table .lesson-number-header{font-size:10px;max-width:45px;min-width:45px;padding:4px 2px;width:45px}.schedule-editor-table .class-name-cell{background:#e3f2fd;font-size:11px;font-weight:600;padding:8px 6px}.schedule-editor-table td{border:1px solid #ddd;height:60px;max-width:70px;min-width:70px;padding:2px;position:relative;vertical-align:top;width:70px}.schedule-cell{background:#fff;transition:background-color .2s}.schedule-cell.has-lesson{background:#e3f2fd}.schedule-cell.conflict{background:#ffebee!important;border:2px solid #f44336!important}.schedule-cell.dragging{background:#fff9c4;border:2px dashed #fbc02d}.schedule-cell:hover{background:#f5f5f5}.lesson-card{background:#2196f3;border-radius:3px;color:#fff;cursor:move;display:flex;flex-direction:column;font-size:9px;height:100%;justify-content:space-between;line-height:1.2;padding:4px;transition:transform .2s,box-shadow .2s;-webkit-user-select:none;user-select:none}.lesson-card:hover{box-shadow:0 4px 8px #0003;transform:scale(1.05);z-index:100}.lesson-card:active{opacity:.7}.lesson-subject{font-size:10px;font-weight:700;margin-bottom:2px}.lesson-subject,.lesson-teacher{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-teacher{font-size:8px;margin-bottom:1px;opacity:.9}.lesson-room{font-size:7px;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-editor-legend{background:#f8f9fa;border-radius:6px;margin-top:20px;padding:15px}.schedule-editor-legend h4{color:#2c3e50;margin-top:0}.schedule-editor-legend ul{list-style:none;padding:0}.schedule-editor-legend li{align-items:center;display:flex;margin-bottom:10px}.zoom-controls{background:#f8f9fa;border-radius:6px;gap:8px;margin-right:20px;padding:4px}.zoom-button,.zoom-controls{align-items:center;border:1px solid #ddd;display:flex}.zoom-button{background:#fff;border-radius:4px;color:#333;cursor:pointer;font-size:18px;font-weight:700;height:32px;justify-content:center;transition:all .2s;width:32px}.zoom-button:hover:not(:disabled){background:#e3f2fd;border-color:#2196f3;color:#2196f3}.zoom-button:active:not(:disabled){background:#bbdefb;transform:scale(.95)}.zoom-button:disabled{background:#f5f5f5;cursor:not-allowed;opacity:.5}.zoom-level{color:#333;font-size:14px;font-weight:500;min-width:50px;text-align:center}.zoom-reset{font-size:16px;margin-left:4px}.schedule-grid{margin-top:20px}.view-type-selector{display:flex;gap:10px;margin-bottom:20px}.schedule-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;width:100%}.schedule-table td,.schedule-table th{border:1px solid #ddd;padding:12px;text-align:left}.schedule-table th{background:#f8f9fa;color:#2c3e50;font-weight:600}.schedule-table tr:hover{background:#f5f5f5}.actions-section{margin:20px 0}.info{color:#7f8c8d;font-style:italic}
/*# sourceMappingURL=main.1a9d58d4.css.map*/