:root{--bg:#fff;--bg-subtle:#f6f7f9;--bg-head:#eef1f5;--border:#dce1e8;--border-strong:#c3cad5;--text:#1d2330;--muted:#667085;--accent:#2f6fd6;--accent-text:#fff;--critical:#d64545;--near:#d48a12;--normal:#4a7bd0;--phase:#3d4451;--ok:#2e8a55;--nonworking:#f0f2f5;--selected:#2f6fd61c;--today:#2f80ed;--float:#9aa4b2;--link:#7b8494;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root{--bg:#15181e;--bg-subtle:#1b1f26;--bg-head:#20252d;--border:#2d333d;--border-strong:#3c4350;--text:#e5e8ee;--muted:#98a1b0;--accent:#5b8ff0;--critical:#ef6464;--near:#e9a43a;--normal:#6b97e6;--phase:#b9c1ce;--ok:#4cbb7c;--nonworking:#1c2027;--selected:#5b8ff029;--float:#6c7584;--link:#8a93a3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--border-strong);background:var(--bg-subtle);cursor:pointer;border-radius:6px;padding:5px 11px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.danger{background:var(--critical);border-color:var(--critical);color:#fff}.link-button{color:var(--accent);background:0 0;border:none;padding:4px 6px}input[type=date],input[type=number],select{border:1px solid var(--border-strong);background:var(--bg);border-radius:6px;padding:4px 6px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.muted{color:var(--muted)}.small{font-size:12px}.critical-text{color:var(--critical);font-weight:600}.near-text{color:var(--near);font-weight:600}.ok-text{color:var(--ok)}.late-text{color:var(--critical);font-weight:600}.visually-hidden{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.page{max-width:880px;margin:0 auto;padding:32px 16px}.page h1{margin:0 0 16px}.plan-list{border-collapse:collapse;width:100%;margin-top:16px}.plan-list th,.plan-list td{text-align:left;border-bottom:1px solid var(--border);padding:10px 8px}.plan-list th{color:var(--muted);font-weight:500}.plan-list a{color:var(--accent);font-weight:600;text-decoration:none}.plan-list .actions{text-align:right;white-space:nowrap}.plan-list .owner{overflow-wrap:anywhere}@media (width<=520px){.plan-list .saved{display:none}}.list-heading{margin:28px 0 0;font-size:16px}.list-heading+p{margin-top:8px}.banner{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;margin:0;padding:8px 14px;display:flex}.banner.warning{background:color-mix(in srgb, var(--near) 14%, var(--bg))}.banner.error{background:color-mix(in srgb, var(--critical) 14%, var(--bg))}.banner.info{background:color-mix(in srgb, var(--accent) 12%, var(--bg))}.editor{flex-direction:column;height:100vh;display:flex}.topbar,.toolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:8px 14px;display:flex}.topbar{border-bottom:1px solid var(--border)}.toolbar{border-bottom:1px solid var(--border);background:var(--bg-subtle)}.page .toolbar{background:0 0;border:none;padding:0}.toolbar-gap{width:12px}.segmented{display:inline-flex}.segmented button{border-radius:0;margin-left:-1px}.segmented button:first-child{border-radius:6px 0 0 6px;margin-left:0}.segmented button:last-child{border-radius:0 6px 6px 0}.segmented button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text);position:relative}.plan-name input{background:0 0;border:1px solid #0000;border-radius:6px;min-width:320px;padding:3px 6px;font-size:18px;font-weight:600}.plan-name input:hover,.plan-name input:focus{border-color:var(--border-strong)}.save-state{color:var(--muted);margin-left:auto}.save-state.dirty{color:var(--near);font-weight:600}.summary{color:var(--muted)}.legend{color:var(--muted);align-items:center;gap:5px;margin-left:auto;font-size:12px;display:inline-flex}.swatch{border-radius:2px;width:14px;height:8px;margin-left:8px;display:inline-block}.swatch.critical{background:var(--critical)}.swatch.near{background:var(--near)}.swatch.normal{background:var(--normal)}.workspace{flex:1;min-height:0;display:flex;position:relative}.gantt-scroller{flex:1;overflow:auto}.gantt-sheet{min-width:100%}.gantt-head{z-index:3;background:var(--bg-head);border-bottom:1px solid var(--border-strong);display:flex;position:sticky;top:0}.grid-head{z-index:4;background:var(--bg-head);border-right:1px solid var(--border-strong);color:var(--muted);flex:none;align-items:end;padding-bottom:8px;font-size:12px;font-weight:600;display:grid;position:sticky;left:0}.grid-head>div{padding:0 6px}.gantt-body{align-items:flex-start;display:flex}.pane-left{z-index:2;background:var(--bg);border-right:1px solid var(--border-strong);flex:none;position:sticky;left:0}.pane-right{flex:none}.task-grid{background:var(--bg)}.grid-empty{color:var(--muted);padding:16px}.grid-row{border-bottom:1px solid var(--border);align-items:center;display:grid}.grid-row>div{white-space:nowrap;min-width:0;padding:0 6px}.grid-row>.computed,.grid-row>.col-row{text-overflow:ellipsis;overflow:hidden}.grid-row .col-name{align-items:center;gap:4px;display:flex}.grid-row.selected{background:var(--selected)}.grid-row.phase{font-weight:650}.grid-row.phase .computed{font-weight:400}.grid-row.critical .col-row{box-shadow:inset 3px 0 0 var(--critical)}.col-row{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}.computed{color:var(--muted);font-variant-numeric:tabular-nums}.col-float.critical{color:var(--critical);font-weight:600}.col-float.near{color:var(--near);font-weight:600}.milestone-icon{color:var(--muted);font-size:11px}.toggle,.toggle-space{flex:none;width:18px}.toggle{color:var(--muted);background:0 0;border:none;padding:0;font-size:12px;line-height:1}.toggle:hover{color:var(--text)}.commit-input.read-only{text-overflow:ellipsis;padding:3px 4px;overflow:hidden}.row-issue{color:#fff;background:var(--near);cursor:help;border-radius:50%;flex:none;place-items:center;width:16px;height:16px;font-size:11px;font-weight:700;display:inline-grid}.row-issue.error{background:var(--critical)}.commit-input{flex:1;min-width:0;display:block;position:relative}.commit-input input{width:100%;font-weight:inherit;background:0 0;border:1px solid #0000;border-radius:4px;padding:3px 4px}.grid-row:hover .commit-input input:not(:focus):not([aria-invalid]){border-color:var(--border)}.commit-input input:focus{border-color:var(--accent);background:var(--bg)}.commit-input input[aria-invalid]{border-color:var(--critical)}.cell-error{z-index:10;white-space:normal;background:var(--critical);color:#fff;border-radius:6px;width:max-content;max-width:280px;padding:6px 8px;font-size:12px;font-weight:400;position:absolute;top:calc(100% + 2px);left:0;box-shadow:0 4px 12px #0003}.timescale,.chart{flex:none;display:block}.timescale text{fill:var(--muted);font-size:11px}.timescale .month-label{fill:var(--text);font-size:12px;font-weight:600}.timescale .day-label.centred{text-anchor:middle}.timescale .day-label.monday{fill:var(--text);font-weight:600}.month-line,.header-rule{stroke:var(--border-strong)}.nonworking{fill:var(--nonworking)}.week-line{stroke:var(--border)}.selected-row{fill:var(--selected)}.today{stroke:var(--today);stroke-width:1.5px;stroke-dasharray:4 3}.bar-group{cursor:grab;outline:none}.bar-group:focus-visible .task-bar,.bar-group:focus-visible .milestone,.bar-group:focus-visible .phase{stroke:var(--accent);stroke-width:2.5px}.chart.dragging-move,.chart.dragging-move .bar-group{cursor:grabbing}.chart.dragging-resize,.chart.dragging-resize .bar-group{cursor:ew-resize}.chart.dragging-link,.chart.dragging-link .bar-group{cursor:crosshair}.resize-handle{fill:#0000;cursor:ew-resize}.link-handle{fill:var(--bg);stroke:var(--accent);stroke-width:1.5px;cursor:crosshair;opacity:0;transition:opacity .12s}.bar-group:hover .link-handle,.bar-group.selected .link-handle,.bar-group:focus-visible .link-handle{opacity:1}.drag-ghost{fill:color-mix(in srgb, var(--accent) 25%, transparent);stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:4 2}.drag-label{fill:var(--text);paint-order:stroke;stroke:var(--bg);stroke-width:3px;font-size:11px;font-weight:600}.link-preview{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 3;pointer-events:none}.drop-target{fill:color-mix(in srgb, var(--accent) 16%, transparent)}.task-bar,.milestone{fill:var(--normal)}.bar-group.near .task-bar,.bar-group.near .milestone{fill:var(--near)}.bar-group.critical .task-bar,.bar-group.critical .milestone{fill:var(--critical)}.phase{fill:var(--phase)}.bar-group.critical .phase{fill:color-mix(in srgb, var(--critical) 70%, var(--phase))}.progress-fill{fill:#00000047;pointer-events:none}.phase-progress{fill:var(--ok);pointer-events:none}.baseline-bar,.baseline-milestone{fill:var(--float);opacity:.8}.float-tail{stroke:var(--float);stroke-width:2px;stroke-dasharray:2 3}.milestone-label{fill:var(--muted);font-size:11px}.deadline{fill:var(--ok)}.deadline.missed{fill:var(--critical)}.link{fill:none;stroke:var(--link);stroke-width:1.2px}.link.critical{stroke:var(--critical);stroke-width:1.6px}.arrowhead.normal path{fill:var(--link)}.arrowhead.critical path{fill:var(--critical)}.bottom{border-top:1px solid var(--border-strong);flex:none;grid-template-columns:minmax(0,1fr) minmax(0,1fr);height:220px;display:grid}.panel{padding:10px 14px;overflow:auto}.panel+.panel{border-left:1px solid var(--border)}.panel h2{margin:0 0 8px;font-size:14px}.kind{color:var(--muted);text-transform:capitalize;font-size:12px;font-weight:400}.facts{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0 0 10px;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:0}.field-row{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:8px;display:flex}.panel label{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.panel label.inline{color:var(--text);flex-direction:row;align-items:center;margin-right:10px;display:inline-flex}.issue-list{margin:0;padding:0;list-style:none}.issue-list li{border-left:3px solid var(--border-strong);margin-bottom:4px}.issue-list li.error{border-color:var(--critical)}.issue-list li.warning{border-color:var(--near)}.issue-list button{text-align:left;background:0 0;border:none;border-radius:0;gap:8px;width:100%;padding:4px 8px;display:flex}.issue-list button:hover:not(:disabled){background:var(--selected)}.issue-list button:disabled{opacity:1}.issue-list.compact li{padding:3px 8px;font-size:13px}.issue-icon{text-align:center;width:14px;color:var(--muted);flex:none;font-weight:700}.error .issue-icon{color:var(--critical)}.warning .issue-icon{color:var(--near)}.settings{z-index:20;background:var(--bg);border:1px solid var(--border-strong);border-radius:10px;flex-direction:column;gap:12px;width:320px;max-height:calc(100% - 16px);display:flex;position:absolute;top:8px;right:8px;box-shadow:0 10px 30px #0003}.settings-head{justify-content:space-between;align-items:center;display:flex}.settings h2{margin:0}.settings fieldset{border:1px solid var(--border);border-radius:8px;margin:0;padding:8px 10px}.settings legend{color:var(--muted);padding:0 4px;font-size:12px}.days-off{margin:0 0 6px;padding:0;list-style:none}.days-off li{justify-content:space-between;align-items:center;display:flex}@media (width<=900px){.bottom{grid-template-columns:1fr;height:260px}.panel+.panel{border-left:none;border-top:1px solid var(--border)}.plan-name input{min-width:0}.legend{display:none}}.workload-grid,.workload-chart{border-top:2px solid var(--border-strong)}.workload-head{background:var(--bg-head);align-items:center;padding:0 10px;font-weight:600;display:flex}.workload-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:0 10px 0 40px;font-size:13px;display:flex}.workload-empty{color:var(--muted);margin:0;padding:4px 10px;font-size:12px}.workload-chart{display:block}.workload-band{fill:var(--bg-head)}.load{fill:color-mix(in srgb, var(--normal) 55%, transparent)}.load.over{fill:var(--critical)}.load-count{fill:#fff;text-anchor:middle;pointer-events:none;font-size:11px;font-weight:700}.popover{display:inline-block;position:relative}.popover-panel{z-index:30;background:var(--bg);border:1px solid var(--border-strong);border-radius:10px;min-width:240px;padding:10px 12px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 10px 30px #0003}.menu-list{border:none;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.menu-list legend{color:var(--muted);margin-bottom:4px;font-size:12px}.menu-list label.inline{align-items:center;gap:6px;display:flex}.menu-list p{margin:0}.confirm{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.people-list{margin:0 0 6px;padding:0;list-style:none}.people-list li{align-items:center;gap:6px;display:flex}.people-list .commit-input input{border-color:var(--border)}.panel label.narrow{width:80px}.panel label.wide{flex:1;min-width:160px}.panel label .commit-input input{border-color:var(--border-strong);color:var(--text)}.import-preview{border:1px solid var(--border-strong);background:var(--bg-subtle);border-radius:10px;margin:16px 0;padding:12px 16px}.import-preview h2{margin:0 0 6px;font-size:15px}.print-sheet{display:none}@media print{@page{size:landscape;margin:10mm}.editor{height:auto}.editor>:not(.print-sheet){display:none!important}.print-sheet{display:block}.print-sheet img{width:100%;height:auto;display:block}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.sign-in{max-width:520px}.sign-in input[type=email],.people-list input,.settings input[type=text]{border:1px solid var(--border-strong);background:var(--bg);border-radius:6px;padding:6px 8px}.sign-in input[type=email]{flex:1;min-width:220px}.plan-title{margin:0;font-size:18px}.share-menu{width:min(400px,100vw - 32px)}.menu-heading{margin:4px 0 0;font-size:13px}.menu-heading:not(:first-child){border-top:1px solid var(--border);padding-top:10px}.member-list{margin:0;padding:0;list-style:none}.member-list li{align-items:center;gap:6px;min-height:32px;display:flex}.member-email{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.field-row.middle{align-items:center}.invite-form{align-items:center;margin:4px 0 0}.invite-form input[type=email]{border:1px solid var(--border-strong);background:var(--bg);border-radius:6px;flex:1;min-width:160px;padding:5px 8px}.share-url{border:1px solid var(--border-strong);background:var(--bg-subtle);border-radius:6px;flex:1;padding:4px 6px;font-size:12px}
