:root{--bg-primary: #0a0a0f;--bg-secondary: #12121a;--bg-tertiary: #1a1a24;--border-color: #2a2a3a;--text-primary: #f0f0f5;--text-secondary: #a0a0b0;--text-muted: #606070;--accent-primary: #6366f1;--accent-secondary: #818cf8;--critical-color: #ef4444;--critical-glow: rgba(239, 68, 68, .3);--success-color: #22c55e;--warning-color: #f59e0b;--task-bar: #3b82f6;--task-bar-progress: #60a5fa;--task-bar-selected: #8b5cf6;--grid-line: rgba(255, 255, 255, .05);--grid-line-major: rgba(255, 255, 255, .1);--row-height: 40px;--header-height: 60px;--task-list-width: 280px;--scrollbar-width: 8px}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow:hidden}#root{height:100%}.app{display:flex;flex-direction:column;height:100%}.app-header{height:var(--header-height);background:var(--bg-secondary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 24px;flex-shrink:0}.app-header h1{font-size:1.25rem;font-weight:600;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.toolbar{height:44px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 16px;gap:24px;flex-shrink:0}.toolbar-section{display:flex;align-items:center;gap:8px}.toolbar-label{display:flex;align-items:center;gap:8px;font-size:.75rem;color:var(--text-secondary)}.date-input{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;font-size:.8rem;color:var(--text-primary);font-family:inherit}.date-input:focus{outline:none;border-color:var(--accent-primary)}.toolbar-btn{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;padding:6px 12px;font-size:.75rem;color:var(--text-primary);cursor:pointer;transition:all .15s ease;font-weight:500}.toolbar-btn:hover{background:var(--bg-primary);border-color:var(--text-muted)}.toolbar-btn.primary{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.toolbar-btn.primary:hover{background:var(--accent-secondary)}.toolbar-info{font-size:.7rem;color:var(--text-muted)}.app-main{flex:1;overflow:hidden;display:flex}.gantt-layout{flex:1;display:flex;flex-direction:column;overflow:hidden}.gantt-header-row{display:flex;flex-shrink:0;border-bottom:1px solid var(--border-color);background:var(--bg-tertiary)}.gantt-label-header{width:500px;flex-shrink:0;display:flex;align-items:center;padding:0 8px;gap:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);height:40px;border-right:1px solid var(--border-color)}.gantt-timescale-header{flex:1;overflow:hidden}.gantt-body{flex:1;overflow:auto}.gantt-body-inner{display:flex;position:relative;min-height:100%}.gantt-labels{width:500px;flex-shrink:0;position:relative;background:var(--bg-secondary);border-right:1px solid var(--border-color)}.gantt-chart-panel{flex:1;position:relative}.gantt-svg{display:block}.gantt-row{position:absolute;left:0;right:0;display:flex;align-items:center;padding:0 8px;gap:4px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background-color .15s ease}.gantt-row:hover{background:var(--bg-tertiary)}.gantt-row.selected{background:#6366f126}.gantt-row.critical{border-left:3px solid var(--critical-color)}.task-bar-label{font-size:11px;fill:#fff;pointer-events:none;font-weight:500}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.gantt-container{display:flex;flex:1;overflow:hidden}.task-list-panel{width:500px;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0}.task-list-header{height:var(--row-height);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 8px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);gap:4px}.task-list-body{flex:1;overflow-y:auto;overflow-x:hidden}.task-list-row{height:var(--row-height);display:flex;align-items:center;padding:0 8px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background-color .15s ease;gap:4px}.task-list-row:hover{background:var(--bg-tertiary)}.task-list-row.selected{background:#6366f126}.task-list-row.critical{border-left:3px solid var(--critical-color)}.col-wbs{width:50px;flex-shrink:0;font-size:.75rem;color:var(--text-muted);display:flex;align-items:center;gap:2px}.col-name{flex:1;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-start{width:45px;flex-shrink:0;font-size:.75rem;color:var(--text-secondary);text-align:right}.col-duration{width:35px;flex-shrink:0;font-size:.75rem;color:var(--text-secondary);text-align:right}.col-predecessors{width:80px;flex-shrink:0;font-size:.7rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-actions{width:24px;flex-shrink:0;display:flex;justify-content:center;opacity:0;transition:opacity .15s ease}.gantt-row:hover .col-actions,.task-list-row:hover .col-actions{opacity:1}.action-btn{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:2px 4px;line-height:1;border-radius:2px;transition:all .15s ease}.action-btn:hover{background:var(--bg-primary);color:var(--text-primary)}.action-btn.delete:hover{color:var(--critical-color)}.editable-cell{cursor:text;padding:2px 4px;border-radius:2px;transition:background .15s ease}.editable-cell:hover{background:#ffffff0d}.inline-edit{background:var(--bg-primary);border:1px solid var(--accent-primary);border-radius:3px;padding:2px 4px;font-size:.75rem;color:var(--text-primary);font-family:inherit;width:100%}.inline-edit:focus{outline:none}.inline-edit.date{width:100px}.inline-edit.number{width:40px;text-align:right}.collapse-btn{background:none;border:none;color:var(--text-muted);font-size:.6rem;cursor:pointer;padding:2px;line-height:1;transition:color .15s ease}.collapse-btn:hover{color:var(--text-primary)}.task-list-row.depth-0 .col-name{font-weight:500}.task-list-row.depth-1 .col-name{color:var(--text-secondary)}.task-list-row.depth-2 .col-name{color:var(--text-muted);font-size:.75rem}.chart-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.time-scale{height:var(--row-height);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);flex-shrink:0;overflow:hidden}.chart-body{flex:1;overflow:auto;position:relative}.chart-svg{position:absolute;top:0;left:0}.task-bar{cursor:pointer;transition:filter .15s ease}.task-bar:hover{filter:brightness(1.15)}.task-bar-bg{fill:var(--task-bar);rx:4;ry:4}.task-bar-progress{fill:var(--task-bar-progress);rx:4;ry:4}.task-bar.selected .task-bar-bg{fill:var(--task-bar-selected)}.task-bar.critical .task-bar-bg{fill:var(--critical-color);filter:drop-shadow(0 0 8px var(--critical-glow))}.dependency-line{stroke:var(--text-muted);stroke-width:1.5;fill:none}.dependency-line.critical{stroke:var(--critical-color);stroke-width:2}.dependency-arrow{fill:var(--text-muted)}.dependency-arrow.critical{fill:var(--critical-color)}.dependency-circle{fill:var(--text-muted)}.dependency-circle.critical{fill:var(--critical-color)}.grid-line{stroke:var(--grid-line);stroke-width:1}.grid-line.major{stroke:var(--grid-line-major)}.time-label{font-size:.7rem;fill:var(--text-secondary);font-weight:500}.time-label.major{font-size:.75rem;fill:var(--text-primary);font-weight:600}.resize-handle{cursor:ew-resize;opacity:0;transition:opacity .15s ease}.task-bar:hover .resize-handle{opacity:1}.resize-handle-left,.resize-handle-right{fill:#fff;opacity:.8}.selection-overlay{pointer-events:none;stroke:var(--accent-primary);stroke-width:2;fill:none;stroke-dasharray:4 2}.today-line{stroke:var(--warning-color);stroke-width:2;stroke-dasharray:4 4}
