.gantt .grid-background{fill:none}.gantt .grid-header{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}.gantt .grid-row{fill:#fff}.gantt .grid-row:nth-child(2n){fill:#f5f5f5}.gantt .row-line{stroke:#ebeff2}.gantt .tick{stroke:#e0e0e0;stroke-width:.2}.gantt .tick.thick{stroke-width:.4}.gantt .today-highlight{fill:#fcf8e3;opacity:.5}.gantt .arrow{fill:none;stroke:#666;stroke-width:1.4}.gantt .bar{fill:#b8c2cc;stroke:#8d99a6;stroke-width:0;transition:stroke-width .3s ease;-webkit-user-select:none;user-select:none}.gantt .bar-progress{fill:#a3a3ff}.gantt .bar-invalid{fill:transparent;stroke:#8d99a6;stroke-width:1;stroke-dasharray:5}.gantt .bar-invalid~.bar-label{fill:#555}.gantt .bar-label{fill:#fff;dominant-baseline:central;text-anchor:middle;font-size:12px;font-weight:lighter}.gantt .bar-label.big{fill:#555;text-anchor:start}.gantt .handle{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden;transition:opacity .3s ease}.gantt .bar-wrapper{cursor:pointer;outline:none}.gantt .bar-wrapper:hover .bar{fill:#a9b5c1}.gantt .bar-wrapper:hover .bar-progress{fill:#8a8aff}.gantt .bar-wrapper:hover .handle{visibility:visible;opacity:1}.gantt .bar-wrapper.active .bar{fill:#a9b5c1}.gantt .bar-wrapper.active .bar-progress{fill:#8a8aff}.gantt .lower-text,.gantt .upper-text{font-size:12px;text-anchor:middle}.gantt .upper-text{fill:#555}.gantt .lower-text{fill:#333}.gantt .hide{display:none}.gantt-container{position:relative;overflow:auto;font-size:12px}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:#000c;padding:0;color:#959da5;border-radius:3px}.gantt-container .popup-wrapper .title{border-bottom:3px solid #a3a3ff;padding:10px}.gantt-container .popup-wrapper .subtitle{padding:10px;color:#dfe2e5}.gantt-container .popup-wrapper .pointer{position:absolute;height:5px;margin:0 0 0 -5px;border:5px solid transparent;border-top-color:#000c}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--fg: #1f2328;--muted: #656d76;--border: #d0d7de;--accent: #0969da;--accent-soft: #ddf4ff;--success: #1f883d;--crit: #cf222e;--bg-soft: #f6f8fa;--header-bg: #1f2328;--header-fg: #ffffff;--header-border: #424a53;--radius: 6px;--shadow-sm: 0 1px 0 rgba(31, 35, 40, .04);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:var(--fg);color-scheme:light}body{margin:0;padding:0;font-size:14px;line-height:1.5;color:var(--fg);background:#fff}.connect,.picker{max-width:28rem;margin:6rem auto;text-align:center}button{font:inherit;font-weight:500;padding:.34rem .8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);color:var(--fg);cursor:pointer;box-shadow:var(--shadow-sm);transition:background .12s ease,border-color .12s ease}button:hover{background:#eef1f4;border-color:#afb8c1}button:disabled{opacity:.55;cursor:default}button.is-active{border-color:var(--accent);color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn-primary{background:var(--success);border-color:#1f232826;color:#fff}.btn-primary:hover{background:#1a7f37;border-color:#1f232826}.btn-ghost{background:transparent;border-color:transparent;box-shadow:none}.btn-ghost:hover{background:var(--bg-soft);border-color:var(--border)}.app__header .btn-ghost{color:var(--header-fg)}.app__header .btn-ghost:hover{background:#ffffff1a;border-color:#ffffff40}.app__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 1.5rem;background:var(--header-bg);color:var(--header-fg);border-bottom:1px solid var(--header-border)}.app__header h1{color:var(--header-fg)}.app__header .project-title{color:#b1bac4;border-left-color:var(--header-border)}.app__brand{display:flex;align-items:center;gap:.85rem}.app__logo{width:1.6rem;height:1.6rem;border-radius:5px;display:block}.connect__logo{width:4rem;height:4rem;border-radius:12px;margin-bottom:.5rem}.app__header h1{font-size:1.05rem;margin:0}.app__actions{display:flex;gap:.4rem}.tabbar{display:flex;gap:.25rem;padding:0 1.5rem;border-bottom:1px solid var(--border);background:#fff}.tab{border:none;background:none;border-radius:6px 6px 0 0;padding:.6rem .95rem;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--muted);box-shadow:none}.tab:hover{background:var(--bg-soft);color:var(--fg)}.tab.is-active:hover{background:none}.tab.is-active{color:var(--fg);font-weight:600;border-bottom-color:var(--accent)}.app__main{padding:1.5rem}small{color:var(--muted);font-weight:400}.note{color:var(--muted);font-size:.9rem}.grid{border-collapse:collapse;width:100%;max-width:48rem}.grid th,.grid td{text-align:left;padding:.45rem .75rem;border-bottom:1px solid var(--border)}.grid thead th{font-size:.8rem;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);border-bottom:2px solid var(--border)}.grid tr.is-critical td{color:var(--crit);font-weight:600}.evm-chart{width:100%;max-width:48rem;margin-bottom:1rem}.evm__cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:.75rem;max-width:48rem}.card{border:1px solid var(--border);border-radius:8px;padding:.75rem;background:#fff;text-align:left;cursor:pointer}.card:hover{border-color:var(--accent)}.card__label{color:var(--muted);font-size:.8rem}.card__value{font-size:1.4rem;font-weight:600}.error{color:var(--crit)}.project-title{color:var(--muted);padding-left:.85rem;border-left:1px solid var(--border)}.picker__subhead{margin:1.25rem 0 .4rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}.project-list{list-style:none;padding:0;display:grid;gap:.5rem}.project-list button{width:100%;text-align:left}.design__toolbar{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.design__toolbar h2{margin:0}.design__filters{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.filter{display:inline-flex;align-items:center;gap:.35rem;font-size:.9rem;color:var(--muted)}.filter select{font:inherit;padding:.2rem .4rem;border:1px solid var(--border);border-radius:6px}.design__table{max-width:none}.design__table input,.design__table select{font:inherit;padding:.25rem .4rem;border:1px solid var(--border);border-radius:6px}.design__table input.num{width:3.5rem}.design__table input[type=date]{width:8.5rem}.chips select{width:5.5rem}.chip__text{display:inline-block;max-width:7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.design__table tr.is-dirty td{background:#fff8c5}.link-cell{background:none;border:none;padding:0;font:inherit;color:var(--accent);text-align:left;cursor:pointer}.link-cell:hover{text-decoration:underline}.design__table tr.is-selected td{background:#ddf4ff}.design__table tr.is-predecessor td{background:#f0f7ff}.design__table tr.is-dependent td{background:#eefbf2}.design__table tr.is-predecessor td:first-child{box-shadow:inset 4px 0 #0969da}.design__table tr.is-dependent td:first-child{box-shadow:inset 4px 0 #1f883d}.design__table tr.is-selected td:first-child{box-shadow:inset 4px 0 #8250df}.chips{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center}.chip{display:inline-flex;align-items:center;gap:.2rem;padding:.1rem .4rem;font-size:.8rem;background:var(--bg-soft);border:1px solid var(--border);border-radius:999px}.chip button{border:none;background:none;padding:0 .1rem;cursor:pointer;font-size:.9rem;line-height:1}.resource__person{max-width:48rem;margin-bottom:1rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px}.resource__person h3{margin:0 0 .5rem}.resource__list{margin:0;padding-left:1.5rem;display:grid;gap:.3rem}.resource__list li{display:flex;justify-content:space-between;gap:1rem;cursor:grab;border-radius:6px;padding:.1rem .3rem}.resource__list li:hover{background:var(--bg-soft)}.resource__list li.is-critical .resource__title{color:var(--crit);font-weight:600}.resource__dates{color:var(--muted);white-space:nowrap}.rtimeline{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;max-width:100%}.rtimeline__names{flex:0 0 9rem;border-right:1px solid var(--border);background:var(--bg-soft)}.rtimeline__corner{height:24px;border-bottom:1px solid var(--border)}.rname{height:34px;display:flex;align-items:center;padding:0 .6rem;border-bottom:1px solid var(--border);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rtimeline__scroll{flex:1;overflow-x:auto}.rtimeline__axis{position:relative;height:24px;border-bottom:1px solid var(--border)}.rtick{position:absolute;top:0;height:24px;line-height:24px;padding-left:3px;border-left:1px solid var(--border);font-size:.7rem;color:var(--muted);white-space:nowrap}.rlane{position:relative;height:34px;border-bottom:1px solid var(--border);background-image:repeating-linear-gradient(90deg,transparent 0,transparent 111px,var(--border) 111px,var(--border) 112px)}.rblock{position:absolute;top:6px;height:22px;line-height:22px;padding:0 .4rem;border-radius:4px;background:var(--accent);color:#fff;font-size:.75rem;white-space:nowrap;overflow:hidden;cursor:grab}.rblock.is-critical{background:var(--crit)}.deps__canvas{overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);max-height:70vh}.deps__node{cursor:pointer}.deps__node rect{fill:#fff;stroke:var(--border)}.deps__node rect.is-selected{fill:#ddf4ff;stroke:var(--accent);stroke-width:2}.deps__node:hover rect{stroke:var(--accent)}.deps__node text{font-size:12px;fill:var(--fg);pointer-events:none}.deps__add{margin-top:.5rem;font:inherit;padding:.3rem .4rem;border:1px solid var(--border);border-radius:6px;width:100%}.init-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;margin-bottom:1rem;border:1px solid #d4a72c;background:#fff8c5;border-radius:8px}.init-banner button{white-space:nowrap}.gantt__toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.view-modes{display:flex;align-items:center;gap:.25rem}.seg-label{font-size:.85rem;color:var(--muted);margin:0 .15rem 0 .5rem}.gantt__container{overflow-x:auto}.popup-wrapper{display:none!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:10px;width:min(28rem,92vw);max-height:90vh;overflow:auto;padding:1rem 1.25rem;box-shadow:0 8px 32px #00000040}.modal__header{display:flex;align-items:center;justify-content:space-between}.modal__header h3{margin:0}.modal__body{display:grid;gap:.6rem;margin:.75rem 0}.field{display:grid;grid-template-columns:9rem 1fr;align-items:center;gap:.5rem}.field__label{color:var(--muted);font-size:.9rem}.field input,.field select{font:inherit;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px}.modal__footer{display:flex;justify-content:flex-end;gap:.5rem}.import-preview{max-height:14rem;overflow:auto;border:1px solid var(--border);border-radius:6px}.import-preview table{width:100%;border-collapse:collapse;font-size:.85rem}.import-preview th,.import-preview td{text-align:left;padding:.3rem .5rem;border-bottom:1px solid var(--border);vertical-align:top}.import-preview .note{margin:.4rem .5rem}.import-error{white-space:pre-wrap}.gantt .bar-critical .bar{fill:#cf222e}.gantt .bar-slipped .bar{fill:#a40e26}.gantt .bar-atrisk .bar{fill:#bf8700}.gantt .bar-actual .bar{fill:#1f883d}.gantt .actual-overlay{fill:#1f883d;opacity:.9}
