:root{--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--dur-fast:.14s;--dur:.24s;--dur-slow:.42s;--radius-sm:6px;--radius:10px;--radius-lg:14px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5fa;--surface:#fff;--surface-2:#f6f7fb;--surface-raised:#fff;--border:#e5e7ef;--border-strong:#d2d6e2;--text:#191d2b;--text-muted:#5b6276;--text-faint:#9ca2b5;--accent:#5b5bf7;--accent-hover:#4a4ae6;--accent-soft:#5b5bf71f;--accent-text:#fff;--danger:#e5484d;--danger-soft:#e5484d1f;--success:#22a55a;--warning:#f59e0b;--warning-soft:#f59e0b40;--grid-line:#eef0f5;--grid-line-strong:#e1e4ec;--weekend:#1e295009;--section-band:#1e295006;--row-hover:#5b5bf70b;--row-selected:#5b5bf717;--today:#e5484d;--bar-label:#fff;--editor-active-line:#5b5bf70d;--editor-selection:#5b5bf72e;--shadow-sm:0 1px 2px #1418280f;--shadow:0 2px 8px #14182814, 0 1px 2px #1418280d;--shadow-lg:0 12px 32px #14182824, 0 2px 6px #1418280f;--overlay:#0f121e47;--dep-color:#8f96ab;--scroll-thumb:#46506e47;--scroll-thumb-hover:#46506e80;--sprint-band:#5b5bf709;--sprint-line:#5b5bf759;--syn-keyword:#7c3aed;--syn-heading:#191d2b;--syn-name:#191d2b;--syn-owner:#0d9488;--syn-tag:#db2777;--syn-status:#ea580c;--syn-color:#b45309;--syn-number:#2563eb;--syn-ref:#6d28d9;--syn-comment:#9ca2b5;--syn-invalid:#e5484d}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0f15;--surface:#14171f;--surface-2:#181b25;--surface-raised:#1d2130;--border:#262b3b;--border-strong:#343a4f;--text:#e8eaf3;--text-muted:#a3a9be;--text-faint:#6a718a;--accent:#7b7bff;--accent-hover:#8f8fff;--accent-soft:#7b7bff29;--accent-text:#fff;--danger:#ff6369;--danger-soft:#ff636926;--success:#3dd68c;--warning:#ffb224;--warning-soft:#ffb22440;--grid-line:#1c202c;--grid-line-strong:#262b3a;--weekend:#ffffff06;--section-band:#ffffff05;--row-hover:#7b7bff0f;--row-selected:#7b7bff1f;--today:#ff6369;--editor-active-line:#7b7bff0f;--editor-selection:#7b7bff40;--shadow-sm:0 1px 2px #0006;--shadow:0 2px 8px #00000059;--shadow-lg:0 16px 40px #00000080, 0 2px 6px #0000004d;--overlay:#00000073;--dep-color:#5f6782;--scroll-thumb:#aab4d238;--scroll-thumb-hover:#aab4d26b;--sprint-band:#7b7bff0d;--sprint-line:#7b7bff66;--syn-keyword:#b794ff;--syn-heading:#fff;--syn-name:#e8eaf3;--syn-owner:#2dd4bf;--syn-tag:#f472b6;--syn-status:#fb923c;--syn-color:#fbbf24;--syn-number:#60a5fa;--syn-ref:#c4b5fd;--syn-comment:#5d647c;--syn-invalid:#ff6369}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;transition:background-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);font-size:13px;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--editor-selection)}body{-webkit-user-select:none;user-select:none}.cm-editor,.cm-editor *,input,textarea,.doc,.doc *{-webkit-user-select:text;user-select:text}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);background-clip:padding-box;border:3px solid #0000;border-radius:999px;min-width:40px;min-height:40px}::-webkit-scrollbar-thumb:hover{background-color:var(--scroll-thumb-hover);border-width:2px}::-webkit-scrollbar-thumb:active{background-color:var(--accent)}.scroller::-webkit-scrollbar-thumb{background-color:#0000}.scroller:hover::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb)}.scroller::-webkit-scrollbar-thumb:hover{background-color:var(--scroll-thumb-hover)}.scroller.space-pan,.scroller.space-pan *{cursor:grab!important}.scroller.panning,.scroller.panning *{cursor:grabbing!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);height:32px;color:var(--text);white-space:nowrap;transition:background-color var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast), color var(--dur-fast);align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}.btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.btn:active{transform:scale(.96)}.btn:focus-visible,.icon-btn:focus-visible,.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);box-shadow:0 1px 2px #5b5bf74d}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{color:var(--danger)}.btn.danger:hover{background:var(--danger-soft);border-color:#0000}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{height:28px;padding:0 9px;font-size:12px}.icon-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-muted);transition:background-color var(--dur-fast), color var(--dur-fast), transform var(--dur-fast) var(--ease-out);background:0 0;border:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn:active{transform:scale(.9)}.icon-btn.active{color:var(--accent);background:var(--accent-soft)}.icon-btn:disabled{opacity:.35;pointer-events:none}.icon-btn.sm{width:24px;height:24px}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px;display:inline-flex;position:relative}.seg-indicator{background:var(--surface-raised);box-shadow:var(--shadow-sm), 0 0 0 1px var(--border);transition:left var(--dur) var(--ease-out), width var(--dur) var(--ease-out);border-radius:6px;position:absolute;top:3px;bottom:3px}.seg button{z-index:1;height:26px;color:var(--text-muted);transition:color var(--dur-fast);background:0 0;border:none;border-radius:6px;padding:0 8px;font-size:12px;font-weight:500;position:relative}.seg button:hover,.seg button.on{color:var(--text)}.input,select.input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;height:32px;transition:border-color var(--dur-fast), box-shadow var(--dur-fast);outline:none;padding:0 10px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.toggle{background:var(--border-strong);width:34px;height:20px;transition:background-color var(--dur) var(--ease-out);border:none;border-radius:999px;flex:none;position:relative}.toggle:after{content:"";width:16px;height:16px;transition:transform var(--dur) var(--ease-spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.toggle.on{background:var(--accent)}.toggle.on:after{transform:translate(14px)}.kbd{border:1px solid var(--border);background:var(--surface-2);min-width:20px;font-family:var(--font-mono);text-align:center;color:var(--text-muted);border-bottom-width:2px;border-radius:5px;padding:1px 5px;font-size:11px;display:inline-block}.divider-v{background:var(--border);flex:none;width:1px;height:20px;margin:0 4px}.app{flex-direction:column;height:100%;display:flex}.appbar{border-bottom:1px solid var(--border);background:var(--surface);z-index:20;flex:none;align-items:center;gap:6px;height:52px;padding:0 12px;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex}.brand-logo{background:linear-gradient(135deg,#6d6dff,#a855f7);border-radius:8px;place-items:center;width:28px;height:28px;display:grid;box-shadow:0 2px 6px #5b5bf759}.doc-title{border-radius:var(--radius-sm);min-width:80px;max-width:360px;color:var(--text-muted);text-overflow:ellipsis;transition:border-color var(--dur-fast), background-color var(--dur-fast), color var(--dur-fast);background:0 0;border:1px solid #0000;outline:none;margin-left:8px;padding:5px 8px;font-weight:500}.doc-title:hover{background:var(--surface-2);color:var(--text)}.doc-title:focus{border-color:var(--accent);background:var(--surface);color:var(--text);box-shadow:0 0 0 3px var(--accent-soft)}.spacer{flex:1}.main{flex:1;min-height:0;display:flex;position:relative}.editor-panel{background:var(--surface);border-right:1px solid var(--border);min-width:0;transition:width var(--dur-slow) var(--ease-out), opacity var(--dur) var(--ease-out);flex-direction:column;flex:none;display:flex;position:relative;overflow:hidden}.editor-panel.resizing{transition:none}.editor-panel.closed{opacity:0;border-right:none}.editor-head{border-bottom:1px solid var(--border);height:44px;color:var(--text-muted);flex:none;align-items:center;gap:8px;min-width:320px;padding:0 8px 0 14px;font-size:12px;font-weight:600;display:flex}.status-pill{background:var(--surface-2);color:var(--text-muted);transition:background-color var(--dur), color var(--dur);border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-flex}.status-pill.ok{color:var(--success)}.status-pill.err{color:var(--danger);background:var(--danger-soft);cursor:pointer}.status-pill .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.editor-host{flex:1;min-width:320px;min-height:0}.cm-gantt-hint{font-family:var(--font-sans);color:var(--text-faint);background:var(--surface-2);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:4px;margin-left:14px;padding:0 6px;font-size:10.5px}.cm-gantt-swatch{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:3px;display:inline-block;box-shadow:0 0 0 1px #0000001a}.cm-flash-line{animation:flash 1.4s var(--ease-out)}@keyframes flash{0%,30%{background:var(--accent-soft)}to{background:0 0}}.splitter{z-index:5;flex:none;width:0;position:relative}.splitter:before{content:"";cursor:col-resize;width:8px;position:absolute;top:0;bottom:0;left:-4px}.splitter:after{content:"";background:var(--accent);opacity:0;width:2px;transition:opacity var(--dur-fast);position:absolute;top:0;bottom:0;left:-1px}.splitter:hover:after,.splitter.active:after{opacity:1}.gantt-panel{background:var(--surface);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.gantt-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;align-items:center;gap:8px;min-height:44px;padding:6px 10px;display:flex}.tabs{scrollbar-width:none;flex:1 1 0;align-items:center;gap:2px;min-width:110px;margin-bottom:-7px;padding-bottom:7px;display:flex;position:relative;overflow:auto hidden}.tab{height:30px;color:var(--text-muted);white-space:nowrap;transition:color var(--dur-fast), background-color var(--dur-fast);background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex;position:relative}.tab:hover{color:var(--text);background:var(--surface-2)}.tab.on{color:var(--accent)}.tab-indicator{background:var(--accent);height:2px;transition:left var(--dur) var(--ease-out), width var(--dur) var(--ease-out);border-radius:2px;position:absolute;bottom:-7px}.tab input{width:120px;color:var(--text);background:0 0;border:none;outline:none;padding:0;font-weight:500}.tab .tab-x{opacity:0;transition:opacity var(--dur-fast);margin-right:-6px}.tab:hover .tab-x{opacity:1}.tab-indicator{bottom:0}.ctrl-group{align-items:center;gap:6px;display:flex}.ctrl-label{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.zoom-val{text-align:center;font-variant-numeric:tabular-nums;width:42px;color:var(--text-muted);font-size:12px}.popover-wrap{display:inline-flex;position:relative}.floating{z-index:120;animation:pop-in var(--dur) var(--ease-out);position:fixed}.floating[data-side=top]{animation-name:pop-in-up}.popover{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);min-width:220px;box-shadow:var(--shadow-lg);padding:6px}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:none}}@keyframes pop-in-up{0%{opacity:0;transform:translateY(4px)scale(.97)}to{opacity:1;transform:none}}.select-trigger{text-align:left;cursor:pointer;align-items:center;gap:6px;display:flex}.select-trigger:hover{border-color:var(--border-strong)}.select-trigger.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.select-trigger:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.select-value{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:7px;min-width:0;display:flex;overflow:hidden}.select-value.placeholder{color:var(--text-faint)}.select-chev{color:var(--text-faint);transition:transform var(--dur) var(--ease-out);flex:none}.select-trigger.open .select-chev{transform:rotate(180deg)}.chip-select{width:auto;height:26px;color:var(--text-muted);border-style:dashed;border-radius:999px;padding:0 8px 0 10px;font-size:12px}.chip-select .select-value{gap:4px}.select-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);min-width:200px;max-width:340px;box-shadow:var(--shadow-lg);padding:5px}.select-search{background:var(--surface-2);height:30px;color:var(--text-faint);border-radius:7px;align-items:center;gap:6px;margin-bottom:4px;padding:0 8px;display:flex}.select-search input{min-width:0;color:var(--text);background:0 0;border:none;outline:none;flex:1}.select-list{max-height:280px;overflow-y:auto}.opt{cursor:pointer;min-height:30px;color:var(--text);transition:background-color var(--dur-fast);border-radius:6px;align-items:center;gap:8px;padding:0 10px;display:flex}.opt.active{background:var(--surface-2)}.opt.selected{font-weight:600}.opt-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.opt-hint{color:var(--text-faint);white-space:nowrap;font-size:11px}.opt-check{color:var(--accent);flex:none}.opt-group{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px 3px;font-size:10.5px;font-weight:600}.opt-empty{color:var(--text-faint);text-align:center;padding:10px;font-size:12px}.date-trigger{cursor:pointer;text-align:left;white-space:nowrap;align-items:center;gap:7px;display:flex}.date-trigger svg{color:var(--text-faint);flex:none}.date-trigger:hover:not(:disabled){border-color:var(--border-strong)}.date-trigger.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.date-trigger:disabled{opacity:.55;cursor:default}.cell-date{border-color:var(--accent);height:26px;padding:0 6px;font-size:12px}.calendar{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);width:264px;box-shadow:var(--shadow-lg);padding:10px}.cal-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.cal-title{text-transform:capitalize;animation:fade-in var(--dur) var(--ease-out);font-weight:600}.cal-grid{outline:none;grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-wd{height:24px;color:var(--text-faint);place-items:center;font-size:10.5px;font-weight:600;display:grid}.cal-day{height:32px;color:var(--text);font-variant-numeric:tabular-nums;transition:background-color var(--dur-fast), color var(--dur-fast), transform var(--dur-fast) var(--ease-out);background:0 0;border:none;border-radius:8px;font-size:12.5px}.cal-day:hover{background:var(--surface-2)}.cal-day:active{transform:scale(.92)}.cal-day.off{color:var(--text-faint)}.cal-day.other{opacity:.4}.cal-day.today{box-shadow:inset 0 0 0 1.5px var(--today);font-weight:600}.cal-grid:focus-visible .cal-day.focus{outline:2px solid var(--accent);outline-offset:-2px}.cal-day.selected{background:var(--accent);color:#fff;font-weight:600}.cal-foot{border-top:1px solid var(--border);align-items:center;gap:6px;margin-top:8px;padding-top:8px;display:flex}.cal-typed{border:1px solid var(--border);background:var(--surface);border-radius:7px;outline:none;flex:1;min-width:0;height:28px;padding:0 8px;font-size:12px}.cal-typed:focus{border-color:var(--accent)}.cal-typed.invalid{border-color:var(--danger)}input[type=number]{appearance:textfield}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);height:32px;transition:border-color var(--dur-fast), box-shadow var(--dur-fast);align-items:center;gap:2px;padding:0 2px;display:flex}.stepper:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.stepper .input{text-align:center;background:0 0;border:none;height:28px;padding:0 2px;box-shadow:none!important}.stepper.disabled{opacity:.55}.range{appearance:none;cursor:pointer;background:0 0;height:20px}.range::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--p,0%), var(--surface-2) var(--p,0%));height:6px;box-shadow:inset 0 0 0 1px var(--border);border-radius:999px}.range::-moz-range-track{background:var(--surface-2);border-radius:999px;height:6px}.range::-moz-range-progress{background:var(--accent);border-radius:999px;height:6px}.range::-webkit-slider-thumb{-webkit-appearance:none;border:3px solid var(--accent);background:var(--surface-raised);width:18px;height:18px;box-shadow:var(--shadow);transition:transform var(--dur) var(--ease-spring);border-radius:50%;margin-top:-6px}.range::-moz-range-thumb{border:3px solid var(--accent);background:var(--surface-raised);border-radius:50%;width:14px;height:14px}.range:hover::-webkit-slider-thumb{transform:scale(1.15)}.range:active::-webkit-slider-thumb{transform:scale(1.15)}.range:focus-visible{outline:none}.range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px var(--accent-soft)}.menu-item{text-align:left;width:100%;min-height:32px;color:var(--text);transition:background-color var(--dur-fast);background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:0 10px;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-item .hint{color:var(--text-faint);margin-left:auto;font-size:11px}.menu-item.danger{color:var(--danger)}.menu-item.danger:hover{background:var(--danger-soft)}.menu-sep{background:var(--border);height:1px;margin:5px 4px}.menu-item:disabled{opacity:.4;pointer-events:none}.menu-check{border:1.5px solid var(--border-strong);color:#0000;width:16px;height:16px;transition:background-color var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast);border-radius:4px;flex:none;place-items:center;display:grid}.menu-check.on{background:var(--accent);border-color:var(--accent);color:#fff}.menu-swatches{flex-wrap:wrap;gap:5px;padding:4px 10px 8px;display:flex}.menu-swatches .swatch{border-radius:6px;width:20px;height:20px}.hint-text{color:var(--text-faint);font-size:11.5px}.sprint-config{flex-direction:column;gap:10px;width:280px;padding:4px 10px 10px;display:flex}.sprint-config code{font-family:var(--font-mono);font-size:11px}.menu-title{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;padding:6px 10px 4px;font-size:11px;font-weight:600}.menu-row{border-radius:6px;justify-content:space-between;align-items:center;gap:12px;min-height:34px;padding:0 10px;display:flex}.menu-row:hover{background:var(--surface-2)}.context-menu{z-index:100;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);min-width:210px;box-shadow:var(--shadow-lg);transform-origin:0 0;animation:pop-in var(--dur-fast) var(--ease-out);padding:6px;position:fixed}.scroller{overscroll-behavior:contain;flex:1;position:relative;overflow:auto}.canvas{width:max-content;min-width:100%;position:relative}.head-row{z-index:4;width:max-content;min-width:100%;display:flex;position:sticky;top:0}.body-row{width:max-content;min-width:100%;display:flex}.corner{z-index:5;background:var(--surface);border-bottom:1px solid var(--border);border-right:1px solid var(--border);transition:width var(--dur) var(--ease-out);flex:none;align-items:flex-end;display:flex;position:sticky;left:0}.col-head{height:32px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;animation:fade-in var(--dur) var(--ease-out);flex:none;align-items:center;padding:0 10px;font-size:11px;font-weight:600;display:flex;overflow:hidden}.col-head.num{justify-content:flex-end}.timeline{background:var(--surface);border-bottom:1px solid var(--border);flex:none}.timeline text{font-family:var(--font-sans);-webkit-user-select:none;user-select:none}.tick-top{fill:var(--text);text-transform:capitalize;font-size:11px;font-weight:600}.tick-bottom{fill:var(--text-muted);font-size:11px}.tick-line{stroke:var(--grid-line-strong)}.today-pill{fill:var(--today)}.today-text{fill:#fff;font-size:10px;font-weight:600}.grid{z-index:3;background:var(--surface);border-right:1px solid var(--border);transition:width var(--dur) var(--ease-out);flex:none;position:sticky;left:0}.grid-row{border-bottom:1px solid var(--grid-line);transition:transform var(--dur-slow) var(--ease-out), background-color var(--dur-fast), height var(--dur) var(--ease-out);animation:row-in var(--dur-slow) var(--ease-out) backwards;cursor:default;align-items:center;display:flex;position:absolute;left:0;right:0}@keyframes row-in{0%{opacity:0}to{opacity:1}}.no-anim .grid-row,.no-anim .bar-row,.no-anim .bar-row *,.no-anim .dep{transition:none!important}.grid-row:hover{background:var(--row-hover)}.grid-row.selected{background:var(--row-selected)}.grid-row.section{background:var(--section-band)}.grid-row.section:hover{background:var(--row-hover)}.grid-row.selected.section{background:var(--row-selected)}.grid-row.drop-before{box-shadow:inset 0 2px 0 var(--accent)}.grid-row.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}.grid-row.drop-inside{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.grid-row.dragging{opacity:.4}.grid-row.dimmed>.cell{opacity:.3}.grid-row>.cell{transition:opacity var(--dur) var(--ease-out)}.cell.editable{cursor:text}.cell.editable:hover{background:var(--row-hover)}.cell-input{width:100%;text-align:inherit;font-size:12px}.cell-input[type=number]{text-align:right}.cell{white-space:nowrap;height:100%;color:var(--text-muted);flex:none;align-items:center;gap:6px;padding:0 10px;font-size:12px;display:flex;overflow:hidden}.cell.num{font-variant-numeric:tabular-nums;justify-content:flex-end}.cell.name{color:var(--text);font-size:13px;position:relative}.grid-row.section .cell.name,.grid-row.summary .cell.name{font-weight:600}.name-text{text-overflow:ellipsis;overflow:hidden}.grid-row.done .name-text{color:var(--text-muted)}.chev{width:18px;height:18px;color:var(--text-faint);transition:transform var(--dur) var(--ease-out), background-color var(--dur-fast), color var(--dur-fast);background:0 0;border:none;border-radius:4px;flex:none;place-items:center;margin-left:-4px;display:grid}.chev:hover{background:var(--surface-2);color:var(--text)}.chev.folded{transform:rotate(-90deg)}.chev-space{flex:none;width:14px}.dot{width:8px;height:8px;transition:background-color var(--dur);border-radius:3px;flex:none}.dot.ms{border-radius:1.5px;transform:rotate(45deg)scale(.85)}.grip{width:14px;color:var(--text-faint);cursor:grab;opacity:0;transition:opacity var(--dur-fast);touch-action:none;place-items:center;display:grid;position:absolute;top:0;bottom:0;left:0}.grid-row:hover .grip{opacity:1}.row-actions{opacity:0;transition:opacity var(--dur-fast), transform var(--dur-fast) var(--ease-out);gap:2px;display:flex;position:absolute;right:4px;transform:translate(4px)}.grid-row:hover .row-actions{opacity:1;transform:none}.row-actions .icon-btn{background:var(--surface);box-shadow:var(--shadow-sm)}.count{color:var(--text-faint);font-size:11px;font-weight:500}.name-input{border:1px solid var(--accent);background:var(--surface);min-width:0;height:26px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:5px;outline:none;flex:1;padding:0 6px}.avatar{color:#fff;letter-spacing:-.02em;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;font-size:9px;font-weight:700;display:inline-grid}.avatar.team{border-radius:6px}.owner-name{text-overflow:ellipsis;overflow:hidden}.mini-progress{background:var(--grid-line-strong);border-radius:2px;flex:none;width:34px;height:4px;position:relative;overflow:hidden}.mini-progress>span{background:var(--success);transition:width var(--dur-slow) var(--ease-out);border-radius:2px;position:absolute;inset:0 auto 0 0}.chart{flex:none;display:block;overflow:visible}.chart text{font-family:var(--font-sans);-webkit-user-select:none;user-select:none}.grid-v{stroke:var(--grid-line)}.grid-v.strong{stroke:var(--grid-line-strong)}.grid-h{stroke:var(--grid-line)}.weekend{fill:var(--weekend)}.section-band{fill:var(--section-band)}.selected-band{fill:var(--row-selected);animation:fade-in var(--dur) var(--ease-out)}.today-line{stroke:var(--today);stroke-width:1.5px}.bar-row{transition:transform var(--dur-slow) var(--ease-out);animation:bar-in var(--dur-slow) var(--ease-out) backwards}.bar-row.dragging{transition:none}.bar-row.dragging *{transition:none!important}@keyframes bar-in{0%{opacity:0}to{opacity:1}}.bar,.bar-bg,.bar-progress,.summary-bar,.bar-outline{transition:width var(--dur-slow) var(--ease-out), fill var(--dur), opacity var(--dur-fast)}.bar-hit{fill:#0000;cursor:grab}.bar-row.dragging .bar-hit{cursor:grabbing}.bar{filter:drop-shadow(0 1px 1.5px #0000001f)}.bar-row:hover .bar,.bar-row:hover .bar-bg{filter:drop-shadow(0 3px 6px #0000002e)brightness(1.04)}.bar-row.selected .bar-outline{stroke:var(--text);stroke-width:2px;opacity:1}.bar-outline{fill:none;opacity:0}.bar-row.crit .bar-outline{stroke:var(--danger);stroke-width:2px;opacity:1;stroke-dasharray:none}.bar-row.done .bar,.bar-row.done .bar-bg{opacity:.55}.bar-label{pointer-events:none;font-size:11.5px;font-weight:500}.bar-label.inside{fill:var(--bar-label)}.bar-label.outside{fill:var(--text)}.bar-label.summary{font-weight:600}.bar-sub{fill:var(--text-faint);pointer-events:none;font-size:10.5px}.handle{fill:#0000;cursor:ew-resize}.handle-mark{fill:#ffffffd9;opacity:0;pointer-events:none;transition:opacity var(--dur-fast)}.bar-row:hover .handle-mark{opacity:1}.link-dot{fill:var(--surface);stroke:var(--accent);stroke-width:2px;cursor:crosshair;opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity var(--dur-fast), transform var(--dur) var(--ease-spring);transform:scale(.5)}.bar-row:hover .link-dot{opacity:1;transform:none}.bar-row.link-target .bar-outline{stroke:var(--accent);stroke-width:2.5px;opacity:1}.milestone{transition:fill var(--dur), transform var(--dur) var(--ease-spring);transform-box:fill-box;transform-origin:50%}.bar-row:hover .milestone{transform:scale(1.15)}.inner-ms{opacity:.9}.summary-cap{transition:transform var(--dur-slow) var(--ease-out)}.dep-group{transition:opacity var(--dur) var(--ease-out)}.dep{fill:none;stroke:var(--dep-color);stroke-width:1.4px;stroke-linejoin:round;stroke-linecap:round;transition:d var(--dur-slow) var(--ease-out), stroke var(--dur-fast), stroke-width var(--dur-fast)}.dep-group.crit .dep{stroke:var(--danger);stroke-width:1.6px}.dep-group.hl .dep,.dep-group.selected .dep,.dep-group:hover .dep{stroke:var(--accent);stroke-width:2px}.dep-flow{fill:none;stroke:var(--surface);stroke-width:1.2px;stroke-dasharray:2 7;stroke-linecap:round;opacity:.85;pointer-events:none;transition:d var(--dur-slow) var(--ease-out);animation:.9s linear infinite dep-flow}@keyframes dep-flow{to{stroke-dashoffset:-9px}}.chart.deps-dim .dep-group:not(.hl):not(.selected){opacity:.22}.dep-group.dimmed{opacity:.15}.dep-hit{fill:none;stroke:#0000;stroke-width:12px;cursor:pointer;pointer-events:stroke}.dep-del{cursor:pointer;animation:pop-scale var(--dur) var(--ease-spring);transform-box:fill-box;transform-origin:50%}.bar-row.related .bar-outline{stroke:var(--accent);stroke-width:1.5px;opacity:.55;stroke-dasharray:3 3}.bar-row.dimmed{opacity:.2}.bar-row{transition:transform var(--dur-slow) var(--ease-out), opacity var(--dur) var(--ease-out)}.avatar-hit{cursor:pointer}.avatar-hit:hover rect{stroke:var(--accent)}.sprint-band{fill:var(--sprint-band)}.sprint-line{stroke:var(--sprint-line);stroke-width:1px;stroke-dasharray:4 4}.sprint-cell{fill:#0000}.sprint-cell.odd{fill:var(--sprint-band)}.tick-sprint{fill:var(--accent);font-size:10.5px;font-weight:600}.tick-line.sprint{stroke:var(--sprint-line)}.tick-hit{fill:#0000;cursor:zoom-in;transition:fill var(--dur-fast)}.tick-hit:hover{fill:var(--row-hover)}.today-marker{transition:transform var(--dur-slow) var(--ease-out);pointer-events:none}.chart-rename{z-index:20;border:1.5px solid var(--accent);background:var(--surface-raised);height:28px;color:var(--text);box-shadow:0 0 0 4px var(--accent-soft), var(--shadow-lg);animation:pop-in var(--dur) var(--ease-out);border-radius:7px;outline:none;padding:0 9px;font-weight:500;position:absolute}.tip-hint{border-top:1px solid var(--border);color:var(--text-faint);margin-top:6px;padding-top:6px;font-size:11px}@keyframes pop-scale{0%{transform:scale(0)}to{transform:scale(1)}}.link-line{stroke:var(--accent);stroke-width:2px;stroke-dasharray:5 4;fill:none;pointer-events:none;animation:.6s linear infinite dash}@keyframes dash{to{stroke-dashoffset:-9px}}.drag-badge{z-index:30;background:var(--text);color:var(--surface);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow);border-radius:6px;padding:4px 8px;font-size:11px;font-weight:600;position:absolute;transform:translate(-50%,-100%)}.tooltip{z-index:60;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);max-width:280px;box-shadow:var(--shadow-lg);pointer-events:none;animation:tip-in var(--dur-fast) var(--ease-out);padding:10px 12px;position:fixed}@keyframes tip-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.tooltip h4{margin:0 0 6px;font-size:13px}.tooltip .row{color:var(--text-muted);justify-content:space-between;gap:16px;font-size:12px;line-height:1.7;display:flex}.tooltip .row b{color:var(--text);font-weight:500}.empty{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.empty-card{pointer-events:auto;text-align:center;color:var(--text-muted);animation:fade-in var(--dur-slow) var(--ease-out)}.empty-card h3{color:var(--text);margin:12px 0 4px}.empty-card .actions{justify-content:center;gap:8px;margin-top:16px;display:flex}.inspector{z-index:15;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised);width:328px;box-shadow:var(--shadow-lg);animation:slide-in var(--dur-slow) var(--ease-out);flex-direction:column;display:flex;position:absolute;top:8px;bottom:8px;right:8px}@keyframes slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.inspector.closing{animation:slide-out var(--dur) var(--ease-out) forwards}@keyframes slide-out{to{opacity:0;transform:translate(24px)}}.insp-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 12px 10px 16px;display:flex}.insp-head .crumb{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.insp-body{flex-direction:column;flex:1;gap:16px;padding:14px 16px 16px;display:flex;overflow-y:auto}.field{flex-direction:column;gap:6px;display:flex}.field>label,.field-label{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.field-row{align-items:center;gap:8px;display:flex}.field-row>*{flex:1;min-width:0}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--surface-2);height:26px;animation:pop-scale var(--dur) var(--ease-spring);border-radius:999px;align-items:center;gap:5px;padding:0 4px;font-size:12px;display:inline-flex}.chip.plain{padding-left:10px}.chip button{width:18px;height:18px;color:var(--text-faint);background:0 0;border:none;border-radius:50%;place-items:center;padding:0;display:grid}.chip button:hover{background:var(--danger-soft);color:var(--danger)}.chip-input{border:1px dashed var(--border-strong);background:0 0;border-radius:999px;outline:none;flex:1;min-width:90px;height:26px;padding:0 10px;font-size:12px}.chip-input:focus{border-style:solid;border-color:var(--accent)}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{width:22px;height:22px;transition:transform var(--dur) var(--ease-spring), border-color var(--dur-fast);border:2px solid #0000;border-radius:7px;padding:0}.swatch:hover{transform:scale(1.15)}.swatch.on{border-color:var(--text);transform:scale(1.1)}.swatch.auto{background:conic-gradient(#5b5bf7,#14b8a6,#f59e0b,#ec4899,#5b5bf7)}.range{width:100%;accent-color:var(--accent)}.insp-foot{border-top:1px solid var(--border);align-items:center;gap:6px;padding:12px 16px;display:flex}.insp-foot .spacer{flex:1}.badge{background:var(--surface-2);color:var(--text-faint);text-transform:none;letter-spacing:0;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.link-btn{color:var(--accent);text-transform:none;letter-spacing:0;background:0 0;border:none;padding:0;font-size:11px;font-weight:500}.link-btn:hover{text-decoration:underline}.drawer-overlay{z-index:80;background:var(--overlay);animation:fade-in var(--dur) var(--ease-out);position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer{z-index:81;background:var(--surface);width:min(720px,100vw);box-shadow:var(--shadow-lg);animation:drawer-in var(--dur-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:none}}.drawer-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:14px 16px;display:flex}.drawer-head h2{margin:0;font-size:15px}.drawer-nav{border-bottom:1px solid var(--border);scrollbar-width:none;gap:4px;padding:8px 16px;display:flex;overflow-x:auto}.drawer-body{flex:1;padding:8px 28px 48px;overflow-y:auto}.doc{color:var(--text);max-width:680px;font-size:14px;line-height:1.65}.doc h1{letter-spacing:-.01em;margin:20px 0 8px;font-size:22px}.doc h2{border-top:1px solid var(--border);margin:32px 0 8px;padding-top:8px;font-size:17px}.doc h3{margin:22px 0 6px;font-size:14px}.doc p,.doc li{color:var(--text-muted)}.doc strong{color:var(--text)}.doc code{font-family:var(--font-mono);background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:1px 5px;font-size:12.5px}.doc pre{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);padding:12px 14px;position:relative;overflow-x:auto}.doc pre code{background:0 0;border:none;padding:0;font-size:12.5px;line-height:1.6}.doc table{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}.doc th,.doc td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:7px 10px}.doc th{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.doc td{color:var(--text-muted)}.doc blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0;margin:12px 0;padding:8px 14px}.doc blockquote p{color:var(--text);margin:0}.copy-code{border:1px solid var(--border);background:var(--surface);height:26px;color:var(--text-muted);font-size:11px;font-family:var(--font-sans);opacity:0;transition:opacity var(--dur-fast), background-color var(--dur-fast);border-radius:6px;padding:0 9px;position:absolute;top:8px;right:8px}.doc pre:hover .copy-code{opacity:1}.copy-code:hover{color:var(--text)}.toasts{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--text);color:var(--surface);box-shadow:var(--shadow-lg);animation:toast-in var(--dur-slow) var(--ease-spring), toast-out var(--dur) var(--ease-out) 2.95s forwards;border-radius:10px;align-items:center;gap:8px;padding:9px 14px;font-weight:500;display:flex}.toast.error{background:var(--danger);color:#fff}.toast.has-action{pointer-events:auto;padding-right:6px}.toast-action{background:color-mix(in srgb, var(--surface) 18%, transparent);height:26px;color:inherit;transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);border:none;border-radius:7px;margin-left:6px;padding:0 10px;font-weight:600}.toast-action:hover{background:color-mix(in srgb, var(--surface) 30%, transparent)}.toast-action:active{transform:scale(.95)}.toast.success .t-icon{color:var(--success)}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)}}.filter-dock{z-index:14;max-width:calc(100% - 32px);transition:left var(--dur-slow) var(--ease-out), max-width var(--dur-slow) var(--ease-out);pointer-events:none;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.filter-dock.with-inspector{max-width:calc(100% - 376px);left:calc(50% - 172px)}.filter-dock>*{pointer-events:auto}.dock-inner{border:1px solid var(--border);background:color-mix(in srgb, var(--surface-raised) 88%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.4);backdrop-filter:blur(12px)saturate(1.4);box-shadow:var(--shadow-lg);scrollbar-width:none;animation:dock-in var(--dur-slow) var(--ease-spring);transform-origin:bottom;border-radius:14px;align-items:center;gap:8px;padding:6px 8px;display:flex;overflow-x:auto}@keyframes dock-in{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:none}}.dock-pill{border:1px solid var(--border);background:color-mix(in srgb, var(--surface-raised) 90%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);height:36px;box-shadow:var(--shadow-lg);color:var(--text);animation:dock-in var(--dur-slow) var(--ease-spring);transition:transform var(--dur-fast) var(--ease-out);border-radius:999px;align-items:center;gap:7px;padding:0 14px;font-weight:600;display:inline-flex}.dock-pill:hover{transform:translateY(-2px)}.dock-badge{background:var(--accent);color:#fff;min-width:18px;height:18px;animation:pop-scale var(--dur) var(--ease-spring);border-radius:999px;place-items:center;padding:0 5px;font-size:10.5px;font-weight:700;display:inline-grid}.dock-sep{background:var(--border);flex:none;width:1px;height:22px}.dock-group{flex:none;align-items:center;gap:4px;display:flex}.dock-search{background:var(--surface-2);height:30px;color:var(--text-faint);transition:box-shadow var(--dur-fast), background-color var(--dur-fast);border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 8px;display:flex}.dock-search:focus-within{box-shadow:0 0 0 2px var(--accent);background:var(--surface)}.dock-search input{width:130px;color:var(--text);transition:width var(--dur) var(--ease-out);background:0 0;border:none;outline:none}.dock-search input:focus{width:180px}.dock-search .kbd{min-width:0;padding:0 4px;font-size:10px}.owner-stack{flex:none;align-items:center;padding-left:6px;display:flex}.dock-avatar{border:2px solid var(--surface-raised);background:var(--c);color:#fff;filter:saturate(.55)brightness(.92);width:28px;height:28px;transition:transform var(--dur) var(--ease-spring), filter var(--dur-fast), box-shadow var(--dur-fast), margin var(--dur) var(--ease-out);border-radius:50%;place-items:center;margin-left:-7px;padding:0;font-size:9.5px;font-weight:700;display:grid;position:relative}.dock-avatar.team{border-radius:9px}.owner-stack:hover .dock-avatar{margin-left:-2px}.dock-avatar:hover{filter:none;transform:translateY(-3px);z-index:10!important}.dock-avatar.on{filter:none;box-shadow:0 0 0 2px var(--accent);transform:translateY(-2px);z-index:9!important}.dock-avatar.more{background:var(--surface-2);color:var(--text-muted);filter:none;border-color:var(--surface-raised);box-shadow:inset 0 0 0 1px var(--border);font-size:10.5px}.dock-avatar.more.open,.dock-avatar.more:hover{color:var(--text)}.dock-avatar.more.on{box-shadow:0 0 0 2px var(--accent)}.more-badge{background:var(--accent);color:#fff;border-radius:999px;min-width:15px;height:15px;padding:0 3px;font-size:9px;line-height:15px;position:absolute;top:-5px;right:-5px}.owner-list{width:260px}.owner-list .select-search{margin:0 0 4px}.owner-list-scroll{max-height:300px;overflow-y:auto}.owner-row{width:100%;min-height:34px;color:var(--text);text-align:left;transition:background-color var(--dur-fast);background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:0 8px;display:flex}.owner-row:hover{background:var(--surface-2)}.owner-row .avatar{width:22px;height:22px}.owner-row-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.drawer.help{width:min(980px,100vw)}.help-layout{flex:1;min-height:0;display:flex}.help-toc{border-right:1px solid var(--border);flex:none;width:230px;padding:14px 10px 40px;overflow-y:auto}.toc-item{width:100%;color:var(--text-muted);text-align:left;transition:background-color var(--dur-fast), color var(--dur-fast);background:0 0;border:none;border-radius:7px;padding:6px 10px;font-size:13px;line-height:1.35;display:block}.toc-item:hover{background:var(--surface-2);color:var(--text)}.toc-item.active{color:var(--accent);background:var(--accent-soft);font-weight:600}.toc-item.sub{background:0 0;padding:4px 10px 4px 22px;font-size:12.5px;font-weight:400}.toc-item.sub.active{color:var(--accent);font-weight:600}.toc-sub{transition:grid-template-rows var(--dur-slow) var(--ease-out);grid-template-rows:0fr;display:grid}.toc-sub>div{overflow:hidden}.toc-group.open .toc-sub{grid-template-rows:1fr}.help-jump{width:220px;display:none}.drawer-body{position:relative}@media (width<=760px){.help-toc{display:none}.help-jump{display:block}}.dock-chip{border:1px solid var(--border);height:28px;color:var(--text-muted);white-space:nowrap;transition:background-color var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.dock-chip .dot{background:var(--c,var(--text-faint));border-radius:50%;width:7px;height:7px}.dock-chip:hover{color:var(--text);border-color:var(--border-strong)}.dock-chip:active{transform:scale(.95)}.dock-chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.dock-count{font-variant-numeric:tabular-nums;color:var(--text-faint);white-space:nowrap;transition:color var(--dur-fast);font-size:12px}.dock-count.on{color:var(--accent);font-weight:600}.dock-view-chip{background:var(--surface-2);height:26px;font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;border-radius:7px;align-items:center;gap:5px;padding:0 4px 0 9px;font-size:11px;display:inline-flex}.dock-view-chip button{width:18px;height:18px;color:var(--text-faint);background:0 0;border:none;border-radius:4px;place-items:center;padding:0;display:grid}.dock-view-chip button:hover{background:var(--danger-soft);color:var(--danger)}.dock-save{color:var(--accent);animation:pop-scale var(--dur) var(--ease-spring)}.dock-search input{width:110px}.dock-chip{padding:0 9px}.spaces-btn .dock-badge{background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.spaces{width:380px}.spaces-head{align-items:center;gap:8px;padding:6px 10px 8px;display:flex}.spaces-search{margin:0 6px 6px}.spaces-search input{width:100%}.spaces-list{flex-direction:column;gap:2px;max-height:46vh;display:flex;overflow-y:auto}.space-item{cursor:pointer;transition:background-color var(--dur-fast);animation:fade-in var(--dur) var(--ease-out);border-radius:9px;align-items:center;gap:10px;padding:7px 8px;display:flex;position:relative}.space-item:hover{background:var(--surface-2)}.space-item.current{background:var(--accent-soft)}.space-item.current:before{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;top:10px;bottom:10px;left:0}.space-thumb{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;flex:none}.space-info{flex:1;min-width:0}.space-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.space-meta{color:var(--text-faint);margin-top:1px;font-size:11.5px}.space-actions{opacity:0;transition:opacity var(--dur-fast), transform var(--dur-fast) var(--ease-out);gap:1px;display:flex;transform:translate(4px)}.space-item:hover .space-actions{opacity:1;transform:none}.templates{flex-direction:column;gap:2px;padding-bottom:2px;display:flex}.template{text-align:left;color:var(--text);transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;padding:8px 10px;display:flex}.template:hover{background:var(--surface-2)}.template:active{transform:scale(.98)}.template>svg{color:var(--accent);flex:none}.template b{font-weight:600;display:block}.template small{color:var(--text-faint);font-size:11.5px;display:block}.spaces-backup{align-items:center;gap:2px;padding:2px 4px 2px 10px;display:flex}.dialog{z-index:85;border:1px solid var(--border);background:var(--surface-raised);width:min(560px,100vw - 32px);max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);animation:dialog-in var(--dur-slow) var(--ease-spring);border-radius:18px;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.dialog.closing{animation:dialog-out .16s var(--ease-out) forwards}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-46%)scale(.96)}to{opacity:1;transform:translate(-50%,-50%)}}@keyframes dialog-out{to{opacity:0;transform:translate(-50%,-48%)scale(.98)}}.dialog-head{align-items:flex-start;gap:12px;padding:18px 18px 10px 20px;display:flex}.dialog-head .brand-logo{border-radius:10px;flex:none;width:36px;height:36px}.dialog-head h2{margin:0;font-size:16px}.dialog-head p{color:var(--text-muted);margin:2px 0 0}.dialog-cards{flex-direction:column;gap:10px;padding:8px 18px 20px;display:flex}.dl-card{border:1px solid var(--border);background:var(--surface);transition:border-color var(--dur-fast), transform var(--dur) var(--ease-out), box-shadow var(--dur);animation:fade-in var(--dur-slow) var(--ease-out) backwards;border-radius:14px;gap:14px;padding:14px;display:flex}.dl-card:nth-child(2){animation-delay:60ms}.dl-card:nth-child(3){animation-delay:.12s}.dl-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.dl-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:11px;flex:none;place-items:center;display:grid}.dl-body{flex:1;min-width:0}.dl-body h3{margin:2px 0 4px;font-size:14px}.dl-body p{color:var(--text-muted);margin:0 0 10px;line-height:1.5}.dl-body code{font-family:var(--font-mono);font-size:12px}.dl-hint{font-size:12px;color:var(--text-faint)!important}.dl-ok{color:var(--success);align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:inline-flex}.dl-actions{flex-wrap:wrap;gap:6px;display:flex}.install-ready{color:var(--accent)}.install-ready svg{animation:nudge 2.4s var(--ease-out) infinite}@keyframes nudge{0%,70%,to{transform:none}80%{transform:translateY(2px)}90%{transform:translateY(-1px)}}.save-ind{height:26px;color:var(--text-faint);transition:color var(--dur), background-color var(--dur-fast);background:0 0;border:none;border-radius:999px;align-items:center;gap:5px;padding:0 8px;font-size:11.5px;font-weight:500;display:inline-flex}.save-ind:hover{background:var(--surface-2);color:var(--text-muted)}.save-ind.saved svg{color:var(--success)}.save-ind.error{color:var(--danger);background:var(--danger-soft)}.save-dot{background:var(--warning);border-radius:50%;width:7px;height:7px;animation:.9s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.3;transform:scale(.7)}}.appbar-actions{align-items:center;gap:6px;display:flex}.appbar,.gantt-toolbar{transition:margin var(--dur-slow) var(--ease-out), opacity var(--dur) var(--ease-out)}.presenting .appbar{opacity:0;pointer-events:none;margin-top:-52px}.presenting .gantt-toolbar{opacity:0;pointer-events:none;margin-top:-45px}.presenting .filter-dock,.presenting .inspector{display:none}.presenting .grip,.presenting .row-actions,.presenting .link-dot,.presenting .handle-mark{display:none!important}.presenting .bar-hit,.presenting .handle{cursor:pointer}.presenting .scroller{flex-direction:column;display:flex}.presenting .canvas{margin-block:auto}.presenting.tool-laser,.presenting.tool-laser *{cursor:none!important}.presenting.tool-spotlight .scroller,.presenting.tool-spotlight .scroller *{cursor:crosshair!important}.chart.focus-mode .bar-row:not(.selected):not(.related){opacity:.16}.chart.focus-mode .dep-group:not(.hl){opacity:.1}.chart.focus-mode .bar-row.selected .bar-outline{stroke:var(--accent);stroke-width:2.5px;opacity:1}.present-title{z-index:70;border:1px solid var(--border);background:color-mix(in srgb, var(--surface-raised) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);animation:dock-in var(--dur-slow) var(--ease-out);transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);border-radius:12px;align-items:center;gap:8px;padding:6px 12px 6px 6px;font-size:13px;display:flex;position:fixed;top:14px;left:16px}.present-title .brand-logo{border-radius:7px;width:24px;height:24px}.present-title span{color:var(--text-muted)}.present-title.idle{opacity:0;transform:translateY(-8px)}.present-hint{z-index:70;background:var(--text);color:var(--surface);animation:toast-in var(--dur-slow) var(--ease-spring), toast-out var(--dur) var(--ease-out) 4.6s forwards;pointer-events:none;border-radius:999px;padding:7px 14px;font-size:12px;font-weight:500;position:fixed;top:18px;left:50%;transform:translate(-50%)}.present-dock{z-index:70;border:1px solid var(--border);background:color-mix(in srgb, var(--surface-raised) 90%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4);box-shadow:var(--shadow-lg);animation:present-dock-in var(--dur-slow) var(--ease-spring);transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);border-radius:16px;align-items:center;gap:4px;padding:6px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}@keyframes present-dock-in{0%{opacity:0;transform:translate(-50%,24px)scale(.96)}to{opacity:1;transform:translate(-50%)}}.present-dock.idle{opacity:0;transform:translate(-50%,16px)}.pd-btn{min-width:38px;height:38px;color:var(--text-muted);transition:background-color var(--dur-fast), color var(--dur-fast), transform var(--dur-fast) var(--ease-out);background:0 0;border:none;border-radius:11px;justify-content:center;align-items:center;gap:6px;padding:0 9px;font-weight:600;display:inline-flex}.pd-btn:hover{background:var(--surface-2);color:var(--text)}.pd-btn:active{transform:scale(.92)}.pd-btn.on{background:var(--accent);color:#fff;box-shadow:0 2px 10px color-mix(in srgb, var(--accent) 45%, transparent)}.pd-btn.exit{color:var(--danger)}.pd-btn.exit:hover{background:var(--danger-soft)}.pd-sep{background:var(--border);width:1px;height:24px;margin:0 4px}.pd-zoom{text-align:center;font-variant-numeric:tabular-nums;min-width:46px;color:var(--text-muted);font-size:12px}.pd-view .select-trigger{border-radius:10px;min-width:150px;height:34px}.laser-canvas{z-index:75;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}@property --r{syntax:"<length>";inherits:false;initial-value:170px}.spotlight{z-index:65;pointer-events:none;background:radial-gradient(circle at var(--x) var(--y), transparent calc(var(--r) * .82), #040610bd var(--r));transition:--r var(--dur-slow) var(--ease-out);animation:fade-in var(--dur-slow) var(--ease-out);position:fixed;inset:0}.tour{z-index:300;animation:fade-in var(--dur) var(--ease-out);position:fixed;inset:0}.tour.leaving{animation:fade-out .26s var(--ease-out) forwards}@keyframes fade-out{to{opacity:0}}.tour-block{position:absolute;inset:0}.tour-hole{box-shadow:0 0 0 9999px #0608149e, 0 0 0 2px var(--accent), 0 0 24px 4px color-mix(in srgb, var(--accent) 45%, transparent);pointer-events:none;transition:left .48s var(--ease-out), top .48s var(--ease-out), width .48s var(--ease-out), height .48s var(--ease-out), border-radius .48s;border-radius:12px;position:absolute}.tour-hole.none{border-radius:50%;box-shadow:0 0 0 9999px #0608149e}.tour-card{border:1px solid var(--border);background:var(--surface-raised);width:min(340px,100vw - 28px);box-shadow:var(--shadow-lg);transition:top .48s var(--ease-out), left .48s var(--ease-out);animation:dialog-pop var(--dur-slow) var(--ease-spring);border-radius:16px;padding:16px 16px 12px;position:absolute}@keyframes dialog-pop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.tour-content{animation:tour-content-in var(--dur-slow) var(--ease-out)}@keyframes tour-content-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.tour-step{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.tour-card h3{letter-spacing:-.01em;margin:6px 0;font-size:16px}.tour-card p{color:var(--text-muted);margin:0;line-height:1.55}.tour-dots{gap:5px;margin:14px 0 12px;display:flex}.tour-dots span{background:var(--border-strong);width:6px;height:6px;transition:width var(--dur) var(--ease-out), background-color var(--dur);border-radius:999px}.tour-dots span.done{background:color-mix(in srgb, var(--accent) 45%, transparent)}.tour-dots span.on{background:var(--accent);width:18px}.tour-actions{align-items:center;gap:6px;display:flex}.template-go{color:var(--text-faint);margin-left:auto}.templates-dialog{flex-direction:column;width:min(1060px,100vw - 32px);height:min(680px,100vh - 48px);display:flex;overflow:hidden}.tpl-layout{border-top:1px solid var(--border);flex:1;grid-template-columns:1fr 380px;min-height:0;display:grid}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-content:start;gap:12px;padding:16px;display:grid;overflow-y:auto}.tpl-card{border:1.5px solid var(--border);background:var(--surface);color:var(--text);text-align:left;transition:border-color var(--dur-fast), transform var(--dur) var(--ease-out), box-shadow var(--dur);animation:fade-in var(--dur-slow) var(--ease-out) backwards;border-radius:14px;flex-direction:column;padding:0;display:flex;overflow:hidden}.tpl-card:hover{box-shadow:var(--shadow);border-color:var(--border-strong);transform:translateY(-3px)}.tpl-card.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.tpl-thumb{background:var(--surface-2);border-bottom:1px solid var(--border);height:112px;overflow:hidden}.tpl-thumb img{object-fit:cover;object-position:left top;width:100%;height:100%;transition:transform var(--dur-slow) var(--ease-out);display:block}.tpl-card:hover .tpl-thumb img{transform:scale(1.04)}.tpl-card-body{align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:flex}.tpl-card-body svg{color:var(--accent);flex:none}.tpl-detail{border-left:1px solid var(--border);animation:tour-content-in var(--dur-slow) var(--ease-out);flex-direction:column;gap:10px;padding:16px 18px;display:flex;overflow-y:auto}.tpl-preview{border:1px solid var(--border);background:var(--surface-2);aspect-ratio:16/10;border-radius:12px;overflow:hidden}.tpl-preview img{object-fit:cover;object-position:left top;width:100%;height:100%;display:block}.tpl-detail h3{margin:4px 0 0;font-size:17px}.tpl-detail p{color:var(--text-muted);margin:0;line-height:1.55}.tpl-features{flex-wrap:wrap;gap:6px;display:flex}.tpl-chip{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:600}.tpl-stats{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.tpl-stats div{background:var(--surface-2);border-radius:10px;flex-direction:column;align-items:center;padding:8px 4px;display:flex}.tpl-stats b{font-size:16px}.tpl-stats span{color:var(--text-faint);font-size:10.5px}.tpl-views{align-items:center;gap:6px;font-size:12px;display:flex}.tpl-actions{align-items:center;gap:10px;margin-top:auto;padding-top:8px;display:flex}@media (width<=820px){.tpl-layout{grid-template-columns:1fr}.tpl-detail{border-left:none;border-top:1px solid var(--border)}}.dropzone{z-index:150;border:2px dashed var(--accent);background:color-mix(in srgb, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--accent);animation:fade-in var(--dur) var(--ease-out);pointer-events:none;border-radius:18px;place-items:center;font-size:16px;font-weight:600;display:grid;position:fixed;inset:12px}@media (width<=720px){.hide-sm{display:none!important}.inspector{width:auto;left:8px}}
