*{margin:0;padding:0;box-sizing:border-box}body{font-family:Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:300;background-color:#f5f5f5;color:#323130;line-height:1.5}#app{height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);color:#323130;padding:16px 24px;box-shadow:0 2px 8px #0000001a;z-index:100;border-bottom:1px solid #dee2e6}.app-title{font-size:24px;font-weight:500;margin-bottom:8px}.app-subtitle{font-size:14px;opacity:.9}.upload-container{flex:1;display:flex;align-items:center;justify-content:center;background-color:#fafafa}.upload-area{background:white;border:2px dashed #d1d1d1;border-radius:12px;padding:48px;text-align:center;transition:all .3s ease;cursor:pointer;max-width:500px;width:100%;margin:0 20px}.upload-area:hover{border-color:#6c757d;background-color:#f8f9fa}.upload-area.dragover{border-color:#495057;background-color:#f1f3f4;border-style:solid}.upload-icon{width:64px;height:64px;margin:0 auto 16px;color:#605e5c}.upload-title{font-size:20px;font-weight:500;margin-bottom:8px;color:#323130}.upload-subtitle{font-size:14px;color:#605e5c;margin-bottom:24px}.upload-button{background:linear-gradient(135deg,#495057,#343a40);color:#fff;border:none;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.upload-button:hover{background:linear-gradient(135deg,#343a40,#212529);transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.file-input{display:none}.sample-download-fixed{position:fixed;bottom:20px;right:20px;z-index:50}.sample-link-small{display:inline-flex;align-items:center;gap:6px;color:#6c757d;text-decoration:none;font-size:12px;font-weight:300;padding:6px 12px;border-radius:4px;transition:all .2s ease;border:1px solid transparent;background-color:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 8px #0000001a}.sample-link-small:hover{color:#495057;background-color:#f8f9faf2;border-color:#dee2e6;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.sample-link-small svg{flex-shrink:0;opacity:.8}@media (max-width: 768px){.sample-download-fixed{bottom:16px;right:16px}.sample-link-small{font-size:11px;padding:4px 8px;gap:4px}.sample-link-small svg{width:12px;height:12px}}.project-view{flex:1;display:flex;flex-direction:column;background:white}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#f8f9fa;border-bottom:1px solid #e1e1e1}.project-info{display:flex;flex-direction:column}.project-name{font-size:18px;font-weight:500;color:#323130}.project-details{font-size:12px;color:#605e5c}.toolbar-actions{display:flex;gap:12px}.btn{padding:8px 16px;border:1px solid #d1d1d1;background:white;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px}.btn:hover{background:#f5f5f5;border-color:#c7c7c7}.btn.primary{background:linear-gradient(135deg,#495057,#343a40);color:#fff;border-color:#495057}.btn.primary:hover{background:linear-gradient(135deg,#343a40,#212529);border-color:#343a40;transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.gantt-container{flex:1;display:flex;overflow:hidden;height:100%;align-items:stretch}.task-list{width:350px;background:white;border-right:1px solid #e1e1e1;flex-shrink:0;display:flex;flex-direction:column;height:100%}.task-list-body{flex:1;overflow:auto}.task-list-header{position:sticky;top:0;background:#f8f9fa;border-bottom:1px solid #e1e1e1;padding:18px 12px;font-weight:600;font-size:14px;color:#323130;z-index:10;height:60px;box-sizing:border-box;display:flex;align-items:center;flex-shrink:0}.task-item{display:flex;align-items:center;padding:8px 12px;border-bottom:1px solid #f5f5f5;transition:background-color .2s ease;height:40px;overflow:hidden;box-sizing:border-box}.task-item:hover{background-color:#f8f9fa}.task-hierarchy{margin-right:8px;font-family:Consolas,monospace;font-size:12px;color:#605e5c;width:40px;text-align:right}.task-name{flex:1;font-size:13px;color:#323130;padding-left:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-name.level-1{padding-left:8px;font-weight:600}.task-name.level-2{padding-left:24px}.task-name.level-3{padding-left:40px}.task-name.level-4{padding-left:56px}.task-duration{font-size:12px;color:#605e5c;margin-left:8px;white-space:nowrap}.timeline-container{flex:1;background:white;height:100%;display:flex;flex-direction:column;overflow-x:auto;overflow-y:hidden}.timeline-header{position:sticky;top:0;background:#f8f9fa;border-bottom:1px solid #e1e1e1;z-index:20;height:60px;box-shadow:0 2px 4px #0000001a;flex-shrink:0}.timeline-months{display:flex;height:30px;border-bottom:1px solid #e1e1e1}.timeline-days{display:flex;height:30px}.month-header,.day-header{border-right:1px solid #e1e1e1;display:flex;align-items:center;justify-content:center;font-size:12px;color:#323130;background:white;flex-shrink:0}.month-header{background:#f0f0f0;font-weight:600}.day-header{width:30px;font-size:11px}.day-header.weekend{background:#f8f8f8;color:#666}.day-header.today{background:linear-gradient(135deg,#495057,#343a40);color:#fff;font-weight:600}.timeline-body{position:relative;flex:1;height:100%;overflow-y:auto;overflow-x:visible}.timeline-row{height:40px;border-bottom:1px solid #f5f5f5;position:relative;display:flex;box-sizing:border-box}.timeline-row:hover{background-color:#f8f9fa}.day-cell{width:30px;height:100%;border-right:1px solid #f0f0f0;flex-shrink:0}.day-cell.weekend{background:#f8f8f8}.day-cell.today{background:linear-gradient(to right,rgba(73,80,87,.1),rgba(73,80,87,.1));border-right-color:#495057}.gantt-bar{position:absolute;height:24px;top:8px;border-radius:4px;display:flex;align-items:center;font-size:11px;font-weight:500;z-index:5;cursor:pointer;transition:all .2s ease}.gantt-bar:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0003}.gantt-bar.level-1{background:linear-gradient(135deg,#495057,#343a40);color:#fff;height:28px;top:6px}.gantt-bar.level-2{background:linear-gradient(135deg,#00bcf2,#40e0d0);color:#fff}.gantt-bar.level-3{background:linear-gradient(135deg,#00cc6a,#32d74b);color:#fff}.gantt-bar.level-4{background:linear-gradient(135deg,#ff9500,#ffb347);color:#fff}.gantt-bar-content{padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.gantt-bar-progress{position:absolute;top:0;left:0;height:100%;background:rgba(255,255,255,.3);border-radius:4px 0 0 4px;transition:width .3s ease}.dependency-line{position:absolute;z-index:3;pointer-events:none}.dependency-arrow{stroke:#605e5c;stroke-width:1.5;fill:none;marker-end:url(#arrowhead)}.mobile-menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px;border-radius:4px;transition:background-color .2s ease}.mobile-menu-toggle:hover{background:#f0f0f0}.mobile-menu-toggle svg{width:20px;height:20px;color:#495057}.mobile-menu{position:fixed;top:0;right:-100%;width:280px;height:100vh;background:white;box-shadow:-4px 0 12px #00000026;z-index:200;transition:right .3s ease;display:flex;flex-direction:column}.mobile-menu.open{right:0}.mobile-menu-header{padding:16px 20px;border-bottom:1px solid #e1e1e1;display:flex;align-items:center;justify-content:space-between}.mobile-menu-title{font-size:16px;font-weight:500;color:#323130}.mobile-menu-close{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#605e5c}.mobile-menu-close:hover{background:#f0f0f0}.mobile-menu-content{flex:1;padding:20px;overflow-y:auto}.mobile-menu-section{margin-bottom:24px}.mobile-menu-section h3{font-size:14px;font-weight:500;color:#323130;margin-bottom:12px;text-transform:uppercase;letter-spacing:.5px}.mobile-menu-actions{display:flex;flex-direction:column;gap:8px}.mobile-menu-actions .btn{width:100%;justify-content:flex-start;text-align:left}.mobile-menu-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:150;opacity:0;visibility:hidden;transition:all .3s ease}.mobile-menu-overlay.open{opacity:1;visibility:visible}@media (max-width: 1024px){.day-header{width:25px;font-size:10px}.day-cell{width:25px}.gantt-bar{height:20px;top:10px;font-size:10px}.gantt-bar.level-1{height:24px;top:8px}.task-list{width:300px}.task-hierarchy{width:35px;font-size:11px}.task-name{font-size:12px}}@media (max-width: 768px){.gantt-container{flex-direction:column}.task-list{width:100%;max-height:250px;overflow-y:auto}.timeline-container{flex:1;min-height:400px}.app-header{padding:12px 16px}.toolbar{padding:8px 16px;flex-direction:row;align-items:center;justify-content:space-between}.toolbar-actions{display:none}.mobile-menu-toggle{display:block}.project-info{flex:1;min-width:0}.project-name{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-details{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-header{width:20px;font-size:9px;padding:2px 0}.day-cell{width:20px}.gantt-bar{height:18px;top:11px;font-size:9px}.gantt-bar.level-1{height:22px;top:9px}.gantt-bar-content{padding:0 4px}.task-item{height:35px;padding:6px 8px}.timeline-row{height:35px}.task-list-header{height:50px;padding:12px 8px;font-size:13px}.timeline-header{height:50px}.timeline-months,.timeline-days{height:25px}.month-header{font-size:11px;font-weight:500}.task-hierarchy{width:30px;font-size:10px}.task-name{font-size:11px}.task-duration{font-size:10px}.timeline-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.timeline-body{overflow-x:visible}}@media (max-width: 480px){.mobile-menu{width:100%;right:-100%}.app-header{padding:8px 12px}.toolbar{padding:6px 12px}.app-title{font-size:20px}.app-subtitle{font-size:13px}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.loading{display:flex;align-items:center;justify-content:center;padding:40px}.spinner{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #495057;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-message{background:#fef7f7;border:1px solid #f5c6cb;color:#721c24;padding:16px;border-radius:6px;margin:20px;display:flex;align-items:center;gap:12px}.resolution-warning-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.resolution-warning-modal{background:white;border-radius:12px;padding:32px;max-width:500px;width:100%;box-shadow:0 20px 40px #0000004d;text-align:center;position:relative}.warning-icon-large{width:64px;height:64px;color:#ff9500;margin:0 auto 24px}.resolution-warning-title{font-size:24px;font-weight:600;color:#323130;margin-bottom:16px}.resolution-warning-message{font-size:16px;color:#605e5c;line-height:1.6;margin-bottom:24px}.resolution-warning-details{background:#f8f9fa;border-radius:8px;padding:16px;margin-bottom:24px;font-size:14px;color:#495057}.resolution-warning-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.btn.warning-primary{background:linear-gradient(135deg,#ff9500,#ffb347);color:#fff;border-color:#ff9500;min-width:140px}.btn.warning-primary:hover{background:linear-gradient(135deg,#e6850e,#ff9500);transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.btn.warning-secondary{background:#f8f9fa;color:#495057;border-color:#d1d1d1;min-width:140px}.btn.warning-secondary:hover{background:#e9ecef;border-color:#adb5bd}.resolution-info{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#6c757d;margin-top:16px}.resolution-info-icon{width:16px;height:16px}.desktop-mode-indicator{position:fixed;top:20px;right:20px;background:rgba(255,149,0,.9);color:#fff;padding:8px 12px;border-radius:20px;font-size:12px;font-weight:500;z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 8px #0003}@media (max-width: 768px){.resolution-warning-modal{padding:24px;margin:16px}.resolution-warning-title{font-size:20px}.resolution-warning-message{font-size:14px}.resolution-warning-actions{flex-direction:column}.btn.warning-primary,.btn.warning-secondary{min-width:100%}}.error-icon{width:24px;height:24px;color:#d13438;flex-shrink:0}.error-content{flex:1}.error-content p{margin:8px 0 0;font-size:14px}.processing-warnings{background:#fff8e1;border:1px solid #ffcc02;border-radius:6px;margin:16px 24px;overflow:hidden}.warning-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fffbf0;border-bottom:1px solid #ffcc02;cursor:pointer;-webkit-user-select:none;user-select:none}.warning-icon{width:20px;height:20px;color:#495057;flex-shrink:0}.warning-header span{flex:1;font-weight:600;color:#8a6914}.toggle-warnings{background:none;border:none;color:#8a6914;cursor:pointer;padding:4px 8px;border-radius:4px;font-size:12px;transition:background-color .2s}.toggle-warnings:hover{background:rgba(255,204,2,.1)}.warning-content{max-height:0;overflow:hidden;transition:max-height .3s ease}.processing-warnings.expanded .warning-content{max-height:400px;padding:16px}.performance-section h4,.warnings-section h4{margin:0 0 12px;font-size:14px;font-weight:600;color:#323130}.performance-list,.warning-list{margin:0 0 16px;padding:0;list-style:none;font-size:13px;line-height:1.6}.performance-list li{margin-bottom:6px;padding:6px 12px;background:#f8f9fa;border-radius:4px;border-left:3px solid #495057}.warnings-section{margin-top:16px}.warnings-section:first-child{margin-top:0}.warning-list li{margin-bottom:8px;padding:8px 12px;background:#fff8e1;border-radius:4px;border-left:3px solid #ffcc02;color:#8a6914;font-size:13px}.warning-list li:last-child{border-bottom:none}.warning-list strong{color:#734d0f;font-family:Consolas,Monaco,monospace;font-size:12px}.success-message{background:#f7fff7;border:1px solid #c3e6cb;color:#155724;padding:16px;border-radius:6px;margin:20px;text-align:center}.virtualization-active{background:#e8f5e8;border:1px solid #4caf50;border-radius:6px;padding:8px 12px;margin:8px 24px;font-size:12px;color:#2e7d32;text-align:center}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px}.loading-text{color:#605e5c;font-size:16px;margin:0}.loading-progress{width:200px;height:4px;background:#f0f0f0;border-radius:2px;overflow:hidden}.loading-progress-bar{height:100%;background:linear-gradient(90deg,#495057,#343a40);border-radius:2px;animation:progress 2s ease-in-out infinite}@keyframes progress{0%{transform:translate(-100%)}to{transform:translate(100%)}}.view-toggle{display:flex;background:white;border:1px solid #d1d1d1;border-radius:4px;overflow:hidden}.btn.toggle{border:none;border-radius:0;border-right:1px solid #d1d1d1;background:#f8f9fa;color:#605e5c;transition:all .2s ease}.btn.toggle:last-child{border-right:none}.btn.toggle:hover{background:#e3e3e3}.btn.toggle.active{background:linear-gradient(135deg,#495057,#343a40);color:#fff}.btn.toggle.active:hover{background:linear-gradient(135deg,#343a40,#212529)}.view-container{flex:1;display:flex;overflow:hidden;height:100%;align-items:stretch}.table-view{flex:1;display:flex;flex-direction:column;height:100%;background:white;padding-bottom:60px}.table-toolbar{padding:16px 24px;background:#f8f9fa;border-bottom:1px solid #e1e1e1}.toolbar-section{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.search-section{flex:1;min-width:200px}.search-input{width:100%;padding:8px 12px;border:1px solid #d1d1d1;border-radius:4px;font-size:14px;transition:border-color .2s ease}.search-input:focus{outline:none;border-color:#495057;box-shadow:0 0 0 2px #4950571a}.filter-section{display:flex;gap:8px;align-items:center}.filter-select{padding:6px 10px;border:1px solid #d1d1d1;border-radius:4px;font-size:13px;background:white;cursor:pointer;min-width:120px}.filter-select:focus{outline:none;border-color:#495057}.action-section{display:flex;gap:8px}.btn.secondary{background:#f3f2f1;border-color:#d1d1d1;color:#323130}.btn.secondary:hover{background:#e1e1e1}.table-container{flex:1;border:1px solid #e1e1e1;margin:0 24px;border-radius:4px;min-height:0;overflow:auto}.table-wrapper{min-width:100%;overflow-x:auto}.project-table{width:100%;border-collapse:collapse;font-size:13px;background:white}.project-table thead{background:#f8f9fa;position:sticky;top:0;z-index:10}.table-header{padding:12px 8px;text-align:left;font-weight:500;color:#323130;border-bottom:2px solid #e1e1e1;white-space:nowrap;-webkit-user-select:none;user-select:none}.table-header.sortable{cursor:pointer;transition:background-color .2s ease}.table-header.sortable:hover{background:#e3e3e3}.sort-icon{margin-left:4px;color:#605e5c;font-size:12px}.table-row{border-bottom:1px solid #f3f2f1;transition:background-color .2s ease}.table-row:hover{background:#f8f9fa}.table-row td{padding:8px;vertical-align:middle;border-right:1px solid #f3f2f1}.table-row td:last-child{border-right:none}.task-number{font-weight:500;color:#495057;text-align:center;width:50px}.hierarchy-level{font-family:Courier New,monospace;color:#605e5c;text-align:center;width:80px}.task-name{min-width:200px;max-width:300px}.task-name-content{display:flex;align-items:center;gap:8px}.level-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.level-indicator.level-1{background:#495057}.level-indicator.level-2{background:#107c10}.level-indicator.level-3{background:#ff8c00}.level-indicator.level-4{background:#d13438}.assigned-to{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.duration{text-align:center;width:80px}.start-date,.end-date{text-align:center;width:90px;font-family:Courier New,monospace;font-size:12px}.dependencies{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Courier New,monospace;font-size:12px}.progress{width:120px}.progress-container{display:flex;align-items:center;gap:8px}.progress-bar{flex:1;height:6px;background:#f3f2f1;border-radius:3px;overflow:hidden;position:relative}.progress-fill{height:100%;background:linear-gradient(90deg,#107c10,#16b316);border-radius:3px;transition:width .3s ease}.progress-text{font-size:11px;font-weight:500;color:#605e5c;min-width:30px;text-align:right}.bucket{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#605e5c}.no-data{text-align:center;padding:40px;color:#605e5c;font-style:italic}.table-footer{padding:12px 24px;background:#f8f9fa;border-top:1px solid #e1e1e1;position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -2px 8px #0000001a}.table-stats{display:flex;gap:16px;align-items:center;font-size:12px;color:#605e5c}.stat-item{display:flex;align-items:center;gap:4px}.stat-item strong{color:#323130;font-weight:500}@media (max-width: 1200px){.toolbar-section{flex-direction:column;align-items:stretch;gap:12px}.filter-section,.action-section{justify-content:center}}@media (max-width: 768px){.table-container{margin:0 12px}.table-toolbar{padding:12px 16px}.table-footer{padding:8px 16px;position:fixed;bottom:0;left:0;right:0;background:#f8f9fa;box-shadow:0 -2px 8px #0000001a;z-index:100}.table-stats{flex-wrap:wrap;gap:8px}.project-table{font-size:12px}.table-header{padding:8px 6px}.table-row td{padding:6px}}
