.logo{display:inline-flex;align-items:center;gap:.5em;min-width:0}.logo-mark{display:block;height:1.35em;width:auto;flex:0 0 auto}.logo-mark__ring{fill:var(--logo-arc);stroke:var(--logo-arc);stroke-width:16;stroke-linejoin:round}.logo-mark__links path{fill:none;stroke:var(--logo-link);stroke-width:9;stroke-linecap:round}.logo-mark__links circle{fill:var(--logo-link)}.logo-mark__bar--one{fill:var(--logo-bar-one)}.logo-mark__bar--two{fill:var(--logo-bar-two)}.logo-mark__bar--three{fill:var(--logo-bar-three)}.logo__wordmark{font-weight:700;font-size:1.05em;letter-spacing:-.015em;color:var(--logo-wordmark);white-space:nowrap}.toolbar{display:flex;flex-wrap:wrap;align-items:center;column-gap:14px;row-gap:4px;flex:0 0 auto;padding:6px 12px;background:var(--surface);border-bottom:1px solid var(--border-strong)}.toolbar__brand{font-size:14px;margin-right:2px}.toolbar__group{display:flex;gap:2px}.toolbar__group--segmented{border:1px solid var(--border-strong);border-radius:5px;overflow:hidden;gap:0}.toolbar__group--segmented .toolbar__button{border-radius:0;border-right:1px solid var(--border)}.toolbar__group--segmented .toolbar__button:last-child{border-right:none}.toolbar__button{padding:4px 9px;border:1px solid transparent;border-radius:5px;background:transparent;cursor:pointer;white-space:nowrap}.toolbar__button:hover:not(:disabled){background:var(--bg);border-color:var(--border-strong)}.toolbar__button--icon{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px}.toolbar__icon{display:block;width:14px;height:14px}.toolbar__button--active{background:var(--accent-soft);color:var(--accent);font-weight:600}.toolbar__button:disabled{color:var(--text-faint);cursor:default}.toolbar__project{flex:1 1 200px;display:flex;align-items:baseline;gap:8px;min-width:0;justify-content:flex-end}.toolbar__project-name{min-width:0;max-width:320px;padding:3px 6px;border:1px solid transparent;border-radius:4px;background:transparent;font-weight:600;text-align:right}.toolbar__project-name:hover{border-color:var(--border-strong);background:var(--bg)}.toolbar__project-name:focus{border-color:var(--accent);background:var(--bg);text-align:left}.toolbar__file{display:flex;align-items:center;gap:5px;color:var(--text-faint);font-size:11px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar__dirty{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:0 0 auto}.status-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:0 0 auto;padding:4px 12px;background:var(--surface);border-top:1px solid var(--border);font-size:11px;color:var(--text-muted);max-height:30vh;overflow:auto}.status-bar--error{background:var(--danger-soft);color:var(--danger)}.status-bar__message{display:flex;align-items:baseline;gap:8px;min-width:0}.status-bar__text--quiet{color:var(--text-faint)}.status-bar__detail{margin:0;font-family:var(--font-numeric);font-size:11px;white-space:pre-wrap;opacity:.9}.status-bar__dismiss{border:none;background:transparent;cursor:pointer;font-size:14px;line-height:1;padding:0 4px}.status-bar__facts{display:flex;gap:14px;white-space:nowrap;flex:0 0 auto}.split-pane{display:flex;height:100%;min-height:0;overflow:hidden}.split-pane__side{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.split-pane__side--fill{flex:1}.split-pane__divider{flex:0 0 5px;cursor:col-resize;background:var(--border);border:none;position:relative;touch-action:none}.split-pane__divider:hover,.split-pane__divider--dragging{background:var(--accent)}.split-pane__divider:after{content:"";position:absolute;inset:0 -3px}.task-grid{display:flex;flex-direction:column;height:100%;min-height:0;border-right:1px solid var(--border);background:var(--bg)}.task-grid__header{flex:0 0 auto;overflow:hidden}.task-grid__body{position:relative;flex:1;min-height:0;overflow:auto;outline:none}.task-grid__drop{position:absolute;left:0;right:0;height:2px;margin-top:-1px;background:var(--accent);pointer-events:none;z-index:2}.task-grid--dragging{cursor:grabbing}.task-grid--resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.task-grid__empty{margin:0;padding:14px 12px;color:var(--text-muted)}.grid-row{display:grid;grid-template-columns:var(--grid-columns);min-width:var(--grid-min-width);align-items:stretch;border-bottom:1px solid var(--border);background:var(--bg)}.grid-row--header{align-items:end;background:var(--surface);border-bottom:1px solid var(--border-strong);font-weight:600;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.grid-row--header .grid-cell{padding-bottom:5px;align-items:flex-end}.grid-row:not(.grid-row--header):hover{background:var(--row-hover)}.grid-row--selected,.grid-row--selected:hover{background:var(--row-selected)}.grid-row--summary{font-weight:600}.grid-cell{display:flex;align-items:center;gap:6px;min-width:0;padding:0 6px;border-right:1px solid var(--border);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:transparent}.grid-cell--number{justify-content:flex-end;color:var(--text-faint);font-family:var(--font-numeric);font-size:11px}.grid-cell--right{justify-content:flex-end;font-family:var(--font-numeric);font-size:12px}.grid-cell--name{padding-right:4px}.grid-cell--derived{color:var(--text-muted)}.grid-cell--predecessors,.grid-cell--mode{font-family:var(--font-numeric);font-size:11px;color:var(--text-muted)}.grid-cell--mode{justify-content:center;border-right:none}.grid-row--dragging,.grid-row--dragging:hover{opacity:.45}.grid-cell--grip{cursor:grab;touch-action:none}.grid-cell--grip:hover{color:var(--text);background:var(--row-hover)}.task-grid--dragging .grid-cell--grip{cursor:grabbing}.grid-resize{position:absolute;top:0;bottom:0;right:-3px;width:7px;cursor:col-resize;touch-action:none;z-index:1}.grid-resize:after{content:"";position:absolute;top:25%;bottom:25%;left:3px;width:1px;background:transparent}.grid-row--header .grid-cell:hover .grid-resize:after,.grid-resize--active:after{background:var(--accent)}.grid-row--header .grid-cell{position:relative}.grid-cell--focused{box-shadow:inset 0 0 0 2px var(--accent);border-radius:2px}.task-grid__body:not(:focus-within) .grid-cell--focused{box-shadow:inset 0 0 0 1px var(--border-strong)}.grid-cell--right{justify-content:flex-end}.grid-row--critical .grid-cell--number{box-shadow:inset 2px 0 0 var(--critical);color:var(--critical)}.task-twisty{flex:0 0 auto;width:12px;height:12px;padding:0;border:none;background:transparent;color:var(--text-faint);font-size:8px;line-height:12px;text-align:center;cursor:pointer}.task-twisty:hover{color:var(--text)}.task-twisty--empty{cursor:default}.grid-cell--button.grid-cell--predecessors,.grid-cell--input.grid-cell--predecessors{font-family:var(--font-numeric);font-size:11px}.grid-cell--name .grid-cell{flex:1;border-right:none;padding:0 2px;min-width:0}.grid-cell--input{flex:1;width:100%;min-width:0;border:1px solid var(--accent);border-radius:2px;padding:0 3px;background:var(--surface-raised)}.grid-cell--input.grid-cell--right{text-align:right}.grid-cell--input:focus{outline:none}button.grid-cell--mode{border:none;font:inherit;font-size:10px;font-weight:600;color:var(--text-faint);cursor:pointer}button.grid-cell--mode:disabled{cursor:default}button.grid-cell--mode-manual{color:var(--accent)}.grid-cell__placeholder{color:var(--text-faint)}.task-marker{flex:0 0 auto;width:8px;height:8px;border-radius:1px}.task-marker--task{background:var(--bar-task)}.task-marker--summary{background:var(--bar-summary);clip-path:polygon(0 0,100% 0,85% 100%,15% 100%)}.task-marker--milestone{background:var(--bar-milestone);transform:rotate(45deg);width:7px;height:7px}.gantt{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg)}.gantt__header{flex:0 0 auto;overflow:hidden;background:var(--surface);border-bottom:1px solid var(--border-strong)}.gantt__header-inner{position:relative;height:100%}.gantt__header-row{position:absolute;left:0;right:0;height:50%}.gantt__header-row--groups{top:0;border-bottom:1px solid var(--border)}.gantt__header-row--columns{bottom:0}.gantt__header-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;gap:3px;padding:0 2px;overflow:hidden;white-space:nowrap;border-right:1px solid var(--border);font-size:11px;color:var(--text-muted)}.gantt__header-cell--group{justify-content:flex-start;padding-left:7px;font-weight:600;color:var(--text);letter-spacing:.01em}.gantt__header-cell--nonworking{background:var(--gantt-nonworking);color:var(--text-faint)}.gantt__header-cell--today{color:var(--today);font-weight:700}.gantt__header-label{font-family:var(--font-numeric)}.gantt__header-sublabel{color:var(--text-faint);font-size:10px}.gantt__body{flex:1;min-height:0;overflow:auto}.gantt__canvas{position:relative}.gantt__row{position:absolute;left:0;right:0;border-bottom:1px solid var(--gantt-gridline)}.gantt__row--selected{background:var(--row-selected);box-shadow:inset 0 0 0 1px var(--row-selected-border)}.gantt__holiday{position:absolute;top:0;bottom:0;background:var(--gantt-holiday)}.gantt__today{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--today);z-index:1;pointer-events:none}.gantt__links{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.gantt-link path{fill:none;stroke:var(--link-line);stroke-width:1}.gantt-link polygon{fill:var(--link-line)}.gantt-link--critical path{stroke:var(--critical)}.gantt-link--critical polygon{fill:var(--critical)}.gantt-baseline{position:absolute;background:var(--bar-baseline);border-radius:1px}.gantt-item{position:absolute;cursor:pointer}.gantt--dragging{cursor:ew-resize}.gantt-item--task{background:var(--bar-task);border:1px solid var(--bar-task-border);border-radius:3px}.gantt-item--manual{border-style:dashed;border-color:var(--text)}.gantt-item--summary{background:var(--bar-summary);border-radius:1px;clip-path:polygon(0 0,100% 0,100% 100%,calc(100% - 6px) 40%,6px 40%,0 100%)}.gantt-item--milestone{background:var(--bar-milestone);transform:rotate(45deg);border-radius:2px}.gantt-item--task.gantt-item--critical{background:var(--bar-critical);border-color:var(--bar-critical-border)}.gantt-item--summary.gantt-item--critical,.gantt-item--milestone.gantt-item--critical{background:var(--critical)}.gantt-item__progress{position:absolute;inset:0 auto 0 0;background:var(--bar-progress);border-radius:2px 0 0 2px;pointer-events:none}.gantt-item__handle{position:absolute;top:-2px;bottom:-2px;width:7px;cursor:ew-resize;opacity:0}.gantt-item__handle--resize{right:-3px}.gantt-item__handle--progress{cursor:col-resize}.gantt-item:hover .gantt-item__handle{opacity:1;background:var(--bar-handle);box-shadow:inset 0 0 0 1px var(--bar-task-border);border-radius:2px}.gantt-item--selected,.gantt-item--milestone.gantt-item--selected{box-shadow:0 0 0 2px var(--accent)}.print-preview{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;background:var(--paper-backdrop)}.print-preview__bar{display:flex;align-items:center;gap:12px;padding:6px 10px;background:var(--surface);border-bottom:1px solid var(--border-strong)}.print-preview__title{font-size:13px}.print-preview__summary{color:var(--text-muted);font-size:12px}.print-preview__actions{margin-left:auto;display:flex;gap:6px}.print-preview__main{flex:1;min-height:0;display:flex}.print-preview__settings{flex:0 0 232px;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:10px;background:var(--bg);border-right:1px solid var(--border);font-size:12px}.print-preview__field{display:flex;flex-direction:column;gap:4px}.print-preview__field--dates{flex-direction:row;gap:8px}.print-preview__label{color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.print-preview__segmented{display:flex;gap:2px}.print-preview__segmented .toolbar__button{flex:1}.print-preview__input{width:100%;min-width:0;padding:3px 5px;border:1px solid var(--border-strong);border-radius:3px;font:inherit;font-family:var(--font-numeric)}.print-preview__toggle{display:flex;align-items:center;gap:6px}.print-preview__fieldset{margin:0;padding:6px 8px 8px;border:1px solid var(--border);border-radius:4px;display:flex;flex-direction:column;gap:3px}.print-preview__fieldset legend{padding:0 4px;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.print-preview__value{color:var(--text-muted);font-family:var(--font-numeric)}.print-preview__sheets{flex:1;min-width:0;overflow:auto;padding:24px;display:flex;justify-content:center}.print-preview__pages{display:flex;flex-direction:column;gap:24px}.print-page{position:relative;overflow:hidden;background:var(--bg);box-shadow:0 1px 6px var(--paper-shadow);color:var(--text);font-family:var(--font-ui);font-size:11px}.print-page__content{position:relative;display:flex;flex-direction:column;overflow:hidden}.print-page__title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border-strong)}.print-page__project{font-size:15px;font-weight:600}.print-page__printed{color:var(--text-muted);font-size:10px}.print-page__body{flex:1;min-height:0;display:flex;overflow:hidden}.print-page__footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);color:var(--text-muted);font-size:10px}.print-table{flex:0 0 auto;border-right:1px solid var(--border-strong)}.print-table__header{display:flex;align-items:flex-end;border-bottom:1px solid var(--border-strong);font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.print-row{display:flex;align-items:center;border-bottom:1px solid var(--border)}.print-row--summary{font-weight:600}.print-row--critical .print-cell--number{color:var(--critical)}.print-cell{flex:0 0 auto;padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.print-cell--number,.print-cell--duration,.print-cell--progress{text-align:right;font-family:var(--font-numeric)}.print-cell--start,.print-cell--finish,.print-cell--predecessors{font-family:var(--font-numeric)}.print-chart{flex:1;min-width:0;overflow:hidden}.print-chart__header{position:relative;overflow:hidden;border-bottom:1px solid var(--border-strong)}.print-chart__header-inner{position:relative;height:100%}.print-chart__group{position:absolute;top:0;height:50%;display:flex;align-items:center;padding-left:4px;overflow:hidden;white-space:nowrap;border-right:1px solid var(--border);font-weight:600;font-size:10px}.print-chart__column{position:absolute;bottom:0;height:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid var(--border);font-family:var(--font-numeric);font-size:9px;color:var(--text-muted)}.print-chart__column--nonworking{background:var(--gantt-nonworking)}.print-chart__canvas{position:relative;overflow:hidden}.print-chart__scroll{position:relative}.print-chart__row{position:absolute;left:0;right:0;border-bottom:1px solid var(--gantt-gridline)}.print-chart__today{position:absolute;top:0;bottom:0;width:1px;background:var(--today)}.print-chart__links{position:absolute;top:0;left:0}.print-link path{fill:none;stroke:var(--link-line);stroke-width:.8}.print-link polygon{fill:var(--link-line)}.print-link--critical path{stroke:var(--critical)}.print-link--critical polygon{fill:var(--critical)}.print-bar{position:absolute}.print-bar--task{height:12px;background:var(--bar-task);border:1px solid var(--bar-task-border);border-radius:2px;overflow:hidden}.print-bar--manual{border-style:dashed}.print-bar--task.print-bar--critical{background:var(--bar-critical);border-color:var(--bar-critical-border)}.print-bar__progress{height:100%;background:var(--bar-progress)}.print-bar--summary{height:8px;background:var(--bar-summary);clip-path:polygon(0 0,100% 0,100% 100%,calc(100% - 5px) 40%,5px 40%,0 100%)}.print-bar--milestone{width:10px;height:10px;background:var(--bar-milestone);transform:rotate(45deg)}.print-bar--milestone.print-bar--critical,.print-bar--summary.print-bar--critical{background:var(--critical)}.print-bar__baseline{position:absolute;height:3px;background:var(--bar-baseline)}@media print{.app,.print-preview__chrome{display:none!important}.print-preview{position:static;background:#fff}.print-preview__main,.print-preview__sheets{display:block;overflow:visible;padding:0}.print-preview__pages{display:block;transform:none!important;width:auto!important}.print-page{box-shadow:none;break-after:page;page-break-after:always}.print-page:last-child{break-after:auto;page-break-after:auto}}:root,.print-page{color-scheme:light;--font-ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-numeric: ui-monospace, "Cascadia Mono", "Segoe UI Mono", Menlo, Consolas, monospace;--bg: #ffffff;--surface: #f7f8fa;--surface-raised: #ffffff;--border: #e3e6eb;--border-strong: #ccd2db;--text: #16191d;--text-muted: #6a7280;--text-faint: #99a1ad;--accent: #2f6feb;--accent-soft: #e8f0fe;--danger: #c0392b;--danger-soft: #fdecea;--row-hover: #f4f6f9;--row-selected: #e8f0fe;--row-selected-border: #b7cdf7;--bar-task: #5b8def;--bar-task-border: #3c6fd0;--bar-summary: #444b56;--bar-milestone: #7c5cd6;--bar-progress: rgba(255, 255, 255, .55);--bar-handle: rgba(255, 255, 255, .35);--bar-baseline: #b6bcc7;--critical: #c0392b;--bar-critical: #d9614f;--bar-critical-border: #b8412e;--link-line: #97a0ae;--gantt-nonworking: #f1f3f7;--gantt-gridline: #edeff3;--gantt-holiday: rgba(192, 57, 43, .09);--today: #d94436;--paper-backdrop: #eceef2;--paper-shadow: rgba(15, 20, 30, .2);--logo-arc: #1f4ef5;--logo-bar-one: #1f4ef5;--logo-bar-two: #10c9a5;--logo-bar-three: #8c4cf2;--logo-link: #e2e7f0;--logo-wordmark: #0f1b33;--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}:root[data-theme=dark]{color-scheme:dark;--bg: #14171c;--surface: #1a1e25;--surface-raised: #232831;--border: #2a3039;--border-strong: #3b434f;--text: #e6e9ef;--text-muted: #98a1af;--text-faint: #6c7583;--accent: #6c9bff;--accent-soft: #1e2b45;--danger: #ff8f7e;--danger-soft: #3a1f1c;--row-hover: #1c212a;--row-selected: #1e2b45;--row-selected-border: #34507f;--bar-task: #4f7fe0;--bar-task-border: #82a8f5;--bar-summary: #aeb7c4;--bar-milestone: #9b78ee;--bar-progress: rgba(255, 255, 255, .45);--bar-handle: rgba(255, 255, 255, .3);--bar-baseline: #5a6270;--critical: #ff7f6b;--bar-critical: #d0594a;--bar-critical-border: #ff9d8d;--link-line: #6f7986;--gantt-nonworking: #191d24;--gantt-gridline: #21262e;--gantt-holiday: rgba(255, 127, 107, .1);--today: #ff6a55;--paper-backdrop: #0e1013;--paper-shadow: rgba(0, 0, 0, .55);--logo-link: #39414e;--logo-wordmark: #ffffff}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);font-size:13px;line-height:1.4;color:var(--text);background:var(--bg);overflow:hidden;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring)}.app{display:flex;flex-direction:column;height:100%;min-height:0}.app__workspace{flex:1;min-height:0;outline:none}
