.gantt-wrapper{display:flex;height:100%;width:100%;overflow:hidden;background-color:var(--card-bg);-webkit-user-select:none;user-select:none}.category-sidebar{width:250px;min-width:250px;border-right:1px solid var(--border-color);display:flex;flex-direction:column;background-color:var(--card-bg);z-index:2;box-shadow:2px 0 5px #00000005}.sidebar-header{height:40px;display:flex;align-items:center;padding:0 16px;border-bottom:2px solid var(--border-color);background-color:var(--secondary)}.sidebar-header h3{font-size:.85rem;font-weight:600;color:var(--text-muted)}.category-list{flex:1;overflow-y:auto}.category-item{height:50px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--border-color);gap:8px;transition:var(--transition)}.category-item:hover{background-color:var(--bg-color)}.category-item.dragging{opacity:.5;background-color:var(--bg-color)}.drag-handle{color:var(--text-muted);cursor:grab;display:flex;align-items:center}.drag-handle:active{cursor:grabbing}.category-name{flex:1;font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.icon-btn:hover{background-color:var(--border-color);color:var(--text-main)}.icon-btn.delete:hover{color:#ef4444;background-color:#fef2f2}.add-category{padding:12px;border-top:1px solid var(--border-color);display:flex;gap:8px}.input-small{flex:1;padding:6px 8px;font-size:.85rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-color);color:var(--text-main)}.input-small:focus{outline:none;border-color:var(--primary)}.gantt-main{flex:1;display:flex;flex-direction:column;overflow:auto;position:relative}.gantt-header{display:flex;height:40px;position:sticky;top:0;background-color:var(--secondary);border-bottom:2px solid var(--border-color);z-index:1}.gantt-header-cell{width:50px;min-width:50px;display:flex;align-items:center;justify-content:center;border-right:1px solid var(--border-color);font-size:.8rem;font-weight:600;color:var(--text-muted)}.gantt-body{position:relative;display:flex;flex-direction:column}.gantt-row{display:flex;height:50px;border-bottom:1px dashed var(--border-color);position:relative}.gantt-row{display:grid;grid-template-columns:repeat(20,50px)}.gantt-cell{width:50px;height:100%;border-right:1px solid var(--grid-border);cursor:crosshair;transition:background-color .1s}.gantt-cell:hover{background-color:#3b82f60d}.gantt-cell.drawing{background-color:#3b82f633}.task-bar{margin:6px 2px;height:38px;background:linear-gradient(135deg,var(--task-bg),var(--primary));border-radius:var(--radius-sm);color:#fff;font-size:.8rem;display:flex;align-items:center;justify-content:space-between;padding:0 8px;box-shadow:var(--shadow-sm);z-index:10;overflow:hidden;transition:transform .2s,box-shadow .2s;cursor:pointer;white-space:nowrap}.task-bar:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);filter:brightness(1.05)}.task-bar>span{flex:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.task-bar input{width:100%;background:#fff;border:1px solid var(--primary-hover);border-radius:2px;padding:2px 4px;font-size:.8rem;color:#1e293b;outline:none}.del-task{background:none;border:none;color:#ffffffb3;font-size:1rem;line-height:1;cursor:pointer;margin-left:4px}.del-task:hover{color:#fff}:root{--bg-color: #f8fafc;--text-main: #1e293b;--text-muted: #64748b;--primary: #3b82f6;--primary-hover: #2563eb;--secondary: #e2e8f0;--secondary-hover: #cbd5e1;--accent: #10b981;--border-color: #cbd5e1;--card-bg: #ffffff;--grid-border: #e2e8f0;--grid-bg: #ffffff;--grid-bg-weekend: #f1f5f9;--task-bg: #60a5fa;--task-border: #3b82f6;--task-handle: #1d4ed8;--font-family: "Inter", "Roboto", "Helvetica Neue", "Arial Nova", "Yu Gothic", sans-serif;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--transition: all .2s cubic-bezier(.4, 0, .2, 1)}@media(prefers-color-scheme:dark){:root{--bg-color: #0f172a;--text-main: #f8fafc;--text-muted: #94a3b8;--primary: #3b82f6;--primary-hover: #60a5fa;--secondary: #334155;--secondary-hover: #475569;--border-color: #334155;--card-bg: #1e293b;--grid-border: #334155;--grid-bg: #1e293b;--grid-bg-weekend: #0f172a}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-color);color:var(--text-main);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;border-radius:var(--radius-md);font-weight:500;cursor:pointer;border:none;transition:var(--transition);font-size:.9rem}.btn-primary{background-color:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background-color:var(--primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background-color:var(--secondary);color:var(--text-main)}.btn-secondary:hover{background-color:var(--secondary-hover)}.input{padding:8px 12px;border-radius:var(--radius-md);border:1px solid var(--border-color);background-color:var(--card-bg);color:var(--text-main);transition:var(--transition);font-size:.9rem}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #3b82f633}.app-header{background-color:var(--card-bg);border-bottom:1px solid var(--border-color);padding:16px 24px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm);z-index:10}.app-title{font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:12px;color:var(--text-main)}.app-main{flex:1;display:flex;flex-direction:column;padding:24px;gap:20px;overflow:hidden}.panel{background-color:var(--card-bg);border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);padding:20px}.toolbar{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.toolbar-group{display:flex;flex-direction:column;gap:6px}.toolbar-label{font-size:.8rem;color:var(--text-muted);font-weight:600}
