*,:after,:before{box-sizing:border-box}body,html{height:100%;margin:0}body.gantt-app{background:#f8fafc;color:#1e293b;display:flex;flex-direction:column;font-family:Inter,-apple-system,system-ui,Segoe UI,Roboto,sans-serif;height:100vh;overflow:hidden}.gantt-app [hidden]{display:none!important}button{font-family:inherit}.gantt-topbar{align-items:center;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;flex:0 0 auto;gap:.75rem;height:52px;padding:0 1rem}.gantt-logo{align-items:center;display:inline-flex}.gantt-topbar h1{font-size:1.05rem;font-weight:700;letter-spacing:-.2px;margin:0}.gantt-iconbtn{background:#fff;border:1px solid #cbd5e1;border-radius:50%;color:#64748b;cursor:pointer;font-size:.8rem;font-style:italic;font-weight:700;height:24px;line-height:1;width:24px}.gantt-iconbtn:hover{background:#f1f5f9;color:#334155}.gantt-spacer{flex:1 1 auto}.gantt-toplink{color:#475569;font-size:.9rem;text-decoration:none}.gantt-toplink:hover{color:#1e293b}.gantt-cta{background:#4f46e5;border-radius:8px;color:#fff;font-size:.85rem;font-weight:600;padding:.45rem .85rem;text-decoration:none}.gantt-cta:hover{background:#4338ca}.gantt-toolbar{align-items:center;background:#f1f5f9;border-bottom:1px solid #e2e8f0;display:flex;flex:0 0 auto;gap:.4rem;padding:.4rem .75rem}.gantt-tb-group{display:inline-flex;gap:.25rem}.gantt-tb-sep{background:#cbd5e1;height:22px;margin:0 .35rem;width:1px}.gantt-tb-btn{background:#fff;border:1px solid #d8dee6;border-radius:7px;color:#334155;cursor:pointer;font-size:.85rem;padding:.4rem .7rem;transition:background .12s,border-color .12s,color .12s}.gantt-tb-btn:hover{background:#eef2f7;border-color:#c2cbd6}.gantt-tb-btn.icon{font-weight:600;padding:.4rem 0;text-align:center;width:32px}.gantt-tb-btn.primary{background:#4f46e5;border-color:#4f46e5;color:#fff}.gantt-tb-btn.primary:hover{background:#4338ca;border-color:#4338ca}.gantt-tb-btn.danger{border-color:#fecaca;color:#b91c1c}.gantt-tb-btn.danger:hover{background:#fef2f2}.gantt-tb-btn.gantt-btn-confirm{background:#dc2626;border-color:#dc2626;color:#fff}.gantt-tb-dropdown{display:inline-block;position:relative}.gantt-menu{background:#fff;border:1px solid #d8dee6;border-radius:9px;box-shadow:0 10px 28px rgba(15,23,42,.14);display:flex;flex-direction:column;left:0;min-width:220px;padding:.25rem;position:absolute;top:calc(100% + 4px);z-index:50}.gantt-menu button{background:transparent;border:none;border-radius:6px;color:#334155;cursor:pointer;font-size:.85rem;padding:.55rem .65rem;text-align:left}.gantt-menu button:hover{background:#f1f5f9}.gantt-message{background:#ecfdf5;border-bottom:1px solid #a7f3d0;color:#065f46;flex:0 0 auto;font-size:.9rem;padding:.55rem 1rem}.gantt-message.is-error{background:#fef2f2;border-bottom-color:#fecaca;color:#991b1b}.gantt-empty{align-items:center;color:#64748b;display:flex;flex:1 1 auto;justify-content:center;text-align:center}.gantt-empty p{margin:0 0 1rem}.gantt-empty-actions{align-items:center;display:flex;flex-direction:column;gap:.6rem;margin-top:.5rem}.gantt-board{background:#fff;border-top:1px solid #e2e8f0;display:grid;flex:1 1 auto;grid-template-columns:240px 1fr;grid-template-rows:46px 1fr;min-height:0}.gantt-corner{align-items:center;background:#f8fafc;border-right:1px solid #e2e8f0;color:#475569;display:flex;font-size:.82rem;font-weight:600;grid-column:1;padding:0 .9rem;z-index:3}.gantt-axis-vp,.gantt-corner{border-bottom:1px solid #e2e8f0;grid-row:1}.gantt-axis-vp{background:#fff;grid-column:2;overflow:hidden}.gantt-labels-vp{background:#f8fafc;border-right:1px solid #e2e8f0;grid-column:1;grid-row:2;overflow:hidden}.gantt-canvas{cursor:crosshair;grid-column:2;grid-row:2;overflow:auto;scrollbar-color:#94a3b8 #eef2f6;scrollbar-width:auto}.gantt-canvas::-webkit-scrollbar{height:16px;width:16px}.gantt-canvas::-webkit-scrollbar-track{background:#eef2f6}.gantt-canvas::-webkit-scrollbar-thumb{background:#94a3b8;border:3px solid #eef2f6;border-radius:8px}.gantt-canvas::-webkit-scrollbar-thumb:hover{background:#64748b}.gantt-canvas::-webkit-scrollbar-corner{background:#eef2f6}.gantt-svg{display:block}.gantt-label-row{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;gap:.5rem;padding:0 .75rem}.gantt-label-color{border-radius:3px;flex:0 0 auto;height:10px;width:10px}.gantt-label-name{flex:1 1 auto;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-label-pct{color:#94a3b8;flex:0 0 auto;font-size:.76rem}.gantt-label-actions{display:flex;flex:0 0 auto;gap:.1rem}.gantt-row-btn{background:transparent;border:none;border-radius:5px;color:#94a3b8;cursor:pointer;font-size:.88rem;line-height:1;padding:.25rem}.gantt-row-btn:hover{background:#e2e8f0;color:#334155}.gantt-label-empty .gantt-label-hint{color:#64748b;font-size:.8rem;font-style:italic;font-weight:500}.gantt-bar{cursor:grab}.gantt-bar:active{cursor:grabbing}.gantt-handle{cursor:ew-resize;fill:transparent}.gantt-bar-label{font-family:inherit;user-select:none}.gantt-create-ghost{fill:#4f46e5;fill-opacity:.2;pointer-events:none;stroke:#4f46e5;stroke-dasharray:4 3}.gantt-cursor rect,.gantt-cursor-handle,.gantt-cursor-handle rect{cursor:ew-resize}.gantt-bar-group.is-active .gantt-bar{stroke:#4f46e5;stroke-width:1.5}.gantt-label-row.is-active{background:#4f46e5}.gantt-label-row.is-active .gantt-label-name{color:#fff;font-weight:600}.gantt-label-row.is-active .gantt-label-pct,.gantt-label-row.is-active .gantt-row-btn{color:#c7d2fe}.gantt-label-row.is-active .gantt-row-btn:hover{background:hsla(0,0%,100%,.2);color:#fff}.gantt-label-row[data-id]{cursor:grab}.gantt-label-row[data-id]:active{cursor:grabbing}.gantt-label-row.is-dragging{background:#e0e7ff;opacity:.55}.gantt-modal-backdrop{align-items:center;background:rgba(15,23,42,.45);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:1000}.gantt-modal{background:#fff;border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.25);max-height:90vh;max-width:440px;overflow-y:auto;padding:1.5rem;width:100%}.gantt-modal.gantt-modal-wide{max-width:640px}.gantt-modal h2{font-size:1.2rem;margin:0 0 1rem}.gantt-modal p{color:#475569;font-size:.92rem;line-height:1.6;margin:0 0 .8rem}.gantt-modal label{color:#475569;display:block;font-size:.85rem;font-weight:600;margin-bottom:1rem}.gantt-modal label.gantt-check{align-items:center;display:flex;font-weight:500;gap:.5rem}.gantt-modal label.gantt-check input{margin:0;width:auto}.gantt-modal input[type=date],.gantt-modal input[type=text],.gantt-modal select{border:1px solid #d8dee6;border-radius:8px;color:#1e293b;display:block;font:inherit;font-weight:400;margin-top:.35rem;padding:.55rem .65rem;width:100%}.gantt-modal input[type=range]{margin-top:.4rem;width:100%}.gantt-modal small{color:#94a3b8;display:block;font-weight:400;margin-top:.3rem}.gantt-field-row{display:flex;gap:.75rem}.gantt-field-row label{flex:1}.gantt-modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}@media (max-width:640px){.gantt-board{grid-template-columns:150px 1fr}.gantt-label-actions{display:none}.gantt-topbar h1{font-size:.95rem}.gantt-cta{display:none}}