.gantt-page{flex-direction:column;height:100%;display:flex;overflow:hidden}.gantt-loading{color:var(--color-text-muted);font-size:var(--text-body);padding:48px}.gantt-no-data{flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100%;padding:48px;display:flex}.gantt-no-data__text{color:var(--color-text-muted);font-size:var(--text-lg);margin:0}.gantt-no-data__cta{background:var(--color-primary);color:var(--color-surface);border-radius:var(--radius-lg);font-size:var(--text-body);cursor:pointer;transition:background var(--transition-fast);border:none;padding:8px 20px;font-family:inherit;font-weight:500}.gantt-no-data__cta:hover{background:var(--color-primary-dark)}.gantt-undated-notice{background:var(--color-warning-bg,#fef3c7);color:var(--color-warning-text,#92400e);border-radius:var(--radius-md,6px);font-size:var(--text-sm,13px);margin:0 20px 8px;padding:8px 14px}.gantt-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px 10px;display:flex}.gantt-header__title{font-size:var(--text-xl);color:var(--color-text-primary);letter-spacing:-.01em;margin:0;font-weight:600}.gantt-to-kanban-btn{font-size:var(--text-md);color:var(--color-primary);background:var(--color-primary-light);border:1px solid var(--color-primary-border);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast);padding:5px 14px;font-family:inherit;font-weight:500}.gantt-to-kanban-btn:hover{background:var(--color-primary-border)}.gantt-grid{flex:1;display:flex;overflow:hidden}.gantt-label-panel{border-right:1px solid var(--color-border);background:var(--color-surface);flex-direction:column;flex-shrink:0;width:260px;transition:width .12s;display:flex;position:relative;overflow:hidden}.gantt-label-panel[data-dragging="1"]{transition:none}.gantt-label-divider{cursor:col-resize;z-index:2;-webkit-user-select:none;user-select:none;background:0 0;width:6px;position:absolute;top:0;bottom:0;right:-3px}.gantt-label-divider:after{content:"";width:3px;transition:background var(--transition-fast);background:0 0;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.gantt-label-divider:hover:after{background:var(--color-primary-border)}.gantt-label-divider[data-dragging="1"]:after{background:var(--color-primary)}.gantt-grid[data-col-dragging="1"] .gantt-row-label:hover,.gantt-grid[data-col-dragging="1"] .gantt-group-label:hover{background:inherit}.gantt-label-panel__header{border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);flex-shrink:0;height:42px}.gantt-label-panel__body{flex:1;overflow:hidden auto}.gantt-svg-panel{flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.gantt-svg-panel__header{border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);scrollbar-width:none;-ms-overflow-style:none;flex-shrink:0;position:relative;overflow:auto hidden}.gantt-svg-panel__header::-webkit-scrollbar{display:none}.gantt-svg-panel__body{flex:1;position:relative;overflow:auto}.gantt-row-label{height:32px;font-size:var(--text-base);color:var(--color-text-primary);border-bottom:1px solid var(--color-hover);white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;cursor:default;align-items:center;padding:0 8px;display:flex;overflow:hidden}.gantt-row-label:hover{background:var(--color-surface-alt)}.gantt-row-label--indented{font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;background:#fafbfc;padding-left:28px}.gantt-row-label--indented:hover{background:#e6eef7}.gantt-row-label--indented:focus-visible{outline:2px solid var(--color-primary,#2563eb);outline-offset:-2px}.gantt-row-label__badge{flex-shrink:0;align-items:center;margin-right:4px;font-size:12px;line-height:1;display:inline-flex}.gantt-row-label__chevron{width:12px;color:var(--color-text-muted);text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;margin-right:4px;font-size:9px;line-height:1}.gantt-row-label__chevron:focus-visible{outline:2px solid var(--color-primary,#2563eb);outline-offset:1px;border-radius:2px}.gantt-row-label__chevron--spacer{cursor:default}.gantt-row-label--undated{color:var(--color-text-muted,#8892a0);font-style:italic}.gantt-row-label--undated:hover{color:var(--color-text-secondary,#5a6472)}.gantt-row-label__badge--undated{color:var(--color-text-muted,#8892a0);justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.gantt-row-label__badge--undated svg{display:block}.gantt-group-label{height:32px;font-size:var(--text-base);color:var(--color-text-primary);border-bottom:1px solid var(--color-border);background:var(--color-surface-alt);cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box;align-items:center;gap:6px;padding:0 8px;font-weight:600;display:flex;overflow:hidden}.gantt-group-label:hover{background:var(--color-hover)}.gantt-group-label__toggle{color:var(--color-text-muted);text-align:center;flex-shrink:0;width:12px;font-size:9px;line-height:1}.gantt-group-label__dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.gantt-group-label__name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.gantt-group-label__count{color:var(--color-text-muted);flex-shrink:0;font-size:10px;font-weight:400}.gantt-group-label--empty{opacity:.7;font-style:italic}.gantt-group-label__undated{color:var(--color-warning,#f59e0b);font-weight:500}.gantt-svg{display:block}.gantt-column-header-cell{fill:var(--color-text-secondary);font-family:inherit;font-size:10px}.gantt-column-header-cell--sub{fill:var(--color-text-muted,#888);letter-spacing:.3px;font-size:9px;font-weight:400}.gantt-today-chip{background:var(--color-bg);border:1px solid var(--color-border);height:28px;color:var(--color-text);cursor:pointer;white-space:nowrap;border-radius:14px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.gantt-today-chip:hover{border-color:var(--color-accent,#22c55e);background:#22c55e1a}.gantt-today-chip__icon{font-size:12px;line-height:1}.gantt-icon-btn{border:1px solid var(--color-border);background:var(--color-bg);width:28px;height:28px;color:var(--color-text);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex;position:relative}.gantt-icon-btn:hover:not(:disabled){background:var(--color-bg-muted);border-color:var(--color-accent,#22c55e)}.gantt-icon-btn--active{background:var(--color-accent,#22c55e);border-color:var(--color-accent,#22c55e);color:#fff}.gantt-icon-btn--active:hover{background:var(--color-accent,#22c55e);color:#fff}.gantt-icon-btn:disabled{opacity:.45;cursor:not-allowed}.gantt-icon-btn svg{display:block}.gantt-icon-toggle-group{border-radius:4px;gap:0;display:inline-flex;overflow:hidden}.gantt-icon-toggle-group .gantt-icon-btn{border-right-width:0;border-radius:0}.gantt-icon-toggle-group .gantt-icon-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-icon-toggle-group .gantt-icon-btn:last-child{border-right-width:1px;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-icon-btn__counter{color:#fff;text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;background:#ef4444;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:-6px;right:-6px}.gantt-shortcuts-popover-wrap{position:relative}.gantt-shortcuts-popover{z-index:50;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;min-width:320px;padding:12px 14px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 12px #0000001f}.gantt-shortcuts-popover__title{color:var(--color-text);border-bottom:1px solid var(--color-border);margin-bottom:8px;padding-bottom:6px;font-size:13px;font-weight:700}.gantt-shortcuts-popover__list{grid-template-columns:auto 1fr;gap:4px 10px;margin:0;display:grid}.gantt-shortcuts-popover__list dt{white-space:nowrap;align-items:center;gap:3px;font-size:11px;display:inline-flex}.gantt-shortcuts-popover__list dd{color:var(--color-text-muted);margin:0;font-size:11px}.gantt-shortcuts-popover__list kbd{background:var(--color-bg-muted);border:1px solid var(--color-border);min-width:16px;color:var(--color-text);text-align:center;border-bottom-width:2px;border-radius:3px;padding:1px 5px;font-family:monospace;font-size:10px;font-weight:700;display:inline-block}.gantt-shortcuts-popover__list em{color:var(--color-text-muted);font-size:10px;font-style:italic}.gantt-ccpm-settings-wrap{position:relative}.gantt-ccpm-settings-popover{z-index:50;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;min-width:360px;padding:12px 14px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 12px #0000001f}.gantt-ccpm-settings-popover__title{color:var(--color-text);border-bottom:1px solid var(--color-border);margin-bottom:8px;padding-bottom:6px;font-size:13px;font-weight:700}.gantt-ccpm-settings-popover__group{border:0;margin:0 0 10px;padding:0;display:block}.gantt-ccpm-settings-popover__group:last-child{margin-bottom:0}.gantt-ccpm-settings-popover__group legend{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 4px;padding:0;font-size:11px;font-weight:700}.gantt-ccpm-settings-popover__group label{cursor:pointer;border-radius:4px;align-items:flex-start;gap:8px;padding:5px 6px;display:flex}.gantt-ccpm-settings-popover__group label:hover{background:var(--color-bg-muted)}.gantt-ccpm-settings-popover__group input[type=radio]{flex-shrink:0;margin-top:3px}.gantt-ccpm-settings-popover__group label>span{flex-direction:column;gap:2px;display:flex}.gantt-ccpm-settings-popover__group strong{color:var(--color-text);font-size:12px;font-weight:600}.gantt-ccpm-settings-popover__group em{color:var(--color-text-muted);font-size:10px;font-style:italic;line-height:1.35}.gantt-group-label__overload{color:#92400e;font-variant-numeric:tabular-nums;white-space:nowrap;background:#eab30833;border:1px solid #eab30873;border-radius:9px;align-items:center;gap:2px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-flex}.gantt-bar__resize-handle{transition:fill-opacity .15s}.gantt-bar__resize-handle:hover{fill-opacity:.9!important}.gantt-connect-handle{fill:var(--color-primary,#2563eb);stroke:var(--color-surface,#fff);stroke-width:1.5px;opacity:0;cursor:crosshair;pointer-events:all;transition:opacity .12s}.gantt-bar-group:hover .gantt-connect-handle,.gantt-connect-handle:hover{opacity:1}.gantt-bar--dep-drag-target{stroke:#0ea5e9;stroke-width:2.5px;opacity:1}.gantt-dep-create-banner{align-items:center;gap:var(--space-2,8px);background:var(--color-danger-bg,#fee2e2);color:var(--color-danger,#b91c1c);border:1px solid var(--color-danger,#b91c1c);border-radius:var(--radius-md,6px);font-size:var(--text-sm,13px);margin:0 20px 8px;padding:8px 14px;display:flex}.gantt-dep-create-banner__message{flex:auto}.gantt-dep-create-banner__close{appearance:none;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 6px;font-size:18px;line-height:1}.gantt-dep-create-banner__close:hover{background:#00000014}.gantt-svg-panel__body{position:relative}.gantt-resize-ghost__line{stroke:#f97316;stroke-width:2px;stroke-dasharray:4 3}.gantt-resize-ghost__label-bg{fill:#f97316}.gantt-resize-ghost__label-text{fill:#fff;font-family:monospace;font-size:11px;font-weight:700}.gantt-resize-ghost[data-clamped="1"] .gantt-resize-ghost__line{stroke:#dc2626}.gantt-resize-ghost[data-clamped="1"] .gantt-resize-ghost__label-bg{fill:#dc2626}.gantt-baseline-modal-backdrop{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.gantt-baseline-modal{background:var(--color-bg);border:1px solid var(--color-border);width:min(540px,90vw);max-height:80vh;color:var(--color-text);border-radius:8px;overflow:auto;box-shadow:0 8px 32px #00000040}.gantt-baseline-modal__header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.gantt-baseline-modal__title{margin:0;font-size:14px;font-weight:600}.gantt-baseline-modal__close{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.gantt-baseline-modal__section{border-bottom:1px solid var(--color-border);padding:12px 16px}.gantt-baseline-modal__section:last-child{border-bottom:none}.gantt-baseline-modal__field{flex-direction:column;gap:4px;font-size:12px;display:flex}.gantt-baseline-modal__field input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:4px;padding:6px 8px}.gantt-baseline-modal__save-btn{background:var(--color-accent,#22c55e);color:#fff;cursor:pointer;border:none;border-radius:4px;margin-top:8px;padding:6px 12px;font-size:12px;font-weight:500}.gantt-baseline-modal__save-btn:disabled{opacity:.4;cursor:not-allowed}.gantt-baseline-modal__list-label{color:var(--color-text-muted);margin-bottom:8px;font-size:11px}.gantt-baseline-modal__empty,.gantt-baseline-modal__loading{color:var(--color-text-muted);padding:8px 0;font-size:12px}.gantt-baseline-modal__list{margin:0;padding:0;list-style:none}.gantt-baseline-modal__item{border-radius:4px;align-items:center;gap:4px;padding:4px 0;display:flex}.gantt-baseline-modal__item--active{background:#22c55e1a}.gantt-baseline-modal__activate{cursor:pointer;color:var(--color-text);text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.gantt-baseline-modal__activate:hover{background:var(--color-bg-muted)}.gantt-baseline-modal__radio{color:var(--color-accent,#22c55e);width:14px;font-size:14px}.gantt-baseline-modal__name{font-weight:500}.gantt-baseline-modal__date{color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10px}.gantt-baseline-modal__actions{gap:2px;padding-right:4px;display:inline-flex}.gantt-baseline-modal__action-btn{cursor:pointer;width:24px;height:24px;color:var(--color-text-muted);background:0 0;border:none;border-radius:3px;padding:0;font-size:12px}.gantt-baseline-modal__action-btn:hover{background:var(--color-bg-muted);color:var(--color-text)}.gantt-baseline-modal__action-btn--danger:hover{color:#ef4444;background:#ef444426}.gantt-minimap{z-index:40;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:4px;position:fixed;bottom:20px;right:20px;overflow:hidden;box-shadow:0 2px 8px #00000026}.gantt-minimap--collapsed{cursor:pointer;color:var(--color-text-muted);border:1px solid var(--color-border);padding:6px;display:inline-flex}.gantt-minimap--collapsed:hover{color:var(--color-accent,#22c55e);border-color:var(--color-accent,#22c55e)}.gantt-minimap__collapse-btn{cursor:pointer;width:18px;height:18px;color:var(--color-text-muted);z-index:1;background:0 0;border:none;padding:0;font-size:14px;line-height:1;position:absolute;top:0;right:0}.gantt-minimap__collapse-btn:hover{color:var(--color-text)}.gantt-minimap__zoom-controls{border-top:1px solid var(--color-border,#e5e7eb);justify-content:center;align-items:center;gap:4px;margin-top:4px;padding:4px 6px 6px;display:flex}.gantt-minimap__zoom-btn,.gantt-minimap__zoom-reset{font:inherit;border:1px solid var(--color-border,#d1d5db);background:var(--color-surface,#fff);min-width:24px;color:var(--color-text,#111827);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:4px;padding:2px 8px;line-height:1.2}.gantt-minimap__zoom-reset{font-variant-numeric:tabular-nums;min-width:56px}.gantt-minimap__zoom-btn:hover,.gantt-minimap__zoom-reset:hover{border-color:var(--color-primary,#2563eb);color:var(--color-primary,#2563eb)}.gantt-minimap__zoom-btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}@media print{.gantt-minimap,.gantt-fever-panel{display:none}}.gantt-bar--ccpm-chain{stroke:#06b6d4;stroke-width:2.5px}.gantt-ccpm-empty-banner{z-index:45;color:#78350f;background:#eab30826;border:1px solid #d97706;border-radius:6px;max-width:320px;padding:10px 14px;font-size:12px;line-height:1.4;position:fixed;top:90px;right:20px;box-shadow:0 2px 8px #0000001a}.gantt-sticky-year{z-index:5;color:var(--color-text-muted,#888);background:var(--color-bg);border:1px solid var(--color-border);pointer-events:none;font-variant-numeric:tabular-nums;opacity:.85;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:700;position:absolute;top:2px;left:2px}.gantt-sticky-year:empty{display:none}.gantt-shortcuts-popover__note{border-top:1px solid var(--color-border);color:var(--color-text-muted);margin-top:10px;padding-top:8px;font-size:10px;line-height:1.4}.gantt-shortcuts-popover__note strong{color:var(--color-text)}.gantt-baseline-modal__save-btn--saving{opacity:.7;cursor:progress!important}.gantt-fever-panel{z-index:45;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);border-radius:6px;padding:8px 12px;position:fixed;bottom:20px;left:240px;box-shadow:0 4px 16px #0000002e}.gantt-fever-panel__header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.gantt-fever-panel__title{margin:0;font-size:12px;font-weight:700}.gantt-fever-panel__close{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;font-size:16px;line-height:1}.gantt-fever-panel__stats{color:var(--color-text);flex-direction:column;gap:2px;font-size:10px;display:flex}.gantt-fever-panel__zone{text-align:center;border-radius:3px;margin-top:4px;padding:3px 6px;font-size:10px;font-weight:600}.gantt-fever-panel__zone--green{color:#14532d;background:#22c55e40}.gantt-fever-panel__zone--yellow{color:#78350f;background:#eab30840}.gantt-fever-panel__zone--red{color:#7f1d1d;background:#ef444440}.gantt-grid-line{stroke:var(--color-border);stroke-width:1px}.gantt-weekend-bg{fill:var(--color-surface-alt)}.gantt-today-line{stroke:#e53e3e;stroke-width:2px;stroke-dasharray:4 3}.gantt-bar-rect{rx:3;ry:3}.gantt-milestone-diamond{cursor:default}.gantt-milestone-diamond--upcoming{fill:#94a3b8}.gantt-milestone-diamond--at-risk{fill:#f59e0b}.gantt-milestone-diamond--achieved{fill:#22c55e}.gantt-milestone-diamond--missed{fill:#ef4444}.gantt-milestone-label-text{fill:var(--color-text-primary);pointer-events:none;font-family:inherit;font-size:10px}.gantt-milestone-legend{border-top:1px solid var(--color-border);background:var(--color-surface-alt);font-size:var(--text-sm);color:var(--color-text-secondary);flex-shrink:0;align-items:center;gap:16px;padding:6px 12px;display:flex}.gantt-milestone-legend__title{color:var(--color-text-primary);margin-right:4px;font-weight:600}.gantt-milestone-legend__item{align-items:center;gap:5px;display:flex}.gantt-milestone-legend__diamond{border-radius:1px;width:10px;height:10px;display:inline-block;transform:rotate(45deg)}.gantt-milestone-legend__diamond--upcoming{background:#94a3b8}.gantt-milestone-legend__diamond--at-risk{background:#f59e0b}.gantt-milestone-legend__diamond--achieved{background:#22c55e}.gantt-milestone-legend__diamond--missed{background:#ef4444}:root{--gantt-dep-default:#64748b;--gantt-dep-broken:#b91c1c;--gantt-dep-critical:#d97706}.gantt-dep-arrow{fill:none;color:var(--gantt-dep-default);stroke:var(--gantt-dep-default);stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.gantt-dep-arrow--group{stroke-dasharray:6 3;opacity:.7}.gantt-dep-arrow--broken{color:var(--gantt-dep-broken);stroke:var(--gantt-dep-broken);stroke-width:2px}.gantt-dep-arrow--critical{color:var(--gantt-dep-critical);stroke:var(--gantt-dep-critical);stroke-width:2px}.gantt-bar--critical{stroke:#e53e3e;stroke-width:2px;filter:drop-shadow(0 0 3px #e53e3e66)}.gantt-header__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.gantt-baseline-toggle-btn{font-size:var(--text-md);color:var(--color-text-secondary);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);padding:5px 14px;font-family:inherit;font-weight:500}.gantt-baseline-toggle-btn:hover{background:var(--color-hover)}.gantt-baseline-toggle-btn--active{color:var(--color-primary-dark);background:var(--color-primary-light);border-color:var(--color-primary-border)}.gantt-bar--delayed{stroke:#f59e0b;stroke-width:2px}.gantt-bar--divergent{stroke:#dc2626;stroke-width:2px;stroke-dasharray:4 3}.gantt-nav-btn{font-size:var(--text-md);color:var(--color-text-secondary);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);padding:5px 12px;font-family:inherit;font-weight:500}.gantt-nav-btn:hover{background:var(--color-hover)}.gantt-nav-btn:disabled{opacity:.4;cursor:default}@keyframes gantt-today-pulse{0%{stroke-width:2px;opacity:1}50%{stroke-width:5px;opacity:.6}to{stroke-width:2px;opacity:1}}.gantt-today-line--pulse{animation:1s ease-in-out gantt-today-pulse}.gantt-zoom-control{border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-shrink:0;display:flex;overflow:hidden}.gantt-zoom-btn{font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--color-surface-alt);border:none;border-right:1px solid var(--color-border);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);padding:4px 12px;font-family:inherit;font-weight:500}.gantt-zoom-btn:last-child{border-right:none}.gantt-zoom-btn:hover{background:var(--color-hover)}.gantt-zoom-btn--active{color:var(--color-primary-dark);background:var(--color-primary-light)}.gantt-filter-bar{background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:6px 20px;display:flex}.gantt-filter-select{font-size:var(--text-sm);border:1px solid var(--color-border);border-radius:var(--radius-md,6px);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer;min-width:120px;padding:4px 8px;font-family:inherit}.gantt-filter-select:focus{outline:2px solid var(--color-primary-border);outline-offset:-1px}.gantt-filter-label{font-size:var(--text-sm);color:var(--color-text-muted);flex-shrink:0}.gantt-filter-badge{color:#fff;background:var(--color-primary);border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.gantt-filter-reset-btn{font-size:var(--text-sm);color:var(--color-primary);border:1px solid var(--color-primary-border);border-radius:var(--radius-md,6px);cursor:pointer;transition:background var(--transition-fast);background:0 0;padding:3px 10px;font-family:inherit;font-weight:500}.gantt-filter-reset-btn:hover{background:var(--color-primary-light)}.gantt-filter-no-results{height:200px;color:var(--color-text-muted);font-size:var(--text-body);justify-content:center;align-items:center;display:flex}.gantt-date-range{border-left:1px solid var(--color-border);align-items:center;gap:8px;margin-left:8px;padding-left:8px;display:flex}.gantt-date-range__label{font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:4px;display:flex}.gantt-date-range__input{font-size:var(--text-sm);border:1px solid var(--color-border);border-radius:var(--radius-md,6px);background:var(--color-surface);color:var(--color-text-primary);width:130px;padding:3px 6px;font-family:inherit}.gantt-date-range__input:focus{outline:2px solid var(--color-primary-border);outline-offset:-1px}.gantt-print-footer{display:none}.gantt-page .modal-backdrop{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.gantt-page .modal-content{background:var(--color-surface);border-radius:var(--radius-2xl,12px);box-shadow:var(--shadow-lg,0 20px 60px #00000040);flex-direction:column;width:100%;max-width:480px;max-height:90vh;display:flex;overflow-y:auto}.gantt-page .modal-content--full{max-width:960px}.gantt-page .modal-header{border-bottom:1px solid var(--color-border);padding:20px 24px 12px}.gantt-page .modal-header__title{color:var(--color-text-primary);margin:0;font-size:18px;font-weight:600}.gantt-page .modal-footer{border-top:1px solid var(--color-border);align-items:center;gap:8px;padding:12px 24px 20px;display:flex}.gantt-milestone-edit__body{flex-direction:column;gap:14px;padding:16px 24px;display:flex}.gantt-milestone-edit__field{flex-direction:column;gap:6px;display:flex}.gantt-milestone-edit__field>span{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.02em;font-size:12px;font-weight:600}.gantt-milestone-edit__field input,.gantt-milestone-edit__field select{border:1px solid var(--color-border);border-radius:var(--radius-md,6px);background:var(--color-surface);color:var(--color-text-primary);padding:8px 10px;font-family:inherit;font-size:14px}.gantt-milestone-edit__field input:focus,.gantt-milestone-edit__field select:focus{border-color:var(--color-primary,#3182ce);outline:none;box-shadow:0 0 0 3px #3182ce26}.gantt-milestone-edit__error{color:#dc2626;border-radius:var(--radius-md,6px);background:#dc262614;padding:8px 12px;font-size:13px}.gantt-milestone-edit__footer-spacer{flex:1}.gantt-page .btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);border-radius:var(--radius-md,6px);cursor:pointer;transition:background var(--transition-fast,.12s), opacity .12s;padding:8px 14px;font-family:inherit;font-size:14px;font-weight:500}.gantt-page .btn:disabled{cursor:not-allowed;opacity:.45}.gantt-page .btn:hover:not(:disabled){background:var(--color-hover,#f1f5f9)}.gantt-page .btn--primary{background:var(--color-primary,#3182ce);color:#fff;border-color:var(--color-primary,#3182ce)}.gantt-page .btn--primary:hover:not(:disabled){background:var(--color-primary-dark,#2563eb)}.gantt-page .btn--danger{color:#991b1b;background:#fee2e2;border-color:#fecaca}.gantt-page .btn--danger:hover:not(:disabled){background:#fecaca}.gantt-milestone-edit{width:92vw;max-width:560px!important}.gantt-milestone-edit__status-preview{border:1px solid var(--color-border);border-radius:var(--radius-md,6px);background:var(--color-surface);align-items:center;gap:8px;padding:8px 12px;font-size:14px;display:flex}.gantt-milestone-edit__status-diamond{background:#94a3b8;width:10px;height:10px;display:inline-block;transform:rotate(45deg)}.gantt-milestone-edit__status-preview--upcoming .gantt-milestone-edit__status-diamond{background:#94a3b8}.gantt-milestone-edit__status-preview--at-risk .gantt-milestone-edit__status-diamond{background:#f59e0b}.gantt-milestone-edit__status-preview--achieved .gantt-milestone-edit__status-diamond{background:#16a34a}.gantt-milestone-edit__status-preview--missed .gantt-milestone-edit__status-diamond{background:#dc2626}.gantt-milestone-edit__status-hint{color:var(--color-text-muted);margin-left:auto;font-size:12px}.gantt-milestone-edit__tasks-count{color:var(--color-text-muted);font-weight:400}.gantt-milestone-edit__task-filter{border:1px solid var(--color-border);border-radius:var(--radius-md,6px);width:100%;margin-bottom:6px;padding:6px 10px;font-family:inherit;font-size:13px}.gantt-milestone-edit__task-filter:focus{border-color:var(--color-primary,#3182ce);outline:none;box-shadow:0 0 0 3px #3182ce26}.gantt-milestone-edit__task-list{border:1px solid var(--color-border);border-radius:var(--radius-md,6px);background:var(--color-surface);max-height:240px;overflow-y:auto}.gantt-milestone-edit__task-empty{text-align:center;color:var(--color-text-muted);padding:16px;font-size:13px}.gantt-milestone-edit__task-row{border-bottom:1px solid var(--color-border-subtle,#f1f5f9);cursor:pointer;grid-template-columns:20px 70px 1fr auto;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:grid}.gantt-milestone-edit__task-row:last-child{border-bottom:none}.gantt-milestone-edit__task-row:hover{background:var(--color-hover,#f1f5f9)}.gantt-milestone-edit__task-row--checked{background:#3182ce14}.gantt-milestone-edit__task-row--checked:hover{background:#3182ce24}.gantt-milestone-edit__task-id{color:var(--color-text-muted);font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px;font-weight:500}.gantt-milestone-edit__task-title{color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gantt-milestone-edit__task-status{background:var(--color-bg-subtle,#f1f5f9);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.02em;border-radius:3px;padding:2px 6px;font-size:11px;font-weight:500}.gantt-milestone-edit__task-status--done{color:#166534;background:#dcfce7}.gantt-milestone-edit__task-status--in-progress{color:#1e40af;background:#dbeafe}.gantt-milestone-edit__task-status--blocked{color:#991b1b;background:#fee2e2}.gantt-milestone-edit__task-status--waiting-for-data,.gantt-milestone-edit__task-status--waiting-for-review{color:#92400e;background:#fef3c7}@page{size:landscape;margin:10mm}@media print{.gantt-to-kanban-btn,.gantt-baseline-toggle-btn,.gantt-nav-btn,.gantt-zoom-control,.gantt-date-range,.gantt-filter-bar,.gantt-header__controls{display:none!important}.gantt-svg-panel__body,.gantt-label-panel__body,.gantt-grid{overflow:visible}.gantt-page{height:auto;overflow:visible}.gantt-label-panel,.gantt-svg-panel{overflow:visible}.gantt-page{background:#fff}.gantt-header{border-bottom:2px solid #333}.gantt-group-label{page-break-inside:avoid}.gantt-undated-notice{display:none}.gantt-print-footer{font-size:var(--text-sm);color:var(--color-text-muted);border-top:1px solid var(--color-border);text-align:right;padding:8px 20px;display:block}}
