@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-ext.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-ext.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--canvas:#16171d;--canvas-deep:#101116;--surface:#1e2027;--surface-sunk:#191b21;--surface-hover:#262932;--ink:#e8eaf0;--ink-muted:#9aa1b2;--ink-faint:#5f6678;--hairline:#2a2d37;--hairline-firm:#3b3f4d;--accent:#0a84ff;--accent-hover:#39f;--accent-press:#0066d6;--accent-tint:#0a84ff29;--accent-ink:#66b2ff;--accent-ring:#0a84ff40;--accent-line:#0a84ff66;--danger:#e5484d;--danger-tint:#e5484d24;--warn:#e8a13d;--warn-tint:#e8a13d21;--success:#3dd68c;--success-tint:#3dd68c1f;--shadow-xs:0 1px 1.5px #00000059;--shadow-sm:0 1px 2px #00000059, 0 2px 6px #0000004d;--shadow-md:0 1px 2px #0000004d, 0 8px 22px -6px #00000080;--shadow-lg:0 2px 4px #0000004d, 0 18px 44px -12px #0000009e;--shadow-page:0 0 0 1px #ffffff12, 0 2px 4px -1px #00000080, 0 10px 26px -8px #0009;--shadow-lift:0 0 0 1px #ffffff17, 0 4px 8px -2px #00000080, 0 16px 32px -12px #000000a6;--glass-highlight:#ffffff0d;--selection:#0a84ff61;--on-accent:#fff;--weekend:#ffffff08;--line-soft:#22242c;--bar:#4a5160;--bar-edge:#6a7284;--today:#e8a13d;--tip-bg:#262932;--tip-ink:#e8eaf0;--tip-muted:#9aa1b2;--tip-line:#3b3f4d;--tip-crit:#e5484d;--demo-crit:#d6453c;--demo-g0:#6dadff;--demo-g1:#ad99fb;--demo-shadow:0 30px 50px #0000008c;--radius-sm:5px;--radius-md:7px;--radius-lg:10px;--radius-xl:14px;--radius-2xl:18px;--font-sans:"Inter Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, monospace;--row-h:30px;--head-h:48px}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--canvas:#f5f6f8;--canvas-deep:#eceef2;--surface:#fff;--surface-sunk:#eef0f3;--surface-hover:#f3f4f7;--ink:#16171d;--ink-muted:#5f6678;--ink-faint:#9aa1b2;--hairline:#e3e6eb;--hairline-firm:#cdd2da;--accent:#0a84ff;--accent-hover:#0070e0;--accent-press:#005bc2;--accent-tint:#0a84ff1a;--accent-ink:#0066d6;--accent-ring:#0a84ff40;--accent-line:#0a84ff66;--danger:#d93036;--danger-tint:#d930361a;--warn:#b8760f;--warn-tint:#b8760f1f;--success:#1f9d5c;--success-tint:#1f9d5c1f;--shadow-xs:0 1px 1.5px #1a191724;--shadow-sm:0 1px 2px #1a19171f, 0 2px 6px #1a19171a;--shadow-md:0 1px 2px #1a19170f, 0 10px 30px -6px #1a19172e;--shadow-lg:0 2px 4px #1a191714, 0 18px 44px -12px #1a191747;--shadow-page:0 0 0 1px #1a19170f, 0 2px 4px -1px #1a191724, 0 10px 26px -8px #1a191733;--shadow-lift:0 0 0 1px #1a191714, 0 4px 8px -2px #1a191724, 0 16px 32px -12px #1a19173d;--glass-highlight:#ffffffb3;--selection:#0a84ff4d;--weekend:#f0f2f5;--line-soft:#eceef2;--bar:#aab2bd;--bar-edge:#8c95a2;--today:#c87a2a;--tip-bg:#16171d;--tip-ink:#f5f6f8;--tip-muted:#f5f6f8b8;--tip-line:transparent;--tip-crit:#ff9d94}:root,[data-theme=light]{--bg:var(--canvas);--panel:var(--surface);--sunken:var(--surface-sunk);--raised:var(--surface-hover);--line:var(--hairline);--line-strong:var(--hairline-firm);--text:var(--ink);--dim:var(--ink-muted);--faint:var(--ink-faint);--font:var(--font-sans);--mono:var(--font-mono);--radius:var(--radius-md);--shadow-pop:var(--shadow-md)}*{box-sizing:border-box;border-color:var(--hairline)}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{background:var(--canvas);color:var(--ink);font:13px/1.45 var(--font-sans);font-feature-settings:"cv05", "ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow:hidden}.app{flex-direction:column;height:100%;display:flex}button,summary,[role=button],select{cursor:pointer}button:disabled,select:disabled,[aria-disabled=true]{cursor:not-allowed}button{font:inherit;color:inherit;background:0 0;border:0;padding:0}a{color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}::selection{background:var(--selection);color:var(--on-accent)}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.scroll-slim{scrollbar-width:thin;scrollbar-color:var(--hairline-firm) transparent}.scroll-slim::-webkit-scrollbar{width:10px;height:10px}.scroll-slim::-webkit-scrollbar-track{background:0 0}.scroll-slim::-webkit-scrollbar-thumb{background:var(--hairline-firm);background-clip:content-box;border:3px solid #0000;border-radius:999px}.scroll-slim::-webkit-scrollbar-thumb:hover{background:var(--ink-faint);background-clip:content-box;border:3px solid #0000}.app-canvas{background-image:radial-gradient(90rem 40rem at 15% -10%, color-mix(in oklab, var(--accent) 11%, transparent), transparent 60%), radial-gradient(70rem 34rem at 100% 0%, color-mix(in oklab, var(--accent) 7%, transparent), transparent 60%)}.glass{background-color:color-mix(in oklab, var(--surface) 82%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);backdrop-filter:blur(16px)saturate(1.4);box-shadow:inset 0 1px 0 var(--glass-highlight)}.btn{height:32px;font:500 13px/1 var(--font-sans);white-space:nowrap;border-radius:var(--radius-lg);-webkit-user-select:none;user-select:none;background-clip:padding-box;border:1px solid #0000;flex:none;justify-content:center;align-items:center;gap:6px;padding:0 10px;transition:background .12s,border-color .12s,color .12s,box-shadow .12s,transform .12s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;pointer-events:none}.btn svg{pointer-events:none;flex:none}.btn-sm{border-radius:var(--radius-md);height:28px;padding:0 10px;font-size:12px}.btn-icon{width:32px;padding:0}.btn-sm.btn-icon{width:28px}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:active:not(:disabled){background:var(--accent-press)}.btn-secondary{background:var(--canvas);color:var(--ink);border-color:var(--hairline-firm)}.btn-secondary:hover:not(:disabled){background:var(--surface-sunk)}.btn-ghost{color:var(--ink-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-sunk);color:var(--ink)}.btn-danger{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 20%, transparent)}.btn.is-active{background:var(--accent-tint);color:var(--accent-ink);border-color:#0000}.fgroup{flex-direction:column;display:flex}.field-label{color:var(--ink-muted);font-size:11px;font-weight:500}.field-label+.input,.field-row+.input{margin-top:6px}.field-row{justify-content:space-between;align-items:baseline;display:flex}.field-row a,.field-row button{color:var(--ink-muted);font-size:11px;text-decoration:none}.field-row a:hover,.field-row button:hover{color:var(--ink)}.input{width:100%;height:40px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline-firm);border-radius:var(--radius-lg);outline:none;padding:0 12px;font-size:13px;transition:border-color .12s,box-shadow .12s}.input::placeholder{color:var(--ink-faint)}.input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring);outline:none}.input:disabled{opacity:.6}.input-sm{height:32px;padding:0 10px}.form-msg{border:1px solid #0000;border-radius:8px;margin:0;padding:8px 10px;font-size:12px;line-height:1.4}.form-msg.error{border-color:color-mix(in srgb, var(--danger) 25%, transparent);background:var(--danger-tint);color:var(--danger)}.form-msg.info{border-color:color-mix(in srgb, var(--accent) 25%, transparent);background:var(--accent-tint);color:var(--accent-ink)}.hlink{border-radius:var(--radius-lg);height:28px;color:var(--ink-muted);white-space:nowrap;align-items:center;gap:6px;padding:0 8px;font-size:12px;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.hlink:hover{background:var(--surface-sunk);color:var(--ink)}.hlink.danger:hover{background:var(--danger-tint);color:var(--danger)}.textlink{font:inherit;color:var(--accent-ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:500}.textlink:hover{text-underline-offset:2px;text-decoration:underline}.textlink:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px;border-radius:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.shell{background:var(--canvas);flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.shell.center{place-items:center;padding:24px;display:grid}.page-body{flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:32px 16px;display:flex}.wordmark{color:var(--ink);letter-spacing:-.015em;align-items:center;gap:8px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.wordmark .mark{color:var(--accent);flex:none;place-items:center;display:grid}button.wordmark{margin:0;padding:0}.auth-wrap{width:100%;max-width:368px}.auth-card{border:1px solid var(--hairline);background:color-mix(in oklab, var(--surface) 85%, transparent);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-radius:20px;padding:28px;position:relative}.auth-card>.wordmark{margin-bottom:20px}.auth-close{justify-content:center;width:28px;padding:0;position:absolute;top:16px;right:16px}.auth-card h1{letter-spacing:-.02em;color:var(--ink);margin:0;font-size:24px;font-weight:600;line-height:1.22}.auth-card .auth-sub{color:var(--ink-muted);margin:6px 0 0;font-size:12px;line-height:1.4}.auth-card .auth-body{color:var(--ink-muted);margin-top:16px;font-size:13px;line-height:1.6}.auth-card .auth-body b{color:var(--ink);font-weight:600}.auth-form{flex-direction:column;gap:12px;margin-top:20px;display:flex}.auth-form .btn-primary{border-radius:var(--radius-lg);width:100%;height:40px;box-shadow:var(--shadow-md);font-weight:600}.auth-form .btn-primary:hover:not(:disabled){transform:translateY(-1px)}.auth-form .btn-primary:active:not(:disabled){transform:translateY(0)}.auth-form .btn-primary:disabled{opacity:.6}.auth-fine{color:var(--ink-faint);margin:0;font-size:11px;line-height:1.5}.auth-fine a{color:inherit;text-underline-offset:2px;text-decoration:underline}.auth-fine a:hover{color:var(--ink-muted)}.auth-pricing{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.auth-pricing>button.link{color:var(--accent-ink);padding:0;font-size:12px;font-weight:500}.auth-pricing>button.link:hover{text-underline-offset:2px;text-decoration:underline}.auth-prices{border:1px solid var(--hairline);border-radius:var(--radius-lg);width:100%;padding:10px 12px;font-size:12px}.auth-prices dl{margin:0}.auth-prices dl>div{justify-content:space-between;align-items:baseline;padding:2px 0;display:flex}.auth-prices dt{color:var(--ink-muted)}.auth-prices dd{color:var(--ink);margin:0;font-weight:600}.auth-prices dt.best{color:var(--accent-ink)}.auth-prices .save{color:var(--accent-ink);margin-left:6px;font-weight:500}.auth-prices p{color:var(--ink-faint);margin:6px 0 0;font-size:11px}.auth-foot{text-align:center;color:var(--ink-muted);margin-top:16px;padding:0 4px;font-size:12px}.auth-foot a,.auth-foot button.link{color:var(--accent-ink);font-weight:500;text-decoration:none}.auth-foot a:hover,.auth-foot button.link:hover{text-underline-offset:2px;text-decoration:underline}.auth-foot .row{justify-content:center;align-items:center;gap:4px;display:flex}.auth-note{color:var(--ink-faint);margin:16px 0 0;padding:0 4px;font-size:11px;line-height:1.5}.auth-legal{text-align:center;margin:8px 0 0;padding:0 4px;font-size:11px}.auth-legal a{color:var(--ink-faint);text-decoration:none}.auth-legal a:hover{color:var(--ink-muted);text-underline-offset:2px;text-decoration:underline}.page-header{z-index:10;border-bottom:1px solid var(--hairline);flex:none;align-items:center;gap:12px;height:48px;padding:0 12px;display:flex;position:sticky;top:0}.page-header .vdiv{background:var(--hairline);flex:none;width:1px;height:20px}.page-header .page-title{letter-spacing:-.015em;color:var(--ink);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.page-header .page-title .mark{color:var(--accent);place-items:center;display:grid}.page-header .page-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.section{border:1px solid var(--hairline);background:color-mix(in oklab, var(--surface) 85%, transparent);border-radius:16px;padding:20px}.section>h2{color:var(--ink);margin:0;font-size:13px;font-weight:600}.section .section-form{flex-direction:column;gap:12px;margin-top:12px;display:flex}.section .section-form .btn{align-self:flex-start}.section .password-toggle{margin-top:16px;display:block}.section .password-form{border-top:1px solid var(--hairline);margin-top:16px;padding-top:16px}.section .form-actions{gap:8px;display:flex}.section .copy{color:var(--ink-muted);margin:4px 0 0;font-size:12px;line-height:1.4}.section .copy+.btn,.section .form-msg{margin-top:12px}.plan-status{color:var(--ink);margin:12px 0 0;font-size:13px;font-weight:500}.plan-status.expired{color:var(--danger)}.plan-detail{color:var(--ink-muted);margin:4px 0 0;font-size:12px;line-height:1.4}.plan-detail.warn{color:var(--danger)}.plan-fine{color:var(--ink-faint);margin:4px 0 0;font-size:11px;line-height:1.4}.plan-fine a{color:inherit;text-underline-offset:2px;text-decoration:underline}.plan-fine a:hover{color:var(--ink-muted)}.plan-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.billing-upgrade{display:contents}.billing-buttons{flex-wrap:wrap;gap:8px;display:flex}.billing-upgrade .form-msg{width:100%}.btn-plan{border-radius:var(--radius-lg);height:36px;padding:0 14px;font-size:12px;font-weight:600}.btn-plan.btn-primary{box-shadow:var(--shadow-md)}.billing-save{letter-spacing:.02em;background:color-mix(in srgb, var(--on-accent) 22%, transparent);border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10.5px;font-weight:600}.billing-upgrade.stacked{flex-direction:column;gap:10px;margin-top:20px;display:flex}.billing-upgrade.stacked .billing-buttons{flex-direction:column}.billing-upgrade.stacked .btn{width:100%;height:40px;font-size:13px}.billing-upgrade.stacked .auth-fine{margin-top:2px}.projects-new{gap:8px;display:flex}.projects-new .input{flex:1;min-width:0}.projects-new .btn{border-radius:var(--radius-lg);height:40px;padding:0 14px}.projects-new .btn-primary{box-shadow:var(--shadow-md);font-weight:600}.section.plist-card{padding:4px 8px}.plist{flex-direction:column;display:flex}.pitem{cursor:pointer;border-bottom:1px solid var(--hairline);border-radius:var(--radius-lg);align-items:center;gap:14px;padding:14px 10px 14px 0;transition:background .1s;display:flex;position:relative}.pitem:last-child{border-bottom:0}.pitem:hover{background:var(--surface-hover)}.pitem .rule{background:0 0;border-radius:2px;flex:none;align-self:stretch;width:3px;margin-right:1px;transition:background .12s}.pitem:hover .rule{background:var(--accent)}.pitem .name{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);flex:1;font-size:14px;font-weight:560;overflow:hidden}.pitem .count,.pitem .when{color:var(--ink-faint);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.pitem .when{text-align:right;min-width:74px}.pitem .tag{color:var(--accent-ink);background:var(--accent-tint);white-space:nowrap;border-radius:999px;flex:none;padding:2px 9px;font-size:11px;font-weight:500}.pitem .del{visibility:hidden}.pitem:hover .del{visibility:visible}.pitem .del:hover:not(:disabled){color:var(--danger);background:var(--danger-tint)}.pitem .move{visibility:hidden;color:var(--ink-faint)}.pitem:hover .move,.pitem .move.open,.pitem .move:focus-visible{visibility:visible}.pitem .move:hover{color:var(--accent)}.plist-card.with-folders{padding:4px 8px 6px}.plist-card .fgroup{border-radius:var(--radius-lg);transition:background .1s,box-shadow .1s}.plist-card .fgroup+.fgroup{border-top:1px solid var(--hairline);margin-top:2px;padding-top:2px}.with-folders .folder-head.naming+.fgroup{border-top:1px solid var(--hairline)}.plist-card .fgroup.drop{background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-line)}.with-folders .plist{padding-left:14px}.pitem[draggable=true]{cursor:pointer}.pitem.dragging{opacity:.45}.folder-head{align-items:center;gap:4px;min-height:42px;padding:2px 0;display:flex}.with-folders .folder-head{border-radius:var(--radius-md);background:color-mix(in srgb, var(--ink) 3.5%, transparent);margin:4px 0 2px;padding:0 2px}.with-folders .folder-head .folder-toggle:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.folder-head.naming{gap:8px;padding:6px 8px 6px 30px}.folder-toggle{border-radius:var(--radius-md);min-width:0;font:inherit;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:7px 8px;display:flex}.folder-toggle:hover{background:var(--surface-hover)}.folder-toggle .chev{color:var(--ink-faint);flex:none;transition:transform .12s;transform:rotate(90deg)}.folder-toggle.folded .chev{transform:none}.folder-toggle .chev.none{visibility:hidden}.folder-icon{color:var(--ink-muted);flex:none}.folder-icon.unfiled{color:var(--ink-faint)}.folder-name{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.folder-name.unfiled{color:var(--ink-muted);font-weight:560}.folder-count{font-variant-numeric:tabular-nums;color:var(--ink-faint);background:var(--surface-sunk);border-radius:999px;padding:1px 7px;font-size:11px}.folder-more{color:var(--ink-faint)}.folder-head:not(:hover) .folder-more:not(:focus-visible){opacity:.55}.folder-input{height:30px;padding:0 8px;font-size:13px}.folder-head .folder-input{flex:1}.fdrop-hint{border:1px dashed var(--hairline-firm);border-radius:var(--radius-md);color:var(--ink-faint);text-align:center;margin:0 8px 8px 36px;padding:12px;font-size:12px}.fgroup.drop .fdrop-hint{border-color:var(--accent);color:var(--accent-ink)}.pop.fmenu{flex-direction:column;min-width:200px;max-width:280px;padding:6px;display:flex}.pop.fmenu h4{padding:4px 8px 2px}.fmenu-item{border-radius:var(--radius-md);width:100%;font:inherit;color:var(--ink);text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;align-items:center;gap:6px;padding:7px 8px;font-size:13px;display:flex;overflow:hidden}.fmenu-item:hover,.fmenu-item:focus-visible{background:var(--surface-hover);outline:none}.fmenu-item.danger{color:var(--danger)}.fmenu-item.danger:hover{background:var(--danger-tint)}.fmenu-item .tick{width:14px;color:var(--accent);flex:none;place-items:center;display:grid}.fmenu-item .unfiled{color:var(--ink-muted)}.fmenu-sep{background:var(--hairline);height:1px;margin:5px 4px}.fmenu .folder-input{width:auto;margin:2px}.empty{color:var(--ink-faint);border:1px dashed var(--hairline-firm);text-align:center;border-radius:16px;padding:44px 16px;font-size:13px}.modal-scrim{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;position:fixed;inset:0}.modal{z-index:71;background:var(--surface);width:520px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);box-shadow:var(--shadow-lg), 0 0 0 1px color-mix(in oklab, var(--ink) 8%, transparent);border-radius:18px;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.modal header{justify-content:space-between;align-items:center;padding:16px 20px 0;display:flex}.modal header h3{letter-spacing:-.01em;margin:0;font-size:15px;font-weight:600}.modal-body{padding:4px 20px 20px;overflow:auto}.modal section{padding:14px 0}.modal section+section{border-top:1px solid var(--hairline)}.modal section h4{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;font-size:11px;font-weight:600}.modal .input{height:36px;padding:0 10px}.modal .fgroup{margin-top:12px}.share-modal{width:540px}.share-invite{align-items:center;gap:8px;margin:12px 0 4px;display:flex}.share-invite .input{flex:1;min-width:0;height:32px}.share-note{color:var(--ink-muted);margin:12px 0 0;font-size:12.5px;line-height:1.45}.modal .form-msg{margin-top:12px}.role-toggle{flex-wrap:nowrap;flex:none;gap:0}.role-toggle .btn{border-radius:0;margin-left:-1px}.role-toggle .btn:first-child{border-radius:var(--radius-md) 0 0 var(--radius-md);margin-left:0}.role-toggle .btn:last-child{border-radius:0 var(--radius-md) var(--radius-md) 0}.role-toggle .btn.is-active{z-index:1;border-color:var(--hairline-firm);position:relative}.share-people{margin:14px 0 0;padding:0;list-style:none}.share-people li{border-top:1px solid var(--hairline);align-items:center;gap:10px;padding:10px 0;display:flex}.share-people .who{flex-direction:column;flex:1;min-width:0;display:flex}.share-people .who b{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.share-people .who em{color:var(--ink-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-style:normal;overflow:hidden}.share-people .role-fixed{color:var(--ink-muted);font-size:12px}.share-people .you{color:var(--ink-faint);font-size:11px}.comp-grant{flex-direction:column;align-items:flex-start;gap:12px;margin-top:20px;display:flex}.comp-fields{align-items:flex-end;gap:12px;width:100%;display:flex}.comp-field{flex-direction:column;display:flex}.comp-email{flex:1;min-width:0}.comp-until{width:200px}.comp-grant .field-label{margin-bottom:6px}.comp-grant .field-label+.input{margin-top:0}.comp-plan{border:1px solid var(--hairline-firm);border-radius:var(--radius-lg);background:var(--canvas);gap:2px;height:40px;padding:3px;display:flex}.comp-plan button{border-radius:var(--radius-md);font:500 12px/1 var(--font-sans);color:var(--ink-muted);white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:0 12px}.comp-plan button:hover{color:var(--ink)}.comp-plan button.on{background:var(--surface-sunk);color:var(--ink);box-shadow:inset 0 0 0 1px var(--hairline);font-weight:600}.comp-toggle{border:0;border-top:1px solid var(--hairline);width:100%;font:500 12px/1 var(--font-sans);color:var(--ink-muted);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:6px;margin-top:20px;padding:16px 0 0;display:flex}.comp-toggle:hover{color:var(--ink)}.comp-toggle:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px;border-radius:3px}.comp-toggle .chev{transition:transform .12s}.comp-toggle .chev.open{transform:rotate(90deg)}.comp-toggle .count{color:var(--ink-faint);font-variant-numeric:tabular-nums}.comp-list{margin:4px 0 0;padding:0;list-style:none}.comp-list li{align-items:center;gap:10px;padding-top:12px;display:flex}.comp-list .who{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.comp-list .who b{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.comp-list .who em{color:var(--ink-muted);font-size:11px;font-style:normal}.comp-list .who em.comp-warn{color:var(--danger)}.comp-list .comp-empty{color:var(--ink-muted);font-size:12px}@media (width<=520px){.comp-fields{flex-direction:column;align-items:stretch}}.delete-modal{width:460px}.delete-warning{color:var(--ink);margin:12px 0 8px;font-size:13px;font-weight:500}.delete-list{color:var(--ink-muted);margin:0 0 14px;padding-left:18px;font-size:13px;line-height:1.7}.delete-list strong{color:var(--danger);font-weight:500}.delete-notice{color:var(--ink-muted);margin:0;font-size:12px;line-height:1.5}.delete-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.notice{background:var(--tip-bg);color:var(--tip-ink);border:1px solid var(--tip-line);border-radius:var(--radius-lg);z-index:60;box-shadow:var(--shadow-md);padding:9px 14px;font-size:12.5px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.editing-banner{z-index:55;background:color-mix(in oklab, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--hairline);box-shadow:var(--shadow-md);color:var(--ink-muted);white-space:nowrap;border-radius:999px;align-items:center;gap:10px;padding:6px 7px 6px 13px;font-size:12px;display:flex;position:fixed;top:58px;left:50%;transform:translate(-50%)}.editing-banner .dot{background:var(--warn);border-radius:50%;flex:none;width:7px;height:7px;animation:2s ease-in-out infinite editing-pulse}.editing-banner .btn{border-radius:999px}.editing-banner .dot.view{background:var(--ink-faint);animation:none}.editing-banner:has(.dot.view){padding-right:14px}@keyframes editing-pulse{0%,to{opacity:1}50%{opacity:.35}}.shell.landing{height:100%;position:relative}.shell.landing:before{content:"";pointer-events:none;background-image:radial-gradient(var(--hairline-firm) 1px, transparent 1.2px);-webkit-mask-image:radial-gradient(55% 60% at 68% 50%, var(--ink) 0%, transparent 100%);-webkit-mask-image:radial-gradient(55% 60% at 68% 50%, var(--ink) 0%, transparent 100%);mask-image:radial-gradient(55% 60% at 68% 50%, var(--ink) 0%, transparent 100%);opacity:.55;background-size:24px 24px;position:absolute;inset:0}.landing-page{grid-template-rows:auto 1fr auto;width:100%;max-width:1360px;min-height:100%;margin:0 auto;padding:0 40px;display:grid;position:relative}.landing-nav{justify-content:space-between;align-items:center;height:64px;display:flex}.landing-nav nav{align-items:center;gap:8px;display:flex}.landing-nav .hlink{height:28px;font-size:13px}.landing-hero{grid-template-columns:minmax(0,500px) minmax(0,1fr);align-items:center;gap:clamp(40px,5vw,80px);padding:24px 0;display:grid}.landing-copy h1{letter-spacing:-.04em;text-wrap:balance;margin:0;font-size:clamp(36px,3.9vw,54px);font-weight:650;line-height:1.03}.landing-copy h1 em{color:var(--ink-muted);font-style:normal}.landing-lede{max-width:460px;color:var(--ink-muted);text-wrap:pretty;margin:20px 0 0;font-size:15px;line-height:1.55}.landing-sublede{max-width:460px;color:var(--ink-faint);text-wrap:pretty;margin:10px 0 0;font-size:13px;line-height:1.55}.landing-cta{flex-direction:column;align-items:flex-start;gap:12px;margin-top:32px;display:flex}.landing-go{height:40px;padding:0 14px 0 16px;font-weight:600}.landing-go svg{transition:transform .15s}.landing-go:hover svg{transform:translate(2px)}.landing-price{color:var(--ink-faint);font-size:12px}.landing-price b{color:var(--ink-muted);font-weight:600}.landing-features{border-top:1px solid var(--hairline);grid-template-columns:1fr 1fr;gap:20px 24px;margin:44px 0 0;padding:28px 0 0;list-style:none;display:grid}.landing-features h2{letter-spacing:-.01em;margin:0;font-size:13px;font-weight:600}.landing-features p{color:var(--ink-muted);margin:2px 0 0;font-size:12px;line-height:1.45}.landing-foot{align-items:center;height:48px;font-size:11px;display:flex}.landing-foot a{color:var(--ink-faint);text-decoration:none}.landing-foot a:hover{color:var(--ink-muted);text-underline-offset:2px;text-decoration:underline}.landing-stage{position:relative}.landing-stage:before{content:"";z-index:0;background:radial-gradient(40% 45% at 30% 40%, color-mix(in oklab, var(--accent) 18%, transparent), transparent 70%), radial-gradient(35% 40% at 75% 70%, color-mix(in oklab, var(--demo-crit) 12%, transparent), transparent 70%);filter:blur(30px);pointer-events:none;position:absolute;inset:-12% -8%}.preview{z-index:1;width:100%;height:auto;max-height:calc(100dvh - 180px);box-shadow:var(--demo-shadow);font-family:var(--font-sans);border-radius:14px;display:block;position:relative}.pv-bg{fill:var(--surface)}.pv-bar{fill:var(--surface-sunk)}.pv-dots circle{fill:var(--hairline-firm)}.pv-title{fill:var(--ink);letter-spacing:-.01em;font-size:12px;font-weight:600}.pv-chip{fill:color-mix(in oklab, var(--demo-crit) 16%, transparent);stroke:color-mix(in oklab, var(--demo-crit) 40%, transparent)}.pv-chip-t{fill:color-mix(in oklab, var(--demo-crit) 60%, var(--ink));font-size:10.5px;font-weight:500}.pv-table{fill:color-mix(in oklab, var(--surface) 60%, var(--canvas))}.pv-frame{fill:none;stroke:var(--hairline-firm)}.pv-rule{stroke:var(--hairline)}.pv-row{stroke:var(--line-soft)}.pv-week{stroke:var(--hairline);stroke-dasharray:2 4}.pv-head{letter-spacing:.07em;fill:var(--ink-faint);font-size:9px;font-weight:600}.pv-name{fill:var(--ink);font-size:10.5px}.pv-name.sum{font-weight:600}.pv-name.sum.g0{fill:color-mix(in oklab, var(--demo-g0) 70%, var(--ink))}.pv-name.sum.g1{fill:color-mix(in oklab, var(--demo-g1) 70%, var(--ink))}.pv-task{stroke-width:1px}.pv-task.g0{fill:color-mix(in oklab, var(--demo-g0) 55%, var(--canvas));stroke:color-mix(in oklab, var(--demo-g0) 85%, var(--canvas))}.pv-task.g1{fill:color-mix(in oklab, var(--demo-g1) 55%, var(--canvas));stroke:color-mix(in oklab, var(--demo-g1) 85%, var(--canvas))}.pv-task.crit{fill:color-mix(in oklab, var(--demo-crit) 70%, var(--canvas));stroke:var(--demo-crit)}.pv-sum.g0{fill:var(--demo-g0)}.pv-sum.g1{fill:var(--demo-g1)}.pv-ms{fill:var(--demo-crit)}.pv-link{fill:none;stroke:var(--ink-faint);stroke-width:1.1px;stroke-linejoin:round}.pv-link.crit{stroke:color-mix(in oklab, var(--demo-crit) 80%, var(--ink))}.pv-arrow path{fill:var(--ink-faint)}.pv-arrow-crit path{fill:color-mix(in oklab, var(--demo-crit) 80%, var(--ink))}.pv-today{stroke:var(--today);stroke-width:1.2px;stroke-dasharray:3 3}@keyframes pv-fade{0%{opacity:0}}.landing-auth{z-index:40;background:color-mix(in oklab, var(--canvas-deep) 55%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);place-items:center;padding:24px;animation:.18s ease-out both pv-fade;display:grid;position:fixed;inset:0;overflow:auto}.landing-auth .auth-wrap{animation:.24s cubic-bezier(.2,.8,.2,1) both auth-rise}@keyframes auth-rise{0%{opacity:0;transform:translateY(8px)scale(.985)}}@media (height<=760px) and (width>=901px){.landing-lede{margin-top:14px}.landing-cta{margin-top:22px}.landing-features{gap:14px 24px;margin-top:28px;padding-top:20px}}@media (width<=900px){.landing-page{padding:0 16px}.landing-hero{grid-template-columns:minmax(0,1fr);gap:48px;padding:32px 0 16px}.preview{max-height:none}}@media (width<=520px){.landing-features{grid-template-columns:1fr}.landing-copy br.wide{display:none}}.promo-num{width:96px}.promo-input,.promo-code{font-family:var(--font-mono);letter-spacing:.02em}.promo-actions{justify-content:space-between;align-items:center;gap:8px;width:100%;display:flex}.promo-count{color:var(--ink-faint);font-variant-numeric:tabular-nums}.promo-log{border-top:1px solid var(--hairline);margin-top:12px}.promo-log .who b.promo-code{font-size:12.5px}.form-msg .promo-copy{vertical-align:middle;margin-left:4px}.promo-fields-2{align-items:flex-start}.promo-by{width:200px}.promo-exact{min-width:0;color:var(--ink);cursor:pointer;flex:1;align-items:flex-start;gap:8px;padding-top:22px;font-size:12.5px;display:flex}.promo-exact input{accent-color:var(--accent);margin:2px 0 0}.promo-exact span{flex-direction:column;gap:3px;min-width:0;display:flex}.promo-exact em{color:var(--ink-muted);overflow-wrap:anywhere;font-size:11px;font-style:normal}.promo-log li.off .who b,.promo-log li.off .who em{color:var(--ink-faint)}.promo-status{background:var(--surface-sunk);font:500 10.5px/1.5 var(--font-sans);letter-spacing:0;color:var(--ink-muted);vertical-align:1px;border-radius:999px;margin-left:8px;padding:1px 7px}.promo-log .promo-disable{color:var(--ink-faint)}.promo-log .promo-disable:hover{color:var(--ink)}.promo-link{font:500 12px/1.4 var(--font-sans);color:var(--ink-muted);text-decoration:underline;-webkit-text-decoration-color:var(--hairline-firm);text-decoration-color:var(--hairline-firm);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;margin-top:14px;padding:0;display:block}.promo-link:hover{color:var(--ink);text-decoration-color:currentColor}.promo-redeem{flex-direction:column;gap:8px;margin-top:14px;display:flex}.promo-row{gap:8px;display:flex}.promo-row .input{flex:1;min-width:0}.promo-row .btn{border-radius:var(--radius-lg);height:40px;padding:0 16px}.pricing-modal{width:680px}.pricing-top{text-align:center;flex-direction:column;align-items:center;padding:14px 0 18px;display:flex}.pricing-toggle{background:var(--surface-hover);border:1px solid var(--hairline);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.pricing-toggle button{height:28px;color:var(--ink-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.pricing-toggle button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.pricing-save{color:var(--success);background:var(--success-tint);border-radius:999px;padding:1px 6px;font-size:10.5px;font-weight:600}.pricing-price{align-items:baseline;gap:4px;min-height:48px;margin-top:16px;display:flex}.pricing-price b{letter-spacing:-.03em;font-size:40px;font-weight:650;line-height:1.1}.pricing-price b.loading{width:72px}.pricing-price span{color:var(--ink-muted);font-size:15px}.pricing-sub{color:var(--ink-muted);margin:4px 0 0;font-size:12.5px}.pricing-features{border-top:1px solid var(--hairline);grid-template-columns:1fr 1fr;gap:4px 24px;display:grid}.modal .pricing-features section{border:0;padding:14px 0 4px}.pricing-features ul{gap:7px;margin:0;padding:0;list-style:none;display:grid}.pricing-features li{color:var(--ink);align-items:flex-start;gap:8px;font-size:12.5px;line-height:1.4;display:flex}.pricing-features li svg{color:var(--accent);flex:none;margin-top:2px}.pricing-cta{background:var(--surface);border-top:1px solid var(--hairline);border-radius:0 0 18px 18px;flex-direction:column;align-items:stretch;gap:8px;margin:10px -20px -20px;padding:14px 20px 18px;display:flex;position:sticky;bottom:-20px}.pricing-go{justify-content:center;height:40px;font-size:14px}.pricing-fine{color:var(--ink-faint);text-align:center;margin:0;font-size:11.5px;line-height:1.45}.pricing-fine a{color:inherit}@media (width<=560px){.pricing-features{grid-template-columns:1fr}}.landing-price .linkish{font:inherit;color:var(--accent-ink);cursor:pointer;background:0 0;border:0;padding:0}.landing-price .linkish:hover{text-underline-offset:2px;text-decoration:underline}.editor{background:var(--canvas);min-height:0;color:var(--ink);flex-direction:column;flex:1;display:flex}.toolbar{border-bottom:1px solid var(--hairline);z-index:5;flex:none;align-items:center;gap:8px;height:48px;padding:0 12px;display:flex;position:relative}.toolbar .title{letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;max-width:280px;font-size:13px;font-weight:600;overflow:hidden}.toolbar .spacer{flex:1}.toolbar .meta{color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.toolbar .meta b{color:var(--ink);font-weight:600}.toolbar .finish{border:1px solid var(--hairline-firm);border-radius:var(--radius-md);background:var(--surface-sunk);white-space:nowrap;flex:none;align-items:baseline;gap:7px;padding:4px 11px;display:flex}.toolbar .finish .k{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);font-size:10px;font-weight:600}.toolbar .finish b{letter-spacing:-.015em;font-variant-numeric:tabular-nums;color:var(--ink);font-size:14px;font-weight:600}.toolbar button.finish{font:inherit;cursor:pointer;align-items:center}.toolbar button.finish:hover,.toolbar button.finish.open{border-color:var(--accent-line)}.toolbar .finish .i{color:var(--ink-faint);margin-left:-1px;display:grid}.toolbar button.finish:hover .i,.toolbar button.finish.open .i{color:var(--accent)}.pop.stats{min-width:230px}.pop.stats dl{gap:5px;margin:0;display:grid}.pop.stats dl>div{justify-content:space-between;gap:18px;font-size:12.5px;display:flex}.pop.stats dt{color:var(--ink-muted)}.pop.stats dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.cluster{border:1px solid var(--hairline-firm);border-radius:var(--radius-md);background:var(--surface);flex:none;align-items:center;display:flex;overflow:hidden}.cluster>.btn{height:30px;box-shadow:none;border:0;border-radius:0}.cluster>.btn-icon{width:32px}.cluster>.btn+.btn{box-shadow:inset 1px 0 0 var(--hairline)}.cluster>.btn.is-active{border:0}.cluster>.btn:active:not(:disabled){transform:none}.cluster .zoomlabel{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;text-align:center;min-width:46px;box-shadow:inset 1px 0 0 var(--hairline);padding:0 8px;font-size:11px;line-height:26px}.toolbar .title-edit{border-radius:var(--radius-md);cursor:text;margin-left:-8px;padding:4px 8px;transition:background .12s}.toolbar .title-edit:hover{background:var(--surface-sunk)}.toolbar .title-input{width:260px;height:30px;font:600 13px/1 var(--font-sans);letter-spacing:-.015em;color:var(--ink);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius-md);box-shadow:0 0 0 2px var(--accent-ring);outline:none;padding:0 8px}.workarea{flex:1;min-height:0;display:flex;position:relative}.schedule{flex:1;min-width:0;min-height:0;display:flex;position:relative}.schedule[hidden]{display:none}.pane-left{background:var(--canvas);flex-direction:column;flex:none;min-width:0;display:flex}.pane-right{flex-direction:column;flex:1;min-width:0;display:flex}.splitter{background:var(--hairline);cursor:col-resize;z-index:3;flex:none;width:1px;position:relative}.splitter:after{content:"";position:absolute;inset:0 -4px}.splitter:hover,.splitter.active{background:var(--accent);box-shadow:0 0 0 1px var(--accent-line)}.head{height:var(--head-h);border-bottom:1px solid var(--hairline-firm);background:var(--surface);flex:none;position:relative;overflow:hidden}.body-viewport{flex:1;position:relative;overflow:hidden}.gantt-viewport{flex:1;position:relative;overflow:auto}.thead{align-items:flex-end;height:100%;display:flex}.thead .th{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;padding:0 8px 9px;font-size:10.5px;font-weight:600;overflow:hidden}.thead .th.num{text-align:right;justify-content:flex-end;display:flex}.thead .th{position:relative}.col-seam{cursor:col-resize;z-index:2;touch-action:none;width:7px;position:absolute;top:0;bottom:0;right:0}.col-seam.last{right:4px}.col-seam:after{content:"";background:var(--accent);opacity:0;border-radius:1px;width:2px;transition:opacity .1s;position:absolute;top:6px;bottom:6px;right:0}.col-seam:hover:after,.col-seam.active:after{opacity:1}.thead .th.th-dates{align-self:stretch;align-items:flex-end;padding:0 0 9px;display:flex;position:relative}.th-dates>span{flex:none;padding:0 8px;position:relative;overflow:hidden}.th-dates:before{content:"";background:var(--accent-tint);opacity:0;pointer-events:none;border-radius:6px;height:26px;transition:opacity .12s;position:absolute;bottom:2px;left:2px;right:2px}.th-dates:has(>.dates-toggle:hover):before{opacity:1}.th-dates:has(>.dates-toggle:hover)>span{color:var(--accent-ink)}.dates-toggle{border:1px solid var(--hairline-firm);background:var(--surface);width:20px;height:20px;color:var(--ink-muted);border-radius:5px;justify-content:center;align-items:center;margin:0;padding:0;transition:color .1s,border-color .1s,background .1s;display:inline-flex}.dates-toggle:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-tint)}.th .dates-toggle svg{margin:0}.th-dates>.dates-toggle{position:absolute;bottom:5px;right:9px}.thead .th.dates-strip{background:var(--surface-hover);border-radius:6px 6px 0 0;justify-content:center;padding:0 0 5px;display:flex}.td.dates-folded{background:var(--surface-hover);opacity:.6;height:100%;padding:0}.trow{height:var(--row-h);border-bottom:1px solid var(--line-soft);cursor:default;-webkit-user-select:none;user-select:none;align-items:center;display:flex;position:relative}.trow:hover{background:var(--surface-hover)}.trow.sel,.trow.sel:hover{background:var(--accent-tint)}.trow.sel:before{content:"";background:var(--accent);width:2px;position:absolute;top:0;bottom:0;left:0}.trow.droptarget{background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-line)}.trow.moving{opacity:.42}.tbody{position:relative}.dropline{background:var(--accent);pointer-events:none;z-index:2;border-radius:1px;height:2px;position:absolute;right:8px}.dropline:before{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;left:-4px}.td.grip{color:var(--ink-faint);cursor:grab;opacity:0;justify-content:center;padding:0 2px 0 4px}.td.grip:active{cursor:grabbing}.trow:hover .td.grip,.trow.sel .td.grip{opacity:1}.td.grip:hover{color:var(--ink)}.td{white-space:nowrap;text-overflow:ellipsis;align-items:center;height:100%;padding:0 8px;display:flex;overflow:hidden}.td.num,.td.dur,.td.float{font-variant-numeric:tabular-nums;justify-content:flex-end}.td.float{color:var(--ink-faint);font-size:12px}.td.float.zero{color:var(--crit)}.td.date{font-variant-numeric:tabular-nums;color:var(--ink-muted)}.td.code{font-variant-numeric:tabular-nums;color:var(--ink-faint);cursor:pointer;justify-content:flex-end;font-size:11.5px}.td.pred{font-variant-numeric:tabular-nums}.td.done{justify-content:center;padding:0}.td.done input{width:13px;height:13px;accent-color:var(--accent);cursor:pointer;margin:0}.td.done input:disabled{cursor:default}.th svg{margin:0 auto;display:block}.trow.done .tname .label{color:var(--ink-faint)}.td.assignee{text-overflow:ellipsis;white-space:nowrap;color:var(--ink-muted);overflow:hidden}.td.dur.editable,.td.pred.editable{color:var(--accent-ink)}.td.dur.derived{color:var(--ink-faint)}.td.editable{cursor:pointer;border-radius:var(--radius-sm)}.td.editable:hover{background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline)}.td.editing,.td.editing:hover{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--accent);cursor:text}.td input{width:100%;height:100%;box-shadow:none;font:inherit;color:var(--ink);text-align:inherit;caret-color:var(--accent);background:0 0;border:0;border-radius:0;outline:none;padding:0}.td.dur input{text-align:right}.trow.sel .td.code{color:var(--accent-ink);font-weight:600}.trow.critical .td.code{color:var(--crit)}.rail{background:0 0;border-radius:1px;flex:none;width:2px;height:16px;margin-right:6px}.rail.g0{background:var(--grp-0)}.rail.g1{background:var(--grp-1)}.rail.g2{background:var(--grp-2)}.rail.g3{background:var(--grp-3)}.rail.g4{background:var(--grp-4)}.rail.g5{background:var(--grp-5)}.tname{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.tname .label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tname .label.untitled{color:var(--ink-faint)}.trow.summary .tname .label{letter-spacing:-.008em;font-weight:620}.trow.summary.g0 .tname .label{color:var(--grp-0)}.trow.summary.g1 .tname .label{color:var(--grp-1)}.trow.summary.g2 .tname .label{color:var(--grp-2)}.trow.summary.g3 .tname .label{color:var(--grp-3)}.trow.summary.g4 .tname .label{color:var(--grp-4)}.trow.summary.g5 .tname .label{color:var(--grp-5)}.trow.milestone .tname .label{font-weight:560}.twist{width:15px;height:15px;color:var(--ink-faint);cursor:pointer;border-radius:3px;flex:none;place-items:center;display:grid}.twist:hover{color:var(--ink);background:var(--hairline)}.twist svg{transition:transform .13s}.twist.collapsed svg{transform:rotate(-90deg)}.td.date.pinned{color:var(--ink);box-shadow:inset 2px 0 0 var(--accent)}.td.date.pinned.editable:hover{box-shadow:inset 2px 0 0 var(--accent), inset 0 0 0 1px var(--hairline)}.addrow{height:var(--row-h);color:var(--ink-faint);cursor:pointer;align-items:center;gap:6px;padding:0 8px 0 16px;display:flex}.addrow:hover{color:var(--accent-ink);background:var(--surface-hover)}.gantt{display:block}.gantt text{-webkit-user-select:none;user-select:none}.tl-month{fill:var(--ink);letter-spacing:-.005em;font-size:11.5px;font-weight:620}.tl-minor{fill:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:10px}.tl-band{fill:var(--surface-hover)}.tl-line{stroke:var(--hairline)}.tl-line-strong{stroke:var(--hairline-firm)}.grid,.g-rowband{pointer-events:none}.g-weekend{fill:var(--weekend)}.g-month{stroke:var(--hairline)}.g-rowline{stroke:var(--line-soft)}.g-rowband{fill:var(--accent-tint)}.g-today{stroke:var(--today);stroke-width:1px;stroke-dasharray:3 3}.g-today-cap{fill:var(--today)}.bar{fill:var(--bar);stroke:var(--bar-edge);stroke-width:.75px;cursor:grab}.bar.g0{fill:var(--grp-0-bar);stroke:var(--grp-0-edge)}.bar.g1{fill:var(--grp-1-bar);stroke:var(--grp-1-edge)}.bar.g2{fill:var(--grp-2-bar);stroke:var(--grp-2-edge)}.bar.g3{fill:var(--grp-3-bar);stroke:var(--grp-3-edge)}.bar.g4{fill:var(--grp-4-bar);stroke:var(--grp-4-edge)}.bar.g5{fill:var(--grp-5-bar);stroke:var(--grp-5-edge)}.bar.critical{fill:var(--crit-bar);stroke:var(--crit-edge)}.bar.sel{stroke:var(--accent);stroke-width:1.75px}.bar.dim{opacity:.18}.bar.done,.ms.done,.sumbar.done{fill-opacity:.35}[data-theme=dark] :is(.bar,.ms,.sumbar).done{fill-opacity:.5}.ms{fill:var(--ink);cursor:grab}.ms.g0{fill:var(--grp-0)}.ms.g1{fill:var(--grp-1)}.ms.g2{fill:var(--grp-2)}.ms.g3{fill:var(--grp-3)}.ms.g4{fill:var(--grp-4)}.ms.g5{fill:var(--grp-5)}.ms.critical{fill:var(--crit)}.ms.sel{stroke:var(--accent);stroke-width:1.75px}.ms.dim{opacity:.18}.sumbar{fill:var(--ink);cursor:grab}.sumbar.g0{fill:var(--grp-0)}.sumbar.g1{fill:var(--grp-1)}.sumbar.g2{fill:var(--grp-2)}.sumbar.g3{fill:var(--grp-3)}.sumbar.g4{fill:var(--grp-4)}.sumbar.g5{fill:var(--grp-5)}.sumbar.dim{opacity:.18}.sumbar.solid{stroke:none}.sumbar.sel{stroke:var(--accent);stroke-width:1.5px}.bar-label{fill:var(--ink-muted);dominant-baseline:middle;pointer-events:none;stroke:var(--canvas);stroke-width:3px;paint-order:stroke fill;font-size:11.5px}.label-bg{fill:var(--canvas);pointer-events:none}.label-bg.sel{fill:var(--accent-plate)}.bar-label.inside{fill:var(--ink);stroke:none}.bar-label.inside.on-fill{fill:var(--on-accent)}.bar-label.summary{font-weight:640}.bar-label.inside.summary{letter-spacing:.01em;font-size:10.5px}.floattail{stroke:var(--hairline-firm);pointer-events:none}.floattail line{stroke-dasharray:3 3}.floattail line.cap{stroke-dasharray:none}.handle{fill:#0000;cursor:ew-resize;pointer-events:all}.knob{fill:var(--surface);stroke:var(--accent);stroke-width:1.75px;pointer-events:none}.knob-hit{fill:#0000;cursor:crosshair;pointer-events:all}.knob-hit:hover+.knob,.knob.hot{fill:var(--accent)}.link{stroke:var(--ink-faint);fill:none;stroke-width:1.25px}.link.critical{stroke:var(--crit)}.link.sel{stroke:var(--accent);stroke-width:2.25px}.link.dim{opacity:.15}.link-hit{stroke:#0000;fill:none;stroke-width:11px;cursor:pointer;pointer-events:stroke}.link-arrow{fill:var(--ink-faint)}.link-arrow.critical{fill:var(--crit)}.link-arrow.sel{fill:var(--accent)}.link-arrow.dim{opacity:.15}.ghost{fill:var(--accent);opacity:.18;pointer-events:none}.ghost-outline{fill:none;stroke:var(--accent);stroke-width:1.25px;stroke-dasharray:3 2;pointer-events:none}.rubber{stroke:var(--accent);stroke-width:2px;fill:none;stroke-linecap:round;pointer-events:none}.rubber.bad{stroke:var(--danger)}.rubber-dot{fill:var(--accent);pointer-events:none}.rubber-dot.bad{fill:var(--danger)}.droprow{fill:var(--accent-tint);pointer-events:none}.droprow.bad{fill:var(--crit-soft)}.drop-target{fill:none;stroke:var(--accent);stroke-width:2px;pointer-events:none}.marquee{fill:var(--accent-tint);stroke:var(--accent-line);stroke-width:1px;pointer-events:none}.relbadge{fill:var(--accent);pointer-events:none}.relbadge.bad{fill:var(--danger)}.relbadge-text{fill:var(--on-accent);font-size:10px;font-weight:650;font-family:var(--font-mono);dominant-baseline:middle;text-anchor:middle;pointer-events:none}.drag-readout{fill:var(--accent-ink);font-variant-numeric:tabular-nums;pointer-events:none;font-size:11px;font-weight:600}.gantt.by-type .bar{fill:var(--type-task-bar);stroke:var(--type-task-edge)}.gantt.by-type .sumbar{fill:var(--type-summary)}.gantt.by-type .ms{fill:var(--type-milestone)}.gantt.by-type .bar.critical{fill:var(--crit-bar);stroke:var(--crit-edge)}.gantt.by-type .ms.critical{fill:var(--crit)}.gantt.by-type .bar.sel,.gantt.by-type .ms.sel{stroke:var(--accent)}.schedule.by-type .trow.summary .tname .label{color:var(--type-summary)}.pop{z-index:40;background:var(--surface);color:var(--ink);border:1px solid var(--hairline-firm);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);min-width:200px;padding:11px 12px;position:fixed}.pop h4{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 8px;font-size:10.5px;font-weight:600}.pop .row{align-items:center;gap:6px;margin-top:8px;display:flex}.pop input{width:100%;height:28px;font:inherit;font-family:var(--font-mono);color:var(--ink);background:var(--surface);border:1px solid var(--hairline-firm);border-radius:var(--radius-md);outline:none;padding:0 8px}.pop input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.pop .hint{color:var(--ink-faint);margin-top:8px;font-size:11px;line-height:1.45}.pop .rel{gap:4px;display:flex}.pop .rel .btn{font-family:var(--font-mono);flex:1}.pop-backdrop{z-index:39;position:fixed;inset:0}.constraint-prompt{width:330px}.constraint-prompt .cp-title{font-size:12.5px;font-weight:600;line-height:1.4}.constraint-prompt .hint{margin-top:4px}.constraint-prompt .row{margin-top:10px}.datepick{width:246px}.datepick .dp-head{justify-content:space-between;align-items:center;margin:10px 0 6px;display:flex}.datepick .dp-head .m{letter-spacing:-.005em;font-size:12.5px;font-weight:620}.datepick .dp-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.datepick .dp-dow{color:var(--ink-faint);text-align:center;text-transform:uppercase;letter-spacing:.04em;padding-bottom:3px;font-size:10px}.datepick .dp-day{border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;cursor:pointer;height:28px;color:var(--ink);border:1px solid #0000;place-items:center;font-size:12px;display:grid}.datepick .dp-day:hover{background:var(--surface-sunk)}.datepick .dp-day.other{color:var(--ink-faint)}.datepick .dp-day.weekend{color:var(--ink-faint);opacity:.45;cursor:not-allowed;background:var(--surface-sunk)}.datepick .dp-day.weekend:hover{background:var(--surface-sunk)}.datepick .dp-day.today{border-color:var(--today);color:var(--today);font-weight:620}.datepick .dp-day.cursor{border-color:var(--accent-line)}.datepick .dp-day.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.datepick .dp-day.on:hover{background:var(--accent-hover)}.datepick .dp-foot{border-top:1px solid var(--hairline);gap:6px;margin-top:9px;padding-top:9px;display:flex}.datepick .dp-foot .btn{flex:1}.tip{z-index:50;pointer-events:none;background:var(--tip-bg);color:var(--tip-ink);border:1px solid var(--tip-line);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-width:260px;padding:7px 9px;font-size:11.5px;line-height:1.5;position:fixed}.tip .t-name{margin-bottom:2px;font-weight:620}.tip .t-row{color:var(--tip-muted);font-variant-numeric:tabular-nums}.tip .t-row b{color:var(--tip-ink);font-weight:560}.tip .t-crit{color:var(--tip-crit);font-weight:600}.shortcuts{grid-template-columns:auto 1fr;align-items:center;gap:5px 16px;font-size:12px;display:grid}.shortcuts kbd{font-family:var(--font-mono);background:var(--surface-sunk);border:1px solid var(--hairline);color:var(--ink-muted);white-space:nowrap;border-bottom-width:2px;border-radius:4px;padding:2px 5px;font-size:10.5px}.shortcuts .d{color:var(--ink-muted)}.shortcuts .sect{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);grid-column:1/-1;margin-top:6px;font-size:10px;font-weight:600}.modal .field{grid-template-columns:112px 1fr;align-items:center;gap:10px;margin-bottom:8px;display:grid}.modal .field>label{color:var(--ink-muted);font-size:12.5px}.modal .field .note{color:var(--ink-faint);grid-column:2;margin:2px 0 0;font-size:11px;line-height:1.45}.seg{flex-wrap:wrap;gap:4px;display:flex}.modal input.project-start{width:160px;height:28px;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline-firm);border-radius:var(--radius-md);outline:none;padding:0 8px}.modal input.project-start:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:1px solid var(--hairline-firm);border-radius:var(--radius-sm);background:var(--canvas);gap:1px;padding:3px;display:flex;overflow:hidden}.swatch span{border-radius:3px;width:18px;height:18px;display:block}.swatch.wide span{border-radius:0;width:9px}.swatch.wide span:first-child{border-radius:3px 0 0 3px}.swatch.wide span:last-child{border-radius:0 3px 3px 0}.swatch:hover{border-color:var(--ink-faint)}.swatch.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.swatch.picker{cursor:pointer;position:relative}.swatch.picker input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.swatch.picker:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.modal .note .linkish{font:inherit;color:var(--accent-ink);cursor:pointer;background:0 0;border:0;padding:0}.modal .note .linkish:hover{text-underline-offset:2px;text-decoration:underline}.tinfo{border-radius:var(--radius-sm,4px);width:20px;height:20px;color:var(--ink-faint);cursor:pointer;opacity:0;background:0 0;border:0;flex:none;place-items:center;margin-left:auto;padding:0;display:grid}.trow:hover .tinfo,.trow.sel .tinfo,.tinfo:focus-visible,.tinfo.has-notes,.tinfo.open{opacity:1}.tinfo.has-notes{color:var(--accent)}.tinfo:hover,.tinfo.open{color:var(--accent);background:var(--accent-ring)}.details{z-index:30;background:var(--surface);width:360px;max-width:100%;color:var(--ink);border-left:1px solid var(--hairline-firm);box-shadow:var(--shadow-md);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}.details header{border-bottom:1px solid var(--hairline);align-items:center;gap:8px;padding:12px 10px 10px 16px;display:flex}.details header .code{font-variant-numeric:tabular-nums;color:var(--ink-faint);font-size:11.5px}.details header h3{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:14.5px;font-weight:600;overflow:hidden}.details header h3.untitled{color:var(--ink-faint)}.details-body{flex-direction:column;flex:1;gap:16px;min-height:0;padding:14px 16px 16px;display:flex;overflow:auto}.details h4{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 6px;font-size:10.5px;font-weight:600}.details-done{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.details-done.locked{cursor:default}.details-done input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;margin:0}.details-done input:disabled{cursor:default}.details-done .t-crit{color:var(--crit);margin-left:auto;font-size:11px;font-weight:600}.details .facts{gap:6px;margin:0;display:grid}.details .facts>div{justify-content:space-between;gap:18px;font-size:12.5px;display:flex}.details .facts dt{color:var(--ink-muted)}.details .facts dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font-weight:560}.details .rels{gap:12px;display:grid}.details .rels>*,.details .rels li{min-width:0}.details .rels ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.details .rels li{align-items:baseline;gap:8px;font-size:12.5px;display:flex}.details .rels .code{text-align:right;width:22px;color:var(--ink-faint);font-variant-numeric:tabular-nums;flex:none}.details .rels .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.details .rels .rel{font-family:var(--font-mono);color:var(--ink-muted);font-size:11.5px}.details .notes{flex-direction:column;flex:1;min-height:180px;display:flex}.details textarea{resize:none;min-height:160px;font:inherit;color:var(--ink);background:var(--canvas);border:1px solid var(--hairline-firm);border-radius:var(--radius-md);outline:none;flex:1;padding:9px 10px;font-size:13px;line-height:1.5}.details textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.details textarea[readonly]{background:0 0}.network{background:var(--canvas);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;min-width:0;position:relative;overflow:hidden}.network.panning{cursor:grabbing}.network-svg{width:100%;height:100%;display:block;position:absolute;inset:0}.network-empty{color:var(--ink-faint);place-items:center;margin:0;font-size:13px;display:grid;position:absolute;inset:0}.network-zoom{background:var(--surface);box-shadow:var(--shadow-md);position:absolute;top:16px;left:16px}.nnode{cursor:pointer}.network.panning .nnode{cursor:grabbing}.nbox{fill:var(--surface);stroke:var(--hairline-firm);stroke-width:1px}.nnode:hover .nbox{stroke:var(--accent-line)}.nnode.critical .nbox{stroke:var(--crit);stroke-width:1.5px}.nnode.sel .nbox{stroke:var(--accent);stroke-width:2px}.nrail{fill:#0000}.nnode.g0 .nrail{fill:var(--grp-0)}.nnode.g1 .nrail{fill:var(--grp-1)}.nnode.g2 .nrail{fill:var(--grp-2)}.nnode.g3 .nrail{fill:var(--grp-3)}.nnode.g4 .nrail{fill:var(--grp-4)}.nnode.g5 .nrail{fill:var(--grp-5)}.network text{dominant-baseline:middle;pointer-events:none}.ncode{fill:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:11px}.nname{fill:var(--ink);letter-spacing:-.005em;font-size:12px;font-weight:600}.nname.untitled{fill:var(--ink-faint);font-weight:500}.nmeta{fill:var(--ink-muted);font-variant-numeric:tabular-nums;font-size:11.5px}.nfloat{fill:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:11.5px}.nfloat.zero{fill:var(--crit);font-weight:600}.nms{fill:var(--ink-muted)}.nnode.critical .nms{fill:var(--crit)}.nnode.done :is(text,.nrail,.nms){opacity:.45}.nnode.dim{opacity:.18}.nedge path{fill:none;stroke:var(--ink-faint);stroke-width:1.25px}.nedge.crit path{stroke:var(--crit);stroke-width:1.75px}.nedge.sel path{stroke:var(--accent)}.nedge.dim{opacity:.18}.nedge text{font-size:10.5px;font-family:var(--font-mono);fill:var(--ink-muted);stroke:var(--canvas);stroke-width:3px;paint-order:stroke fill}.net-head{fill:var(--ink-faint)}.net-head.crit{fill:var(--crit)}.td.variance{font-variant-numeric:tabular-nums;color:var(--ink-faint);justify-content:flex-end;font-size:12px}.td.variance.late{color:var(--crit);font-weight:600}.td.variance.early{color:var(--success)}.baseline,.baseline-ms{fill:var(--ink-faint);opacity:.6;pointer-events:none}.baseline.dim,.baseline-ms.dim{opacity:.12}.deadline{color:var(--ink-muted);pointer-events:visibleStroke}.deadline line{stroke:currentColor;stroke-width:1.25px;stroke-dasharray:2 2}.deadline path{fill:currentColor}.deadline.missed{color:var(--crit)}.deadline.dim{opacity:.18}.toolbar .finish .slip{font-variant-numeric:tabular-nums;color:var(--ink-muted);background:var(--surface-hover);border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600}.toolbar .finish .slip.late{color:var(--crit);background:var(--crit-soft)}.pop.menu{min-width:240px;padding:5px;display:grid}.pop.menu button{text-align:left;border-radius:var(--radius-sm);color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;padding:7px 9px;font-size:13px}.pop.menu button:hover{background:var(--surface-hover)}.pop.menu .note{color:var(--ink-muted);margin:6px 8px;font-size:12px}.details-deadline{align-items:center;gap:8px;font-size:12.5px;display:flex}.details-deadline label{color:var(--ink-muted);flex:none}.details-deadline .input{flex:1;min-width:0;height:28px;padding:0 8px;font-size:12.5px}.details-deadline .linkish{font:inherit;color:var(--accent-ink);cursor:pointer;background:0 0;border:0;padding:0}.details-deadline .linkish:hover{text-underline-offset:2px;text-decoration:underline}.details-deadline .t-crit{color:var(--crit);flex:none;font-size:11px;font-weight:600}.details-deadline.missed .input{border-color:var(--crit)}.addrow-hint{color:var(--ink-faint);margin-left:8px}
