@import"https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400..600&family=Geist:wght@400..700&display=swap";.cdl{--client-primary: #1b2a4a;--client-secondary: #c9a45c;--brand-deep: color-mix(in oklab, var(--client-primary) 72%, #000);--brand-ink: color-mix(in oklab, var(--client-primary) 72%, #10131a);--brand-glow: color-mix(in oklab, var(--client-primary) 40%, #fff);--accent-ink: color-mix(in oklab, var(--client-secondary) 62%, #1a1408);--accent-glow: color-mix(in oklab, var(--client-secondary) 70%, #fff);--bg: #f5f6f8;--bg-glow: color-mix(in oklab, var(--client-primary) 10%, #f5f6f8);--surface: #ffffff;--surface-2: #fafbfc;--surface-3: #f2f4f7;--ink: #0f1219;--ink-2: #404654;--muted: #6a7080;--line: rgba(15, 18, 25, .08);--line-2: rgba(15, 18, 25, .05);--grid: rgba(15, 18, 25, .045);--s-late: #d92d20;--s-done: #12805c;--s-week: #5b6472;--s-planned: #5b6472;--s-paused: #8a90a0;--s-firm: #d92d20;--s-soft: #b8860b;--bar: #e4e7ec;--track-bg: #f7f8fa;--bar-fill: linear-gradient(90deg, #4b5563, #6b7280);--today: #0f1219;--glass: color-mix(in srgb, var(--surface) 72%, transparent);--shadow-sm: 0 1px 1px rgba(15, 18, 25, .04), 0 1px 3px rgba(15, 18, 25, .05);--shadow: 0 1px 1px rgba(15, 18, 25, .03), 0 2px 6px -1px rgba(15, 18, 25, .05), 0 12px 32px -12px rgba(15, 18, 25, .12);--radius: 18px;--radius-sm: 10px;--font: "Geist", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "Geist Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--ease: cubic-bezier(.22, 1, .36, 1);--label-w: 270px;color:var(--ink);font:400 15px/1.5 var(--font);font-feature-settings:"ss01";-webkit-font-smoothing:antialiased;background:radial-gradient(1100px 420px at 50% -120px,var(--bg-glow),transparent 70%) no-repeat,var(--bg);position:relative;flex:1;margin:0;padding:0 0 8px}@supports (color: oklch(from red l c h)){.cdl{--brand-deep: oklch(from var(--client-primary) clamp(.22, l, .38) min(c, .16) h);--brand-ink: oklch(from var(--client-primary) min(l, .42) c h);--brand-glow: oklch(from var(--client-primary) max(l, .8) min(c, .12) h);--accent-ink: oklch(from var(--client-secondary) min(l, .5) c h);--accent-glow: oklch(from var(--client-secondary) max(l, .78) c h)}}[data-theme=dark] .cdl{--bg: #0a0c10;--bg-glow: color-mix(in oklab, var(--client-primary) 26%, #0a0c10);--surface: #12151c;--surface-2: #151922;--surface-3: #1b202a;--ink: #eef0f4;--ink-2: #c0c5d0;--muted: #8c92a2;--line: rgba(255, 255, 255, .08);--line-2: rgba(255, 255, 255, .05);--grid: rgba(255, 255, 255, .04);--s-late: #ff7b6e;--s-done: #4fd6a0;--s-week: #aab2c0;--s-planned: #aab2c0;--s-paused: #8c92a2;--s-firm: #ff7b6e;--s-soft: #f2c14e;--bar: #2a303d;--track-bg: #151922;--bar-fill: linear-gradient(90deg, #9aa3b2, #c0c7d2);--today: #eef0f4;--glass: color-mix(in srgb, var(--surface) 70%, transparent);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 16px 40px -18px rgba(0, 0, 0, .7)}.cdl *,.cdl *:before,.cdl *:after{box-sizing:border-box}.cdl :focus-visible{outline:2px solid var(--client-secondary);outline-offset:2px;border-radius:6px}.cdl .wrap{width:min(1240px,100% - 32px);margin-inline:auto}.cdl .num{font-family:var(--mono);font-variant-numeric:tabular-nums}.cdl .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.cdl .deliv-preview-banner{width:min(1240px,100% - 32px);margin:16px auto 0}.cdl .client-brand{position:relative;display:inline-flex;align-items:center}.cdl .client-logo{display:block;height:100%;width:auto;max-width:100%;object-fit:contain}.cdl .client-logo-fallback{display:inline-flex;align-items:center;padding:.55em .9em;background:var(--brand-deep);color:#fff;font-weight:600;letter-spacing:.22em;font-size:.78rem;border-bottom:2px solid var(--client-secondary);white-space:nowrap}.cdl .cartouche{position:sticky;top:12px;z-index:20;margin-top:20px;display:grid;grid-template-columns:auto minmax(280px,1fr) auto;align-items:center;gap:14px 20px;padding:12px 14px 12px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:saturate(160%) blur(16px);backdrop-filter:saturate(160%) blur(16px);box-shadow:var(--shadow)}.cdl .c-logo .client-brand{height:48px;border-radius:10px;overflow:hidden;box-shadow:var(--shadow-sm)}.cdl .c-logo .client-brand.no-logo{overflow:visible;box-shadow:none}.cdl .c-client{min-width:0}.cdl .c-client h1{margin:0;font-weight:650;font-size:clamp(22px,2.6vw,28px);line-height:1.1;letter-spacing:-.035em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdl .c-sum{margin:3px 0 0;font-size:13.5px;color:var(--muted);font-variant-numeric:tabular-nums}.cdl .c-sum b{font-weight:600;color:var(--ink);font-family:var(--mono)}.cdl .c-sum .late{color:var(--s-late)}.cdl .c-tools{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px 12px;min-width:0}.cdl .search{position:relative;display:block}.cdl .search:before{content:"";position:absolute;left:13px;top:50%;width:12px;height:12px;margin-top:-8px;border:2px solid var(--muted);border-radius:50%;pointer-events:none}.cdl .search:after{content:"";position:absolute;left:25px;top:50%;width:6px;height:2px;margin-top:4px;background:var(--muted);transform:rotate(45deg);pointer-events:none}.cdl .search input{width:250px;max-width:100%;height:40px;padding:0 36px 0 38px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:400 14px var(--font);box-shadow:var(--shadow-sm);transition:border-color .2s,box-shadow .2s}.cdl .search input::placeholder{color:var(--muted)}.cdl .search input:focus{outline:none;border-color:color-mix(in oklab,var(--client-secondary) 60%,transparent);box-shadow:0 0 0 4px color-mix(in oklab,var(--client-secondary) 18%,transparent)}.cdl .search-clear{position:absolute;right:4px;top:4px;width:32px;height:32px;border:0;border-radius:9px;background:none;cursor:pointer;font-size:16px;color:var(--muted)}.cdl .search-clear:hover{background:var(--surface-3);color:var(--ink)}.cdl .check{position:relative;display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 14px 0 10px;border-radius:12px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm);font-size:13.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap}.cdl .check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:32px;height:18px;border-radius:99px;background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--line);position:relative;cursor:pointer;flex:none;transition:background .2s var(--ease)}.cdl .check input:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform .25s var(--ease)}.cdl .check input:checked{background:var(--brand-ink)}.cdl .check input:checked:after{transform:translate(14px)}.cdl .scale-ctl{display:inline-flex;height:40px;padding:4px;gap:2px;border-radius:12px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.cdl .scale-ctl button{border:0;background:none;padding:0 10px;border-radius:9px;font:500 12.5px var(--font);color:var(--muted);cursor:pointer;transition:background .2s,color .2s;white-space:nowrap}.cdl .scale-ctl button:hover{color:var(--ink);background:var(--surface-3)}.cdl .scale-ctl button.on{color:#fff;background:var(--brand-ink)}[data-theme=dark] .cdl .scale-ctl button.on{color:var(--surface);background:var(--brand-glow)}[data-theme=dark] .cdl .check input:checked{background:var(--brand-glow)}[data-theme=dark] .cdl .check input:checked:after{background:var(--surface)}.cdl .sheet{--project: var(--client-primary);margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cdl .sheet:first-of-type{margin-top:22px}.cdl .sheet-head{list-style:none;display:grid;grid-template-columns:40px minmax(0,1fr) auto auto 32px;align-items:center;gap:16px;padding:18px 20px 18px 22px;cursor:pointer;transition:background .2s}.cdl .sheet-head::-webkit-details-marker{display:none}.cdl .sheet-head:hover{background:var(--surface-2)}.cdl .sheet-num{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;font:500 12px var(--mono);color:#fff;background:linear-gradient(145deg,color-mix(in oklab,var(--project) 88%,#fff),color-mix(in oklab,var(--project) 80%,#000));box-shadow:0 4px 12px -4px color-mix(in oklab,var(--project) 60%,transparent),inset 0 1px #ffffff40}.cdl .sheet-name{font-weight:650;font-size:22px;line-height:1.1;letter-spacing:-.03em;min-width:0;overflow-wrap:anywhere}.cdl .sheet-name small{display:block;margin-top:4px;font:500 11px var(--mono);letter-spacing:.06em;color:var(--muted)}.cdl .sheet-state{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.cdl .tag{--state: var(--s-paused);display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px 0 9px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap;color:var(--state);background:color-mix(in oklab,var(--state) 11%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--state) 22%,transparent)}.cdl .tag:before{content:"";width:7px;height:7px;border-radius:2px;transform:rotate(45deg);background:currentColor}.cdl .tag.late{--state: var(--s-late)}.cdl .tag.ok{--state: var(--s-done)}.cdl .tag:not(.late):not(.ok):before{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}.cdl .sheet-next{text-align:right;font-size:12.5px;color:var(--muted);white-space:nowrap}.cdl .sheet-next b{font:600 16px var(--mono);color:var(--ink);margin:0 4px 0 8px;letter-spacing:-.02em}.cdl .sheet[open] .sheet-next{display:none}.cdl .sheet-toggle{width:32px;height:32px;border-radius:10px;background:var(--surface-3);position:relative;transition:transform .35s var(--ease),background .2s}.cdl .sheet-toggle:before{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-5px 0 0 -4px;border-right:2px solid var(--ink-2);border-bottom:2px solid var(--ink-2);transform:rotate(45deg)}.cdl .sheet[open] .sheet-toggle{transform:rotate(180deg)}.cdl .chart-scroll{overflow-x:auto;border-top:1px solid var(--line);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.cdl .chart{position:relative;min-width:900px}.cdl .crow{display:grid;grid-template-columns:var(--label-w) 1fr;border-bottom:1px solid var(--line-2);min-height:76px}.cdl .crow.l3{min-height:108px}.cdl .crow:last-child{border-bottom:0}.cdl .clabel{position:sticky;left:0;z-index:8;background:var(--surface);padding:10px 18px 10px 22px;border-right:1px solid var(--line-2);display:flex;flex-direction:column;justify-content:center;gap:3px}.cdl .clabel b{font-weight:600;font-size:14.5px;line-height:1.25;letter-spacing:-.01em}.cdl .clabel span{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.cdl .clabel .late{color:var(--s-late);font-weight:600}.cdl .clabel .ok{color:var(--s-done);font-weight:500}.cdl .track{position:relative;background-color:var(--track-bg);background-image:repeating-linear-gradient(90deg,var(--grid) 0 1px,transparent 1px calc(100% / 17))}.cdl .track:after{content:"";position:absolute;top:0;bottom:0;left:var(--today-x);width:2px;margin-left:-1px;background:var(--today);opacity:.9;z-index:1;transform-origin:top}.cdl .scale{min-height:46px;background:var(--surface-2)}.cdl .scale .clabel{background:var(--surface-2)}.cdl .scale .track{overflow:hidden;background-image:none}.cdl .month{position:absolute;top:0;bottom:0;border-left:1px solid var(--line);padding:8px 0 0 10px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.cdl .today-tag{position:absolute;bottom:6px;left:var(--today-x);transform:translate(-50%);z-index:2;padding:2px 8px;border-radius:99px;background:var(--today);color:var(--surface);font:600 10.5px/16px var(--mono);letter-spacing:.04em;white-space:nowrap;box-shadow:0 4px 10px -4px var(--today)}.cdl .bar{position:absolute;top:calc(50% - 5px);left:var(--s);width:var(--w);height:10px;border-radius:99px;background:var(--bar);overflow:hidden;z-index:1;transform-origin:left center}.cdl .bar i{display:block;height:100%;width:var(--p);border-radius:inherit;background:var(--bar-fill)}.cdl .bar.clip-start{border-top-left-radius:0;border-bottom-left-radius:0}.cdl .bar.k-paused{background:repeating-linear-gradient(-45deg,var(--surface-3) 0 4px,transparent 4px 8px);box-shadow:inset 0 0 0 1px var(--line)}.cdl .bar.k-paused i{background:var(--s-paused);opacity:.55}.cdl .tbd,.cdl .offwin{position:absolute;top:50%;transform:translateY(-50%);font-size:12.5px;color:var(--muted);z-index:2;white-space:nowrap}.cdl .tbd{left:calc(var(--today-x) + 14px);padding:4px 12px;border-radius:99px;border:1px dashed color-mix(in oklab,var(--muted) 60%,transparent);background:var(--surface)}.cdl .offwin{left:12px}.cdl .ms{--state: var(--s-planned);position:absolute;top:50%;left:var(--x);width:0;height:0;z-index:3}.cdl .ms.k-late{--state: var(--s-late)}.cdl .ms.k-done,.cdl .ms.k-done-today{--state: var(--s-done)}.cdl .ms.k-week,.cdl .ms.k-today{--state: var(--s-week)}.cdl .ms.k-paused{--state: var(--s-paused)}.cdl .ms-dia{position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:3px;transform:rotate(45deg);background:var(--state);box-shadow:0 0 0 3px var(--surface);transition:box-shadow .25s var(--ease);cursor:default}.cdl .ms.k-late .ms-dia{background:var(--state);box-shadow:0 0 0 3px var(--surface),0 0 0 5px color-mix(in oklab,var(--state) 35%,transparent)}.cdl .ms.k-paused .ms-dia{background:repeating-linear-gradient(45deg,var(--surface) 0 2px,color-mix(in oklab,var(--state) 40%,var(--surface)) 2px 4px)}.cdl .ms:hover .ms-dia,.cdl .ms.is-hot .ms-dia,.cdl .ms:focus-visible .ms-dia{box-shadow:0 0 0 3px var(--surface),0 0 0 9px color-mix(in oklab,var(--state) 22%,transparent),0 0 18px 4px color-mix(in oklab,var(--state) 30%,transparent)}.cdl .ms-date{position:absolute;left:0;transform:translate(-50%);padding:1px 5px;border-radius:6px;background:var(--surface);font:500 11px/14px var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap;z-index:2;letter-spacing:-.01em}.cdl .ms-date b{font-weight:600;margin-right:4px;color:var(--state)}.cdl .ms-date.up{bottom:11px}.cdl .ms-date.down{top:11px}.cdl .ms-date.up2{bottom:27px}.cdl .ms-date.down2{top:27px}.cdl :is(.ms,.wk).k-late .ms-date{color:var(--s-late);font-weight:600}.cdl :is(.ms,.wk):is(.k-done,.k-done-today) .ms-date{color:var(--ink-2)}.cdl .wk{--state: var(--s-planned);position:absolute;top:50%;left:var(--x);width:var(--wk-w);height:0}.cdl .wk.k-late{--state: var(--s-late)}.cdl .wk.k-done,.cdl .wk.k-done-today{--state: var(--s-done)}.cdl .wk.k-week{--state: var(--s-week)}.cdl .wk.k-paused{--state: var(--s-paused)}.cdl .wk-pill{position:absolute;z-index:2;left:1px;right:1px;top:-6px;height:12px;border-radius:99px;background:var(--state);box-shadow:0 0 0 3px var(--surface);transition:box-shadow .25s var(--ease);transform-origin:center}.cdl .wk.k-late .wk-pill{background:var(--state);box-shadow:0 0 0 3px var(--surface),0 0 0 5px color-mix(in oklab,var(--state) 35%,transparent)}.cdl .wk.k-paused .wk-pill{background:repeating-linear-gradient(45deg,var(--surface) 0 2px,color-mix(in oklab,var(--state) 40%,var(--surface)) 2px 4px)}.cdl .wk:hover .wk-pill,.cdl .wk.is-hot .wk-pill,.cdl .wk:focus-visible .wk-pill{box-shadow:0 0 0 3px var(--surface),0 0 0 8px color-mix(in oklab,var(--state) 22%,transparent),0 0 16px 4px color-mix(in oklab,var(--state) 30%,transparent)}.cdl .wk .ms-date{left:50%}.cdl .wk:focus-visible{outline:none}.cdl .wk:hover .ms-tip,.cdl .wk:focus-within .ms-tip{display:block}.cdl .wk.tip-left .ms-tip{left:auto;right:0;transform:none}.cdl .ms.c-firm .ms-date,.cdl .wk.c-soft .ms-date{color:var(--state);font-weight:600}.cdl .lg-dia.c-firm,.cdl .lg-pill.c-soft,.cdl .lg-dia.c-done{box-shadow:none;background:var(--state)}.cdl .legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:14px auto 0;font-size:12px;color:var(--muted)}.cdl .legend span{display:inline-flex;align-items:center;gap:8px}.cdl .lg-dia{width:9px;height:9px;border-radius:2px;transform:rotate(45deg);box-shadow:inset 0 0 0 1.5px var(--muted)}.cdl .lg-pill{width:22px;height:9px;border-radius:99px;box-shadow:inset 0 0 0 1.5px var(--muted)}.cdl .ms-tip{position:absolute;bottom:46px;left:50%;transform:translate(-50%);min-width:200px;padding:9px 12px;border-radius:10px;background:var(--ink);color:var(--surface);font-size:12.5px;font-weight:500;line-height:1.4;display:none;pointer-events:none;z-index:9;box-shadow:var(--shadow)}.cdl .ms-tip span{display:block;font-weight:400;font-size:11.5px;opacity:.7}.cdl .ms.tip-left .ms-tip{left:auto;right:-14px;transform:none}.cdl .ms:hover .ms-tip,.cdl .ms:focus-within .ms-tip{display:block}.cdl .ms:focus-visible{outline:none}.cdl .ms:hover,.cdl .ms:focus-within{z-index:40}.cdl .wk .ms-tip{z-index:40}.cdl .tip-below .ms-tip{bottom:auto;top:30px}.cdl table{width:100%;border-collapse:collapse;border-top:1px solid var(--line);font-size:14px}.cdl tr{--state: var(--s-planned)}.cdl tr.k-late{--state: var(--s-late)}.cdl tr.k-done,.cdl tr.k-done-today{--state: var(--s-done)}.cdl tr.k-week,.cdl tr.k-today{--state: var(--s-week)}.cdl tr.k-paused,.cdl tr.k-unplanned{--state: var(--s-paused)}.cdl td{padding:12px;border-bottom:1px solid var(--line-2);vertical-align:baseline;transition:background .2s}.cdl td:first-child{padding-left:22px;box-shadow:inset 3px 0 0 transparent;transition:box-shadow .2s,background .2s}.cdl td:last-child{padding-right:22px}.cdl tr:last-child td{border-bottom:0}.cdl tbody tr:hover td,.cdl tr.is-hot td{background:color-mix(in oklab,var(--state) 7%,var(--surface))}.cdl tbody tr:hover td:first-child,.cdl tr.is-hot td:first-child{box-shadow:inset 3px 0 0 var(--state)}.cdl td.t-date{width:110px;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}.cdl td.t-date b{font-size:15px;font-weight:600;color:var(--ink);letter-spacing:-.02em}.cdl td.t-date span{margin-left:7px;font-family:var(--font);font-size:12px;color:var(--muted)}.cdl td.t-date .wk-range{display:block;margin:1px 0 0;font-size:12px}.cdl tr.soft td.t-state:before{width:13px;height:7px;border-radius:99px;transform:translateY(-1px)}.cdl td.t-what b{font-weight:600;letter-spacing:-.005em}.cdl td.t-what{color:var(--ink-2)}.cdl td.t-what small{margin-left:8px;font-size:12px;color:var(--muted)}.cdl td.t-state{width:1%;white-space:nowrap;text-align:right;font-size:13px;font-weight:600;color:var(--state)}.cdl td.t-state:before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:2px;transform:translateY(-1px) rotate(45deg);background:var(--state)}.cdl tr.k-planned td.t-state:before,.cdl tr.k-paused td.t-state:before,.cdl tr.k-unplanned td.t-state:before{background:transparent;box-shadow:inset 0 0 0 1.5px var(--state)}.cdl tr.k-unplanned td.t-state,.cdl tr.k-paused td.t-state{font-weight:500}.cdl td.t-state span{display:block;font-weight:400;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}.cdl tr.k-late td.t-date b{color:var(--s-late)}.cdl td.t-prod{width:30%;min-width:180px;vertical-align:top}.cdl td.t-prod b{display:block;font-weight:600;letter-spacing:-.005em}.cdl td.t-prod span{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.cdl td.t-prod .late{color:var(--s-late);font-weight:600}.cdl td.t-prod .ok{color:var(--s-done);font-weight:500}.cdl td.t-dls{vertical-align:top}.cdl td.t-dls{display:flex;flex-wrap:wrap;gap:6px}.cdl .dl-none{font-size:12.5px;color:var(--muted);padding:4px 0}.cdl .dl{--state: var(--s-planned);display:inline-flex;align-items:center;gap:8px;padding:5px 10px 5px 8px;border-radius:10px;font-size:12.5px;color:var(--ink-2);background:color-mix(in oklab,var(--state) 8%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--state) 28%,transparent);transition:box-shadow .2s,background .2s;cursor:default}.cdl .dl:hover,.cdl .dl.is-hot{background:color-mix(in oklab,var(--state) 16%,var(--surface));box-shadow:inset 0 0 0 1px var(--state)}.cdl .dl-ico{width:9px;height:9px;border-radius:2px;transform:rotate(45deg);background:var(--state);flex:none}.cdl .dl.soft .dl-ico{width:16px;height:8px;border-radius:99px;transform:none}.cdl .dl.k-late .dl-ico{box-shadow:0 0 0 3px color-mix(in oklab,var(--state) 30%,transparent)}.cdl .dl-date{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600;color:var(--state);white-space:nowrap}.cdl .dl-date small{margin-left:5px;font-family:var(--font);font-weight:400;font-size:11.5px;color:var(--muted)}.cdl .dl-name{font-weight:500;color:var(--ink)}.cdl .dl-state{font-size:11.5px;color:var(--muted);white-space:nowrap}.cdl .dl.k-late .dl-state{color:var(--s-late);font-weight:600}.cdl .empty{margin-top:22px;padding:32px;text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted)}.cdl .foot{margin:44px auto 0;padding:18px 0 34px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}.cdl .foot strong{color:var(--ink-2);font-weight:600}.cdl .vertex-mark{vertical-align:-3px;margin-right:6px;color:var(--ink-2)}@keyframes cdl-bar-draw{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes cdl-line-draw{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes cdl-dia-pop{0%{opacity:0;transform:rotate(45deg) scale(.3)}70%{opacity:1;transform:rotate(45deg) scale(1.18)}to{opacity:1;transform:rotate(45deg) scale(1)}}@keyframes cdl-label-in{0%{opacity:0;transform:translate(-50%,var(--dy, 4px))}to{opacity:1;transform:translate(-50%)}}@keyframes cdl-row-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes cdl-fade-in{0%{opacity:0}to{opacity:1}}@keyframes cdl-pill-in{0%{opacity:0;transform:scaleX(.25)}70%{opacity:1;transform:scaleX(1.06)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:no-preference){.cdl .sheet:not(.is-in) .bar{transform:scaleX(0)}.cdl .sheet:not(.is-in) .track:after{transform:scaleY(0)}.cdl .sheet:not(.is-in) :is(.ms-dia,.wk-pill,.ms-date,.today-tag,.tbd,.offwin,tbody tr){opacity:0}.cdl .sheet.is-in .bar{animation:cdl-bar-draw .6s var(--ease) both;animation-delay:calc(var(--i, 0) * 70ms + 80ms)}.cdl .sheet.is-in .track:after{animation:cdl-line-draw .32s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(var(--i, 0) * 45ms)}.cdl .sheet.is-in .today-tag{animation:cdl-fade-in .3s ease both}.cdl .sheet.is-in :is(.tbd,.offwin){animation:cdl-fade-in .4s ease both;animation-delay:calc(var(--i, 0) * 70ms + .2s)}.cdl .sheet.is-in .ms-dia{animation:cdl-dia-pop .42s var(--ease) both;animation-delay:calc(var(--i, 0) * 70ms + .3s + var(--j, 0) * 45ms)}.cdl .sheet.is-in .wk-pill{animation:cdl-pill-in .45s var(--ease) both;animation-delay:calc(var(--i, 0) * 70ms + .3s + var(--j, 0) * 45ms)}.cdl .sheet.is-in .ms-date{animation:cdl-label-in .36s var(--ease) both;animation-delay:calc(var(--i, 0) * 70ms + .42s + var(--j, 0) * 45ms)}.cdl .ms-date.down,.cdl .ms-date.down2{--dy: -4px}.cdl .sheet.is-in tbody tr{animation:cdl-row-in .45s var(--ease) both;animation-delay:calc(var(--k, 0) * 40ms + .26s)}}@media(prefers-reduced-motion:reduce){.cdl *,.cdl *:before,.cdl *:after{transition:none!important;animation:none!important}}@media(max-width:1180px){.cdl .cartouche{grid-template-columns:auto minmax(0,1fr)}.cdl .c-tools{grid-column:1 / -1;justify-content:flex-start}.cdl .search{flex:1 1 220px}.cdl .search input{width:100%}}@media(max-width:640px){.cdl{--label-w: 150px}.cdl .cartouche{position:static;margin-top:14px;gap:12px 14px;grid-template-columns:minmax(0,1fr)}.cdl .c-logo .client-brand{height:40px}.cdl .c-client{grid-column:1}.cdl .c-client h1{font-size:22px;white-space:normal}.cdl .c-sum{font-size:12.5px}.cdl .c-tools{grid-column:1}.cdl table,.cdl tbody,.cdl tr{display:block;width:100%}.cdl tr{padding:10px 14px 12px;border-bottom:1px solid var(--line-2)}.cdl tr:last-child{border-bottom:0}.cdl td{display:block;padding:0;border:0}.cdl td.t-prod{width:auto;min-width:0;margin-bottom:8px}.cdl td.t-dls{display:flex;flex-wrap:wrap;gap:6px}.cdl .dl{max-width:100%;flex-wrap:wrap;row-gap:2px;padding:6px 10px 6px 8px}.cdl .dl-state{white-space:normal;flex-basis:100%;padding-left:17px}.cdl tbody tr:hover td{background:none}.cdl tbody tr:hover td:first-child{box-shadow:none}.cdl .check{flex:1 1 auto}.cdl .scale-ctl{flex:1 1 100%;justify-content:space-between}.cdl .scale-ctl button{flex:1;padding:0 4px}.cdl .sheet-head{grid-template-columns:36px minmax(0,1fr) 32px;gap:8px 12px;padding:14px}.cdl .sheet-num{width:32px;height:32px;align-self:start;grid-row:span 3}.cdl .sheet-name{font-size:20px}.cdl .sheet-state,.cdl .sheet-next{grid-column:2;justify-content:flex-start;text-align:left}.cdl .sheet-state{grid-row:2}.cdl .sheet-state:empty{display:none}.cdl .sheet-next{grid-row:3}.cdl .sheet-next b{margin-left:4px}.cdl .sheet-toggle{grid-column:3;grid-row:1}.cdl .clabel{padding:8px 10px 8px 14px}.cdl .clabel b{font-size:12.5px}.cdl .clabel span{font-size:11.5px}.cdl .chart{min-width:760px}}.cdl .ms.c-firm,.cdl .wk.c-firm,.cdl .dl.c-firm{--state: var(--s-firm)}.cdl .ms.c-soft,.cdl .wk.c-soft,.cdl .dl.c-soft{--state: var(--s-soft)}.cdl .ms.c-done,.cdl .wk.c-done,.cdl .dl.c-done{--state: var(--s-done)}.cdl .ms.c-paused,.cdl .wk.c-paused,.cdl .dl.c-paused,.cdl .ms.c-unplanned,.cdl .dl.c-unplanned{--state: var(--s-paused)}.cdl .lg-dia.c-firm{--state: var(--s-firm)}.cdl .lg-pill.c-soft{--state: var(--s-soft)}.cdl .lg-dia.c-done{--state: var(--s-done)}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--grid-line: #eef1f6;--weekend: #dee3e7;--holiday: #fbf4de;--stripe: rgba(241, 245, 249, .6);--border: #e2e8f0;--border-2: #cbd5e1;--dep-line: #b7c3d2;--dep-line-hard: #7d8ea6;--muted-4: #b6c2d1;--muted-3: #94a3b8;--muted: #64748b;--text-3: #475569;--text-2: #334155;--text: #1e293b;--ink: #0f172a;--accent: #6366f1;--accent-2: #4f46e5;--accent-3: #818cf8;--accent-4: #a5b4fc;--accent-soft: #eef2ff;--accent-soft-2: #e0e7ff;--accent-soft-border: #c7d2fe;--accent-text: #4338ca;--ok: #16a34a;--ok-2: #15803d;--ok-soft: #f0fdf4;--ok-soft-2: #dcfce7;--warn-text: #b45309;--warn-2: #d97706;--warn-soft: #fffbeb;--warn-soft-2: #fef3c7;--warn-border: #fcd34d;--danger: #dc2626;--danger-2: #b91c1c;--danger-soft: #fef2f2;--danger-soft-2: #fee2e2;--danger-border: #fca5a5;--glass: rgba(255, 255, 255, .96);--wl-fill: #e9eff2;--wl-fill-cap: #92cbdb;--wl-fill-over: #cb8e89;--wl-track: #ffffff;--wl-track-over: #f2e3e1;--wl-num: #3b4754;--wl-num-over: #43302e}[data-theme=dark]{color-scheme:dark;--surface: #23262b;--surface-2: #2a2e34;--surface-3: #17191d;--grid-line: #2b2f35;--weekend: #131519;--holiday: #2a2620;--stripe: rgba(255, 255, 255, .045);--border: #383e46;--border-2: #4b525c;--dep-line: #5b6572;--dep-line-hard: #93a1b5;--muted-4: #5d6673;--muted-3: #7d8794;--muted: #9aa4b0;--text-3: #b9c2cc;--text-2: #cbd3dc;--text: #e4e9ef;--ink: #f2f5f8;--accent: #6d78f2;--accent-2: #8f99f7;--accent-3: #7f8af5;--accent-4: #565fbe;--accent-soft: #262a45;--accent-soft-2: #2e3357;--accent-soft-border: #474f88;--accent-text: #b3bcff;--ok: #2fbf68;--ok-2: #4ade80;--ok-soft: #17251c;--ok-soft-2: #1e3527;--warn-text: #e6b054;--warn-2: #f0b429;--warn-soft: #2a2415;--warn-soft-2: #383019;--warn-border: #6d5b23;--danger: #ef5350;--danger-2: #ff7b7b;--danger-soft: #2c1b1b;--danger-soft-2: #3a2222;--danger-border: #7a3d3d;--glass: rgba(35, 38, 43, .96);--wl-fill: #33414c;--wl-fill-cap: #397089;--wl-fill-over: #93534d;--wl-track: #1f2328;--wl-track-over: #33221f;--wl-num: #dde4eb;--wl-num-over: #f0dcd9}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--text);background:var(--surface-3)}.shell{display:flex;flex-direction:column;height:100%}.main{flex:1;overflow:auto;display:flex;flex-direction:column}.topnav{display:flex;align-items:center;gap:4px;background:#1a1c1f;color:var(--border);padding:0 16px;height:48px;flex-shrink:0}.nav-brand{display:flex;align-items:center;gap:9px;margin-right:16px}.nav-logo{height:30px;width:auto;display:block}.nav-brand-app{color:#fff;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;border-left:1px solid rgba(255,255,255,.28);padding-left:9px;line-height:1}.topnav a{color:#94a3b8;text-decoration:none;padding:6px 12px;border-radius:6px;font-weight:500}.topnav a:hover{color:#fff;background:#ffffff14}.topnav a.active{color:#fff;background:#ffffff24}.topnav .btn.ghost{color:#94a3b8}.topnav .btn.ghost:hover{color:#fff;background:#ffffff14}.nav-user{margin:0 8px 0 4px;color:#cbd5e1}.spacer{flex:1}.sep{width:1px;height:20px;background:var(--border-2);margin:0 6px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0;cursor:pointer}.page{padding:20px 28px;max-width:1100px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-header h1{margin:0;font-size:20px}.page-center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:8px;color:var(--muted)}.muted{color:var(--muted)}.error{color:var(--danger);font-size:13px}.badge{display:inline-block;background:#8b5cf6;color:#fff;font-size:10px;line-height:1;padding:3px 6px;border-radius:8px;margin-left:8px;vertical-align:1px}.muted-badge{background:var(--muted-3)}.tpl-badge{background:#0d9488}.btn{border:1px solid var(--border-2);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 12px;cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap}.btn:hover{background:var(--surface-2);border-color:var(--muted-3)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-2)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--border)}.btn.ghost.active{background:var(--accent-soft-2);color:var(--accent-2)}.btn.wide{width:100%}.btn.danger-outline{border-color:var(--danger-border);color:var(--danger);margin-top:12px}.btn.danger-outline:hover{background:var(--danger-soft)}.btn:disabled{opacity:.6;cursor:default}.btn-icon{border:none;background:transparent;cursor:pointer;padding:2px 6px;border-radius:4px;color:var(--muted);font-size:13px}.btn-icon:hover{background:var(--border);color:var(--text)}.btn-icon.danger:hover{background:var(--danger-soft-2);color:var(--danger)}input,select,textarea{font:inherit;border:1px solid var(--border-2);border-radius:6px;padding:6px 8px;background:var(--surface);color:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft-border);border-color:var(--accent-3)}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-weight:500;font-size:13px}.field-label{font-weight:500;font-size:13px;margin-bottom:6px}.field-row{display:flex;gap:12px}.field-row label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500;flex:1;margin-bottom:12px}.field-inline{display:flex;align-items:center;gap:6px;font-size:13px}.check-inline{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%;background:linear-gradient(135deg,var(--ink),var(--accent-text))}.login-card{background:var(--surface);border-radius:12px;padding:32px;width:min(340px,100% - 32px);box-shadow:0 20px 60px #0000004d}@media(max-width:640px){.login-wrap{padding:16px;min-height:100%;box-sizing:border-box}.login-card{padding:24px 20px}.login-brand{margin:-24px -20px 18px}.login-card input{font-size:16px;padding:10px 12px}.login-card .btn.wide{min-height:44px;font-size:15px}}@media(pointer:coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea{font-size:max(16px,1em)}}.login-brand{display:flex;flex-direction:column;align-items:center;gap:8px;background:#1a1c1f;margin:-32px -32px 22px;padding:26px 0 18px;border-radius:12px 12px 0 0}.login-brand-logo{height:56px;width:auto;display:block}.login-brand-app{color:#fff;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.42em;text-indent:.42em}.login-title{margin:0 0 18px;font-size:15px;font-weight:600;color:var(--text-2);text-align:center}.dash-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.search-wrap{position:relative;display:inline-flex;align-items:center}.search-ico{position:absolute;left:10px;font-size:12px;opacity:.5;pointer-events:none}.search-input{width:250px;padding:7px 28px 7px 30px;font-size:13px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface)}.search-input:focus{outline:none;border-color:var(--accent-3);box-shadow:0 0 0 3px #6366f11f}.search-clear{position:absolute;right:6px;border:none;background:none;cursor:pointer;color:var(--muted-3);font-size:11px;padding:2px 4px;border-radius:4px}.search-clear:hover{color:var(--text-3);background:var(--surface-3)}.tree-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:6px}.tree-panel .proj-row{border:none;background:transparent;margin:1px 0 1px 24px;padding:7px 10px}.tree-panel .proj-row:hover{background:var(--surface-3);border:none;box-shadow:none}.tree-panel>.root-dropzone>.proj-row{margin-left:2px}.tree-panel.flat .proj-row{margin-left:2px}.tree-empty{padding:12px;margin:0}.folder-empty{font-size:12px;padding:4px 10px 6px;margin-left:24px}.folder-block{margin:2px 0}.folder-head{display:flex;align-items:center;gap:8px;padding:7px 10px;font-weight:600;font-size:13.5px;border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.folder-head:hover{background:var(--surface-3)}.folder-head.dragging{opacity:.4}.folder-caret{width:12px;font-size:10px;color:var(--muted);flex-shrink:0}.folder-count{font-size:11px;font-weight:500;background:var(--border);color:var(--text-3);border-radius:10px;padding:0 7px;line-height:17px}.folder-head.drop-target{background:var(--accent-soft-2);box-shadow:inset 0 0 0 2px var(--accent-3)}.folder-actions{display:inline-flex;gap:2px;margin-left:4px;visibility:hidden;opacity:0}.folder-head:hover .folder-actions{visibility:visible;opacity:1}.drag-handle{cursor:grab;color:var(--border-2);font-size:12px;flex-shrink:0;touch-action:none}.drag-handle:hover{color:var(--muted)}.proj-row{cursor:default}.proj-row.dragging{opacity:.4}body.dragging-project{user-select:none;-webkit-user-select:none;cursor:grabbing}body.dragging-project *{cursor:grabbing!important}.root-dropzone{border-radius:8px;transition:background .12s}.root-dropzone.drop-target{background:var(--accent-soft-2);box-shadow:inset 0 0 0 2px var(--accent-3)}.root-drop-hint{margin:4px 0 4px 24px;padding:8px 12px;font-size:12px;color:var(--accent);border:1px dashed var(--accent-4);border-radius:8px;background:var(--accent-soft)}.drag-ghost-row{position:fixed;z-index:700;pointer-events:none;background:var(--accent-2);color:#fff;font-size:12.5px;font-weight:600;padding:5px 12px;border-radius:8px;box-shadow:0 8px 24px #0f172a47;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-panel.trash-block{margin-top:14px;background:var(--surface-2)}.trash-note{font-size:11px;font-weight:400;margin-left:6px}.proj-row.trashed{opacity:.85}.proj-row{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:4px 0 4px 24px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.proj-row:hover{border-color:var(--accent-4);box-shadow:0 1px 4px #4f46e514}.proj-dot{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}.proj-dot-wrap{position:relative;display:inline-flex;flex-shrink:0}.proj-dot.as-btn{border:1px solid rgba(0,0,0,.12);cursor:pointer;padding:0}.proj-dot.as-btn:disabled{cursor:default}.color-pop{position:absolute;top:100%;left:0;z-index:60;margin-top:5px;display:grid;grid-template-columns:repeat(5,22px);gap:5px;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;padding:8px;box-shadow:0 8px 24px #0f172a2e}.proj-name{font-weight:600;color:var(--text);text-decoration:none;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-name:hover{color:var(--accent-2)}.proj-meta{font-size:12px;width:195px;text-align:right;flex-shrink:0}.proj-progress{width:120px;flex:0 0 auto;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.proj-progress div{height:100%;background:var(--accent-4)}.proj-actions{display:flex;align-items:center;gap:4px;margin-left:auto}.proj-actions select{font-size:12px;padding:3px 4px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172acc;display:flex;align-items:center;justify-content:center;z-index:100}.dialog{background:var(--surface);border-radius:12px;padding:24px;width:440px;max-height:80vh;overflow:auto;box-shadow:0 20px 60px #0000004d}.dialog h2{margin:0 0 12px;font-size:17px}.dialog h3{margin:16px 0 8px;font-size:14px;color:var(--text-3)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.share-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0}.dialog.perm-dialog{width:720px;max-width:94vw;display:flex;flex-direction:column;overflow:hidden}.perm-body{flex:1;min-height:0;overflow-y:auto;padding-right:4px}.perm-legend{font-size:12px;margin:4px 0 10px}.perm-who{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.perm-role{font-size:11px;margin-left:4px}.perm-cell{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}.share-row select,.perm-noselect,.perm-col{width:118px;flex-shrink:0}.perm-noselect{text-align:center}.perm-eff,.perm-col.wide,.perm-spacer{width:210px;flex-shrink:0}.perm-head{font-size:10.5px;color:var(--muted-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--surface-3);padding-bottom:2px}.perm-eff{font-size:11px;color:var(--text-3);background:var(--surface-3);border-radius:8px;padding:3px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:help}.perm-eff.none{background:transparent;color:var(--border-2)}.perm-eff.locked{background:var(--border);color:var(--text-2)}.perm-eff.capped{background:var(--warn-soft);color:var(--warn-text);border:1px solid var(--warn-border)}.tpl-select{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;font:inherit;text-align:left;cursor:pointer;border:1px solid var(--border-2);border-radius:6px;background:var(--surface);color:var(--text)}.tpl-select .op-name{flex:1}.tpl-caret{color:var(--muted-3);font-size:10px;flex-shrink:0}.tpl-menu{width:420px}.tpl-menu .open-picker-list{max-height:40vh}.tpl-menu .badge{flex-shrink:0}.perm-box{border:1px solid var(--border);border-radius:8px;padding:8px 12px;max-height:34vh;overflow-y:auto;flex-shrink:0;margin-bottom:8px}.app-dialog-overlay{z-index:600}.app-dialog{width:420px;max-width:calc(100vw - 32px)}.app-dialog-msg{margin:0;font-size:14px;line-height:1.5;color:var(--text-2);white-space:pre-wrap}.app-dialog-input{width:100%;margin-top:12px;padding:8px 10px;font-size:14px;border:1px solid var(--border-2);border-radius:8px;box-sizing:border-box}.app-dialog-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #6366f126}.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger-solid:hover{background:var(--danger-2);border-color:var(--danger-2)}.devis-dialog{width:980px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column}.devis-meta{margin:0 0 10px}.devis-cols{display:flex;gap:16px;min-height:0;flex:1}.devis-lines,.devis-tree{flex:1;overflow:auto;border:1px solid var(--border);border-radius:8px;padding:8px 10px;max-height:44vh}.devis-lines h3,.devis-tree h3{margin:2px 0 8px;font-size:12.5px}.devis-line{padding:5px 2px;border-bottom:1px solid var(--surface-3);font-size:12.5px}.devis-line.unmatched{opacity:.55}.devis-line-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.devis-line-info{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px}.devis-badge{background:var(--accent-soft-2);color:var(--accent-text);border-radius:8px;padding:1px 7px;font-size:11px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devis-badge.none{background:var(--surface-3);color:var(--muted-3)}.devis-group{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:12.5px}.devis-group label{display:flex;align-items:center;gap:6px;min-width:0;cursor:pointer}.devis-group-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.devis-count{display:inline-flex;align-items:center;gap:2px;color:var(--muted);font-size:11px}.devis-count input{width:44px;padding:1px 4px;font-size:12px}.table{border-collapse:collapse;width:100%;background:var(--surface);border-radius:8px;overflow:hidden}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.table th{background:var(--surface-2);font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.table th .avatar{text-transform:none}.table tr.inactive td{opacity:.45}.table-scroll{overflow:auto;max-height:calc(100vh - 330px);min-height:240px;border-radius:8px}.table.workload{overflow:visible;border-radius:0;border-collapse:separate;border-spacing:0}.table.workload thead th{position:sticky;top:0;z-index:3}.table.workload thead th:first-child{z-index:4}.table.workload th,.table.workload td{text-align:center;padding:5px 6px}.table.workload th:first-child,.table.workload td:first-child{position:sticky;left:0;background:var(--surface);z-index:2;text-align:left;padding:8px 10px}.table.workload th:first-child,.workload .total-col{background:var(--surface-2)}.totals-row td{border-top:2px solid var(--border-2)}.admin-grid{display:grid;grid-template-columns:3fr 2fr;gap:32px;max-width:1300px}.admin-col{display:flex;flex-direction:column;gap:32px;min-width:0}.deadline-pick{max-height:50vh;overflow:auto}.client-identity{display:inline-flex;align-items:center;gap:4px}.client-logo-cell{display:inline-flex;align-items:center;gap:2px}.client-logo-thumb{height:22px;max-width:64px;object-fit:contain;border-radius:3px;background:#fff;border:1px solid var(--border)}.client-logo-empty{color:var(--muted-4);padding:0 4px}.client-color{width:26px;height:22px;padding:0;border:1px solid var(--border);border-radius:4px;background:none;cursor:pointer}.admin-grid h1{font-size:18px}.user-form{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}.user-form input{flex:1;min-width:110px}.group-toolbar{margin-bottom:8px}.group-row{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:4px 0;padding:4px 8px}.group-row.active{border-color:var(--accent-3)}.group-name{flex:1;text-align:left;border:none;background:none;cursor:pointer;font:inherit;color:inherit;font-weight:600;padding:6px}.group-members{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:8px}.group-members h3{margin:0 0 8px;font-size:13px}.avatar{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;color:#fff;font-size:7px;font-weight:700;flex-shrink:0;border:1px solid var(--surface)}.avatar.sm{width:20px;height:20px;font-size:8px;vertical-align:middle}.avatar.more{background:var(--muted-3)}.gantt-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.toolbar{display:flex;align-items:center;gap:4px;padding:6px 10px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.toolbar>*{flex-shrink:0}.toolbar .btn{padding:5px 9px;font-size:12px}.toolbar .check-inline{white-space:nowrap;font-size:12px}.toolbar-title{font-size:14px;margin:0 4px;font-weight:600;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seg{display:inline-flex;border:1px solid var(--border-2);border-radius:7px;overflow:hidden}.seg button{border:none;background:var(--surface);padding:5px 10px;cursor:pointer;font-size:12px;color:var(--text-3);font-weight:500}.seg button+button{border-left:1px solid var(--border)}.seg button:hover:not(:disabled){background:var(--surface-3)}.seg button.active{background:var(--accent);color:#fff}.seg button:disabled{color:var(--border-2);cursor:default}.hover-col{position:absolute;top:0;bottom:0;background:#818cf817;pointer-events:none;z-index:1}.hover-row{position:absolute;left:0;right:0;background:#818cf812;pointer-events:none;z-index:1}.wl-hover-col{position:absolute;top:0;bottom:0;z-index:2}.wl-row:hover{background:#4f46e50d}.gantt{flex:1;display:flex;overflow:hidden;background:var(--surface);position:relative}.gantt-left{flex-shrink:0;border-right:2px solid var(--border-2);display:flex;flex-direction:column}.gantt-left-header,.grow{display:flex;align-items:stretch}.gantt-left-header{border-bottom:1px solid var(--border);background:var(--surface-2);font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);align-items:flex-end;padding-bottom:4px;flex-shrink:0}.gantt-left-body{position:relative;flex:1;overflow:hidden}.grow{position:absolute;left:0;right:0;cursor:pointer;background:var(--surface);font-size:12px}.grow:hover{background:var(--surface-2)}.grow.selected{background:var(--accent-soft)}.grow.is-group{background:var(--surface-2);font-weight:600}.grow.is-group.selected{background:var(--accent-soft)}.gcell{display:flex;align-items:center;padding:0 4px;overflow:hidden;flex-shrink:0}.grow .gcell+.gcell,.gantt-left-header .gcell+.gcell{border-left:1px solid var(--grid-line)}.gc-name{flex:1;min-width:0;gap:3px}.gc-people{width:62px}.gc-people .avatar{margin-left:-5px}.gc-people .avatar:first-child{margin-left:0}.gc-date{width:52px;font-size:11px;color:var(--text-3)}.gc-hours{width:44px;font-size:11px;color:var(--text-3);justify-content:flex-end}.gc-pct{width:52px;font-size:11px;color:var(--text-3);justify-content:flex-end;padding-right:6px}.gc-pct input[type=checkbox]{width:15px;height:15px}.gc-notes{width:44px}.note-icon{cursor:pointer;font-size:11px;line-height:1;filter:grayscale(.2);padding-left:2px}.note-icon:hover{filter:none}.gc-hours.editable,.gc-pct.editable{cursor:text}.gc-hours.editable:hover,.gc-pct.editable:hover{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-soft-border);border-radius:3px}.cell-input{width:100%;height:16px;font-size:11px;padding:0 2px;text-align:right;border:1px solid var(--accent-3);border-radius:3px}.col-menu-btn{border:none;background:none;cursor:pointer;color:var(--muted-3);font-size:12px;margin-left:auto;padding:0 4px;line-height:1}.col-menu-btn:hover{color:var(--accent-2)}.col-menu{position:absolute;top:100%;right:0;z-index:30;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;box-shadow:0 8px 24px #0f172a2e;padding:6px;min-width:130px}.col-menu label{display:flex;align-items:center;gap:8px;padding:5px 8px;font-size:12px;cursor:pointer;border-radius:5px;text-transform:none;letter-spacing:0;color:var(--text);font-weight:400}.col-menu label:hover{background:var(--surface-3)}.gantt-left-header .gc-name{position:relative;overflow:visible}.name-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.txt-link{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.txt-link:hover{color:var(--accent-2)}.link-chips{display:flex;flex-wrap:wrap;gap:6px}.link-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:var(--surface-3);font-size:12px;color:var(--accent);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.link-chip:hover{border-color:var(--accent-soft-border);background:var(--accent-soft)}.name-input{flex:1;min-width:0;padding:1px 3px;font-size:12px}.caret{border:none;background:none;cursor:pointer;width:14px;flex-shrink:0;padding:0;color:var(--muted);font-size:10px}.type-dot{width:6px;height:6px;border-radius:50%;background:var(--muted-3);flex-shrink:0;margin-right:2px}.type-dot.milestone{width:8px;height:8px;transform:rotate(45deg);border-radius:1px;background:#fdedad;box-shadow:inset 0 0 0 1.5px #facc15}.type-dot.milestone.done{background:#facc15}.type-dot.milestone.deadline{background:#fdcdcd;box-shadow:inset 0 0 0 1.5px #f87171}.type-dot.milestone.deadline.done{background:#f87171}.type-dot.group{background:var(--text-3);border-radius:2px}.gantt-right{flex:1;overflow:auto;position:relative}.gantt-right::-webkit-scrollbar{width:14px;height:20px}.gantt-right::-webkit-scrollbar-track{background:var(--surface-2)}.gantt-right::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:10px;border:3px solid var(--surface-2)}.gantt-right::-webkit-scrollbar-thumb:hover{background:var(--muted-3)}.gantt-right::-webkit-scrollbar-corner{background:var(--surface-2)}.gantt-timeline-header{position:sticky;top:0;z-index:6;background:var(--surface-2);border-bottom:1px solid var(--border)}.month-cell{position:absolute;top:0;height:18px;display:flex;align-items:center;padding-left:6px;font-size:11px;font-weight:600;color:var(--text-2);border-left:1px solid var(--border);overflow:hidden;white-space:nowrap}.day-cell{position:absolute;top:18px;height:26px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--muted-3);border-left:1px solid var(--surface-3);overflow:hidden}.day-cell.two{flex-direction:column;justify-content:center;line-height:1.1;gap:0}.day-cell.two span{font-size:9.5px;color:var(--muted)}.day-cell.two .dl{font-size:8px;color:var(--muted-4)}.gantt-rows{overflow:hidden}.weekend{position:absolute;top:0;bottom:0;background:var(--weekend)}.today-line{position:absolute;top:0;bottom:0;width:2px;background:#f463708c;z-index:1}.today-col{position:absolute;top:0;bottom:0;z-index:0;pointer-events:none;background:#f4636f3d;box-shadow:inset 1px 0 #f4637000,inset -1px 0 #f4637000}.row-stripe{position:absolute;left:0;right:0}.row-stripe.is-group{background:var(--stripe)}.bar{position:absolute;z-index:2;border-radius:3px;cursor:grab;touch-action:none}.bar:active{cursor:grabbing}.task-bar{height:16px;box-shadow:0 1px 1px #00000026}.bar-name{position:absolute;top:0;right:0;bottom:0;left:0;padding:0 5px;z-index:1;font-size:9px;line-height:16px;color:#1d232b;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.task-bar.selected{outline:2px solid var(--accent);outline-offset:1px}.bar.standby{filter:grayscale(1);opacity:.45;transition:filter .15s ease,opacity .15s ease}.bar-zone:hover .bar.standby{filter:none;opacity:1}.grow.st-standby .name-label{color:var(--muted-3)}.bar-handle{position:absolute;top:0;bottom:0;width:6px;cursor:ew-resize}.bar-handle.left{left:-2px}.bar-handle.right{right:-2px}.bar-link{position:absolute;top:50%;margin-top:-4px;width:8px;height:8px;border-radius:50%;background:var(--surface);border:2px solid var(--accent-2);cursor:crosshair;opacity:0;z-index:3}.bar-link.right{right:-11px}.bar-link.left{left:-11px}.bar-link.ms-left{left:1px}.bar-link.ms-right{left:27px;right:auto}.bar:hover .bar-link,.bar-zone:hover .bar-link{opacity:1}.bar-zone{position:absolute;z-index:2}.bar-zone:hover .bar-tool{opacity:1}.bar-zone .bar-label{transition:transform .12s ease}.bar-zone:hover .bar-label{transform:translate(66px)}.bar-zone.tools-2:hover .bar-label{transform:translate(50px)}.bar-zone.tools-1:hover .bar-label{transform:translate(22px)}.bar-zone.tools-0:hover .bar-label{transform:none}.bar-tool{position:absolute;top:1px;width:18px;height:18px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border-2);border-radius:4px;font-size:10px;line-height:1;cursor:pointer;opacity:0;z-index:3;box-shadow:0 1px 2px #0f172a1f}.bar-tool:hover{border-color:var(--accent-3);background:var(--accent-soft)}.bar-tool.tool-todo{color:var(--muted-4)}.bar-tool.tool-todo:hover{color:var(--ok);border-color:var(--ok);background:var(--ok-soft)}.bar-tool.tool-done{background:var(--ok);border-color:var(--ok);color:#fff}.bar-tool.tool-done:hover{background:var(--ok-2);border-color:var(--ok-2);color:#fff}.bar-tool-swatch{display:block;width:10px;height:10px;border-radius:3px}.bar-tool-badge{position:absolute;top:-6px;right:-6px;min-width:13px;height:13px;padding:0 3px;border-radius:7px;background:var(--accent-2);color:#fff;font-size:8.5px;line-height:13px;font-weight:700;text-align:center}.bar-pop-head{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:8px}.multi-recap-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;padding:2px 0}.multi-recap-row .mr-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-recap-row.mr-mismatch .muted{color:var(--warn-text)}.bar-pop{position:fixed;z-index:60;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;box-shadow:0 12px 32px #0f172a2e;padding:10px 12px;overflow-y:auto;min-width:180px;max-width:320px;overscroll-behavior:contain;user-select:text;-webkit-user-select:text}.group-bar{height:8px;border-radius:2px}.group-bar.selected{outline:2px solid var(--accent);outline-offset:1px}.group-bar .bar-name{inset:auto;top:50%;left:0;right:0;height:12px;transform:translateY(-50%);line-height:12px;font-size:6.5px;font-weight:600;letter-spacing:.2px;color:#0f172a9e;text-shadow:0 0 2px rgba(255,255,255,.65)}.project-bar .bar-name{font-size:9.5px;color:#0f172ab8}.milestone{width:9px;height:9px;transform:rotate(45deg);border-radius:1px}.milestone.selected{outline:2px solid var(--accent)}.task-warn{position:absolute;z-index:4;width:11px;height:11px;border-radius:50%;color:#fff;font-size:9px;font-weight:900;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1.5px var(--surface);pointer-events:none}.task-warn.urgent{background:#ef4444}.task-warn.under{background:#f59e0b}.task-warn.inline{position:static;flex-shrink:0;pointer-events:auto}.ms-warn{position:absolute;z-index:3;width:11px;height:11px;border-radius:50%;background:#ef4444;color:#fff;font-size:9px;font-weight:900;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:none;box-shadow:0 0 0 1.5px var(--surface)}.bar-label{position:absolute;z-index:2;font-size:9.5px;color:var(--muted-3);white-space:nowrap;pointer-events:none;line-height:14px}.bar-label .bl-user{font-weight:500;color:var(--text-2)}.standby-tag{display:inline-block;margin-right:5px;padding:0 5px;font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-3);border:1px solid var(--border-2);border-radius:7px}.bar-label.standby,.bar-label.standby .bl-user,.bar-label.standby .bl-time{color:var(--muted-4)}.dep-layer{position:absolute;top:0;left:0;pointer-events:none;z-index:3}.dep-path{fill:none;stroke:var(--dep-line);stroke-width:1.2;opacity:.8}.dep-path.violated{stroke:#f28b8b;stroke-width:1.5;opacity:.95}.dep-path.hard{stroke:var(--dep-line-hard);stroke-width:2.2;opacity:.9}.dep-path.hard.violated{stroke:#ef6a6a;stroke-width:2.2}.dep-temp{fill:none;stroke:var(--accent-3);stroke-width:1.5;stroke-dasharray:4 3}.grow.proj-done{filter:grayscale(1);opacity:.62}.bar-zone.proj-done,.bar.proj-done{filter:grayscale(1);opacity:.55}.page.wl-page{max-width:1500px}.page.dash-page{max-width:1320px}.wl-view-tabs{margin-bottom:10px;width:max-content}.wl-strip{display:flex;gap:3px;margin:2px 0 16px;overflow-x:auto;padding-bottom:3px}.wl-strip-day{min-width:44px;padding:4px 2px;border:1px solid var(--border);border-radius:8px;background:var(--surface);display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer;font:inherit;font-size:10.5px;color:var(--muted);flex-shrink:0}.wl-strip-day:hover{border-color:var(--accent-4)}.wl-strip-day.off{background:var(--surface-3);color:var(--muted-4)}.wl-strip-day.today{border-color:var(--ok);background:var(--ok-soft)}.wl-strip-day.today .wl-strip-wd{color:var(--ok-2);font-weight:600}.wl-strip-day.today .wl-strip-num{color:var(--ok-2)}.wl-strip-day.selected{border-color:var(--accent);box-shadow:0 0 0 2px #6366f138}.wl-strip-wd{font-size:9.5px}.wl-strip-num{font-weight:700;font-size:12.5px;color:var(--text)}.wl-strip-day.off .wl-strip-num{color:var(--muted-4)}.wl-strip-hours{font-size:10.5px;font-weight:600;color:var(--text-3)}.wl-strip-hours.zero{color:var(--border-2);font-weight:400}.wl-strip-hours.over{color:var(--danger)}.deliv-preview-banner{margin:0 0 12px;padding:8px 12px;border-radius:8px;background:var(--warn-soft);border:1px solid var(--warn-border);color:var(--warn-text);font-size:13px}.deliv-page{max-width:640px}.deliv-search{display:flex;margin-bottom:8px}.deliv-past{margin-bottom:14px;font-size:12.5px}.deliv-search .search-input{width:100%;padding-top:10px;padding-bottom:10px;font-size:15px}.deliv-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;overflow:hidden}.deliv-card.complete{opacity:.75}.deliv-head{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;background:none;cursor:pointer;font:inherit;padding:13px 14px}.deliv-head:hover{background:var(--surface-2)}.deliv-caret{width:12px;font-size:11px;color:var(--muted);flex-shrink:0}.deliv-title{font-weight:700;font-size:15px;color:var(--text);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deliv-next{font-size:12px;color:var(--accent-2);white-space:nowrap;flex-shrink:0}.deliv-body{padding:0 14px 12px}.deliv-product{border-top:1px solid var(--surface-3);padding:10px 0 4px}.deliv-prod-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.deliv-prod-name{font-size:14px}.deliv-progress{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin:6px 0}.deliv-progress div{height:100%;background:var(--accent-4)}.deliv-date{font-size:13.5px;font-weight:600;margin-bottom:6px}.deliv-date.pending{color:var(--accent-2)}.deliv-date.done{color:var(--ok)}.deliv-date.late{color:var(--danger)}.deliv-date.none{color:var(--muted-3);font-weight:400}.deliv-ms{display:block;padding:6px 9px;margin:5px 0;font-size:12px;background:var(--surface-2);border:1px solid var(--grid-line);border-radius:8px}.deliv-ms-top{display:flex;align-items:baseline;gap:8px}.deliv-ms-state{width:14px;text-align:center;color:var(--muted-3);flex-shrink:0}.deliv-ms-state.deadline{color:#ef4444}.deliv-ms-state.simple{color:#eab308}.deliv-ms-off{flex-shrink:0;width:13px;height:13px;border-radius:50%;background:#ef4444;color:#fff;font-size:9.5px;font-weight:900;line-height:13px;text-align:center;align-self:center}.deliv-ms-warn{margin:3px 0 0 22px;color:var(--warn-text);font-size:11px}.deliv-ms.done{background:var(--surface-2);border-color:var(--surface-3)}.deliv-ms.done .deliv-ms-state{color:var(--ok)}.deliv-ms.done .deliv-ms-name{color:var(--muted-3);text-decoration:line-through}.deliv-ms.late{background:var(--danger-soft);border-color:var(--danger-soft-2)}.deliv-ms.late .deliv-ms-state,.deliv-ms.late .deliv-ms-date{color:var(--danger)}.deliv-ms-name{display:block;flex:1 1 auto;min-width:0;white-space:nowrap;font-size:12.5px;font-weight:600;color:var(--text);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.deliv-ms-name::-webkit-scrollbar{display:none}.deliv-ms-group{margin:2px 0 0 22px;color:var(--muted-3);font-size:11px;white-space:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.deliv-ms-group::-webkit-scrollbar{display:none}.deliv-ms.done .deliv-ms-group{text-decoration:line-through}.deliv-ms-date{color:var(--text-3);white-space:nowrap;font-size:11.5px;flex-shrink:0}.btn.remote-dirty{color:var(--warn-text);font-weight:600}.btn.remote-dirty:hover{background:var(--warn-soft-2)}.mobile-block{padding:24px;text-align:center}.mobile-block-icon{font-size:44px}.mobile-block h2{margin:8px 0 4px;font-size:18px;color:var(--text)}.mobile-block .muted{max-width:420px}.mobile-block-actions{display:flex;gap:10px;margin-top:14px}@media(max-width:768px){html,body{overflow-x:hidden}.topnav{overflow-x:auto;gap:2px;padding:0 8px;scrollbar-width:none}.topnav::-webkit-scrollbar{display:none}.topnav a{padding:6px 8px;white-space:nowrap}.topnav .btn.ghost{white-space:nowrap}.nav-brand{margin-right:8px}.nav-brand-app{display:none}.nav-logo{height:24px}.nav-user{display:none}.page{padding:12px 10px}.page-header{gap:8px}.page-header h1{font-size:17px}.field-inline input[type=date]{max-width:132px}.today-card{padding:10px}.dd-pct{width:48px}.table th,.table td{padding:6px 8px}}.table.workload td.wl-cell-link{cursor:pointer}.table.workload td.wl-cell-link:hover{background:var(--accent-soft);color:var(--accent-2)}.today-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr));gap:14px;margin-top:18px}.today-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 14px}.today-card.loading{opacity:.55;pointer-events:none;transition:opacity .15s ease}.today-card-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.today-card-head .muted{margin-left:auto;font-size:12px}.devis-billed{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--text-3);cursor:pointer}.devis-billed input{margin:0}.devis-billed-total{margin:2px 0 8px;font-size:13px;color:var(--text-2)}.proj-budget{position:relative;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;margin-left:10px;white-space:nowrap;flex-shrink:0;padding:1px 8px;border-radius:9px;line-height:15px}.proj-budget.ok{background:var(--ok-soft-2);color:var(--ok-2)}.proj-budget.warn{background:var(--warn-soft-2);color:var(--warn-text)}.proj-budget.over{background:var(--danger-soft-2);color:var(--danger-2)}.proj-budget .pb-measure{position:absolute;left:-9999px;top:0;visibility:hidden;white-space:nowrap}.proj-budget.compact{padding:1px 5px}.proj-budget.compact .pb-text{display:none}.proj-budget.compact:hover .pb-text{display:inline}.grow.is-project{background:var(--grid-line);font-weight:700;border-bottom:1px solid var(--border-2)}.grow.is-project.selected{background:var(--accent-soft-2)}.grow.is-project .gc-name{font-size:13.5px}.project-bar{height:14px;opacity:.85}.project-bar:before,.project-bar:after{border-top-color:inherit;display:none}.grip{cursor:grab;color:var(--border-2);font-size:11px;width:14px;flex-shrink:0;opacity:0;-webkit-user-select:none;user-select:none;touch-action:none}.grow:hover .grip{opacity:1}.grip:hover{color:var(--muted)}.name-label{touch-action:none}.drop-line{position:absolute;left:0;right:0;height:2px;background:var(--accent-3);z-index:20;pointer-events:none}.drop-line:before{content:"";position:absolute;left:0;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--accent-3)}.drop-inside{position:absolute;left:0;right:0;border:2px solid var(--accent-4);border-radius:4px;background:#818cf81a;z-index:20;pointer-events:none}.task-flash{position:absolute;z-index:25;pointer-events:none;border-radius:6px;border:2px solid var(--accent);animation:task-flash .7s ease-out 3}@keyframes task-flash{0%{box-shadow:0 0 #6366f18c}to{box-shadow:0 0 0 14px #6366f100}}[data-theme=dark] .task-flash{border-color:var(--accent-2);box-shadow:0 0 10px #8f99f759;animation-name:task-flash-dark}@keyframes task-flash-dark{0%{box-shadow:0 0 #8f99f7cc,0 0 12px #8f99f780}to{box-shadow:0 0 0 16px #8f99f700,0 0 12px #8f99f759}}.drag-ghost{position:absolute;bottom:8px;left:8px;background:var(--ink);color:var(--surface);padding:4px 10px;border-radius:6px;font-size:12px;z-index:30;pointer-events:none;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}.multi-panel{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:80;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;box-shadow:0 12px 40px #0f172a40;max-width:95vw}.multi-bar{display:flex;align-items:center;gap:10px;padding:8px 14px}.multi-body{display:flex;align-items:center;gap:14px;padding:10px 14px;border-top:1px solid var(--border);flex-wrap:wrap;max-width:900px}.multi-open-bar{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:80;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;box-shadow:0 12px 40px #0f172a40;display:flex;align-items:center;gap:12px;padding:10px 16px}.proj-row>input[type=checkbox]{flex-shrink:0}.grow,.gantt-rows,.bar-label,.gantt-left-header,.wl-grid,.proj-nav,.month-cell,.day-cell{user-select:none;-webkit-user-select:none}.grow input,.name-input{user-select:text;-webkit-user-select:text}.v-splitter{width:5px;cursor:col-resize;background:var(--border-2);flex-shrink:0;touch-action:none}.v-splitter:hover{background:var(--accent-3)}.h-splitter{height:5px;cursor:row-resize;background:var(--border-2);flex-shrink:0;touch-action:none}.h-splitter:hover{background:var(--accent-3)}.gantt-left{border-right:none!important}.proj-nav{position:absolute;right:24px;bottom:26px;z-index:40;display:flex;flex-direction:column;gap:2px;background:var(--glass);border:1px solid var(--border-2);border-radius:10px;padding:0 6px 6px;box-shadow:0 8px 24px #0f172a1f;max-width:200px;overflow-y:auto}.proj-nav-head{position:sticky;top:0;z-index:1;background:var(--surface);display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 4px 4px 8px;border-bottom:1px solid var(--surface-3);margin-bottom:3px;flex-shrink:0}.proj-nav-head>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-nav-closeall{border:none;background:none;cursor:pointer;color:var(--accent);font-size:10px;text-transform:none;letter-spacing:0;font-weight:600;padding:2px 4px;white-space:nowrap}.proj-nav-closeall:hover{text-decoration:underline}.proj-nav-tab{position:absolute;right:18px;z-index:40;writing-mode:vertical-rl;background:var(--surface);border:1px solid var(--border-2);border-radius:8px;padding:10px 3px;font-size:11px;color:var(--text-3);cursor:pointer;box-shadow:-2px 2px 8px #0f172a14}.proj-nav-tab:hover{color:var(--accent-2);background:var(--accent-soft)}.proj-nav-item{display:flex;align-items:center;border-radius:6px;color:var(--text-2)}.proj-nav-item:hover{background:var(--accent-soft)}.proj-nav-item.active{background:var(--accent-soft-2)}.proj-nav-item.active .proj-nav-name{font-weight:600}.proj-nav-go{display:flex;align-items:center;gap:6px;border:none;background:none;cursor:pointer;padding:4px 6px 4px 8px;font-size:11.5px;text-align:left;color:inherit;flex:1;min-width:0}.proj-nav-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pn-status{flex-shrink:0;font-size:9px;font-weight:700;padding:1px 6px;border-radius:7px;text-transform:uppercase;letter-spacing:.03em}.pn-status.hold{background:var(--warn-soft-2);color:var(--warn-text)}.pn-status.done{background:var(--ok-soft-2);color:var(--ok-2)}.proj-nav-item.st-complete .proj-nav-name{color:var(--muted-3)}.proj-nav-close{border:none;background:none;cursor:pointer;color:var(--border-2);font-size:10px;padding:4px 8px 4px 4px;flex-shrink:0;opacity:0}.proj-nav-item:hover .proj-nav-close{opacity:1}.proj-nav-close:hover{color:var(--danger)}.row-del{border:none;background:none;cursor:pointer;color:var(--border-2);font-size:10px;padding:0 4px;margin-left:auto;flex-shrink:0;opacity:0}.grow:hover .row-del{opacity:1}.row-del:hover{color:var(--danger)}.assign-warning{background:var(--warn-soft-2);border:1px solid var(--warn-border);border-radius:6px;padding:8px;font-size:12px;margin-top:6px;display:flex;flex-direction:column;gap:6px}.deadline-off{color:var(--danger-2);font-size:12px;font-weight:600}.ua-missing{color:var(--danger);font-weight:600;font-size:12px;white-space:nowrap}.ua-fix{padding:3px 8px;font-size:11px;white-space:nowrap}.wl-row.is-me{background:#f4636f3d;position:relative}.wl-row.is-me .wl-name{font-weight:600;box-shadow:inset 3px 0 0 var(--accent-3)}.wl-row.is-me:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;box-shadow:inset 0 1px #f463708c,inset 0 -1px #f463708c}.wl-row.hl-sel .wl-name{font-weight:600;box-shadow:inset 3px 0 0 var(--accent-2);background:var(--accent-soft)}.wl-sel-band{position:absolute;top:0;bottom:0;pointer-events:none;z-index:2;background:#6366f124;box-shadow:inset 0 1px 0 var(--accent-3),inset 0 -1px 0 var(--accent-3),inset 1px 0 0 var(--accent-3),inset -1px 0 0 var(--accent-3);animation:wl-band-pulse .7s ease-out 2}@keyframes wl-band-pulse{0%{background:#6366f18c;box-shadow:inset 0 1px 0 var(--accent-3),inset 0 -1px 0 var(--accent-3),inset 1px 0 0 var(--accent-3),inset -1px 0 0 var(--accent-3),0 0 #6366f18c}to{background:#6366f124;box-shadow:inset 0 1px 0 var(--accent-3),inset 0 -1px 0 var(--accent-3),inset 1px 0 0 var(--accent-3),inset -1px 0 0 var(--accent-3),0 0 0 8px #6366f100}}[data-theme=dark] .wl-sel-band{animation-name:wl-band-pulse-dark}@keyframes wl-band-pulse-dark{0%{background:#8f99f780;box-shadow:inset 0 1px 0 var(--accent-3),inset 0 -1px 0 var(--accent-3),inset 1px 0 0 var(--accent-3),inset -1px 0 0 var(--accent-3),0 0 #8f99f7bf}to{background:#6366f124;box-shadow:inset 0 1px 0 var(--accent-3),inset 0 -1px 0 var(--accent-3),inset 1px 0 0 var(--accent-3),inset -1px 0 0 var(--accent-3),0 0 0 9px #8f99f700}}.cap-grid{display:flex;gap:8px}.cap-day{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;text-align:center}.cap-day input{width:52px;text-align:center}.save-indicator{display:inline-flex;align-items:center;gap:6px;font-size:11px;white-space:nowrap}.save-indicator.ok{color:var(--ok)}.save-indicator.saving{color:#f59e0b}.save-indicator.error{color:var(--danger);font-weight:600;max-width:420px;overflow:hidden}.save-indicator.error .btn{padding:2px 8px;font-size:11px}.history-list{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:12px}.hist-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:6px 12px;border-bottom:1px solid var(--surface-3);font-size:13px}.hist-badge{font-size:10px;padding:2px 7px;border-radius:8px;background:var(--border);color:var(--text-3);white-space:nowrap}.hist-badge.a-item-create{background:var(--ok-soft-2);color:var(--ok-2)}.hist-badge.a-item-delete{background:var(--danger-soft-2);color:var(--danger-2)}.hist-badge.a-item-update{background:var(--accent-soft);color:var(--accent-text)}.hist-badge.a-dep-add,.hist-badge.a-dep-remove{background:#fce7f3;color:#be185d}.hist-badge.a-assign-set{background:var(--warn-soft-2);color:var(--warn-text)}.hist-item{font-weight:500;min-width:0}.hist-group{font-weight:400;font-size:12px}.log-when{font-size:11px;white-space:nowrap;width:100px;flex-shrink:0}.log-detail{font-size:12px;flex:1;min-width:220px}.log-action{font-weight:600;font-size:12px;white-space:nowrap}.log-row{display:flex;align-items:baseline;gap:6px;overflow:hidden;flex:1;min-width:0;flex-wrap:wrap}.log-entry{display:flex;align-items:flex-start;gap:6px;padding:4px 0;border-bottom:1px solid var(--surface-3)}.item-history{max-height:240px;overflow-y:auto;font-size:12px}.day-detail{width:80vw;max-width:1000px;display:flex;flex-direction:column;overflow:hidden}.dd-header{display:flex;align-items:center;gap:12px;margin-bottom:4px}.dd-header h2{margin:0;font-size:17px}.dd-avatar{width:40px;height:40px;font-size:14px}.dd-date{text-transform:capitalize;font-size:13px}.dd-stats{display:flex;gap:18px}.dd-stat{display:flex;flex-direction:column;align-items:center}.dd-stat strong{font-size:16px}.dd-stat span{font-size:11px;color:var(--muted)}.dd-body{flex:1;min-height:0;overflow-y:auto}.dd-project{margin-bottom:5px}.dd-proj-head{display:flex;align-items:center;gap:6px;padding:2px 8px;background:var(--surface-2);border-radius:5px;margin-bottom:1px;font-size:12px;line-height:1.5;min-width:0}.dd-proj-head strong{white-space:nowrap}.dd-proj-head .muted{margin-left:auto;white-space:nowrap}.dd-group{color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dd-proj-head.watch{background:transparent}.dd-proj-head.watch strong,.dd-proj-head.watch .dd-group,.dd-proj-head.watch .muted{color:var(--border-2)}.dd-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-bottom:1px solid var(--surface-3)}.dd-filter{display:flex;align-items:center;gap:6px;padding:3px 4px 5px;border-bottom:1px solid var(--surface-3);font-size:12.5px;cursor:pointer}.ddt-row{position:relative;display:flex;align-items:center;gap:8px;padding:4px 8px;margin:3px 0;border:1px solid transparent;border-radius:6px;overflow:hidden}.ddt-row>*{position:relative;z-index:1}.ddt-fill{position:absolute;left:0;top:0;bottom:0;z-index:0!important;border-radius:5px 0 0 5px}.ddt-row.complete{background:var(--surface-2);border-color:var(--border)}.ddt-row.complete .dd-name{color:var(--muted-3);text-decoration:line-through}.ddt-row.complete .dd-hours{color:var(--border-2)}.ddt-row.complete .dd-soft-warn,.ddt-row.complete .dd-dep-ok{background:transparent;color:var(--muted-3);border-color:var(--border)}.ddt-row .dd-name{color:#1d232b}.ddt-row .dd-hours{color:#334155}.ddt-row .muted{color:#64748b}.ddt-row.watch{background:transparent;border-color:transparent}.ddt-row.watch .dd-name{color:var(--border-2)}.ddt-row.watch .dd-hours{color:var(--border)}.ddt-row.watch .dd-soft-warn,.ddt-row.watch .dd-dep-ok{background:transparent;color:var(--muted-3);border-color:var(--border)}.dd-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;background:none;border:none;text-align:left;cursor:pointer;color:var(--text);padding:2px 0;font-family:inherit}.dd-name:hover{color:var(--accent-2);text-decoration:underline}.dd-hours{color:var(--text-2);font-size:12px;font-weight:600;white-space:nowrap}.dd-pct{width:58px;padding:3px 6px;font-size:12px}.dd-tabs{margin:3px 0 6px;width:max-content}.dd-tabs-row{display:flex;align-items:center;gap:10px}.dd-open-all{font-size:12px;padding:3px 10px}.ddt-row.compact{padding:1px 6px;margin:2px 0;gap:6px}.ddt-row.compact .dd-name{font-size:12.5px;padding:1px 0}.ddt-row.compact .dd-pct{width:48px;padding:2px 4px}.ddt-row.compact .dd-hours{font-size:11px}.dd-soft-warn{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;white-space:nowrap;font-size:10px;font-weight:600;padding:1px 6px;border-radius:9px;cursor:help;background:#fffbeb;color:#b45309;border:1px solid #fcd34d}.dd-dep-ok{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;white-space:nowrap;font-size:10px;font-weight:600;padding:1px 6px;border-radius:9px;cursor:help;background:#f0fdf4;color:#15803d;border:1px solid #86efac}.wl-cell{cursor:pointer}.weekend.holiday{background:var(--holiday)}.tabs{display:flex;border:1px solid var(--border-2);border-radius:8px;overflow:hidden}.tab{border:none;background:var(--surface);padding:6px 14px;cursor:pointer;font-size:13px;font-weight:500;color:var(--text-3)}.tab+.tab{border-left:1px solid var(--border-2)}.tab.active{background:var(--accent);color:#fff}.star{border:none;background:none;cursor:pointer;font-size:17px;color:var(--border-2);padding:0 2px;line-height:1;flex-shrink:0}.star:hover,.star.active{color:#f59e0b}.holidays-section{margin-top:28px}.holidays-section h1{font-size:18px}.ctx-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.ctx-menu{position:fixed;background:var(--surface);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 12px 40px #0f172a38;padding:5px;min-width:220px}.ctx-title{font-size:11px;color:var(--muted-3);padding:4px 10px 6px;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid var(--surface-3);margin-bottom:3px}.ctx-menu button{display:block;width:100%;text-align:left;border:none;background:none;cursor:pointer;padding:6px 10px;font-size:13px;color:var(--text);border-radius:6px;font-family:inherit}.ctx-menu button:hover{background:var(--accent-soft);color:var(--accent-2)}.ctx-kbd{float:right;padding-left:12px;font-size:10.5px;color:var(--muted-3);font-weight:500}.ctx-menu button.danger{color:var(--danger)}.ctx-menu button.danger:hover{background:var(--danger-soft-2);color:var(--danger-2)}.ctx-sep{height:1px;background:var(--surface-3);margin:3px 0}.ctx-status-label{font-size:11px;color:var(--muted-3);padding:2px 10px}.ctx-menu .ctx-status{display:flex;gap:4px;padding:4px 8px 6px}.ctx-menu .ctx-status button.ctx-status-btn{display:inline-block;flex:1 1 0;width:auto;text-align:center;border:1px solid var(--border-2);background:var(--surface);border-radius:6px;padding:4px;font-size:12px;color:var(--text-2);white-space:nowrap}.ctx-menu .ctx-status button.ctx-status-btn:hover{border-color:var(--accent-3);background:var(--accent-soft);color:var(--accent-2)}.ctx-menu .ctx-status button.ctx-status-btn.active{cursor:default;color:#fff;font-weight:600}.ctx-menu .ctx-status button.ctx-status-btn.active.s-active{background:var(--ok);border-color:var(--ok)}.ctx-menu .ctx-status button.ctx-status-btn.active.s-on_hold{background:var(--warn-2);border-color:var(--warn-2)}.ctx-menu .ctx-status button.ctx-status-btn.active.s-complete{background:var(--text-3);border-color:var(--text-3)}.ctx-menu .ctx-status button.ctx-status-btn.active:hover{color:#fff}.gantt-outer{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.gantt-outer .gantt{flex:1}.wl-grid{flex-shrink:0;display:flex;flex-direction:column;border-top:2px solid var(--border-2);background:var(--surface)}.wl-header{display:flex;align-items:center;height:30px;border-bottom:1px solid var(--border);font-size:12px;flex-shrink:0}.wl-title{display:flex;align-items:center;gap:12px;padding:0 8px;border-right:2px solid var(--border-2);height:100%;flex-shrink:0}.wl-mode{display:flex;align-items:center;gap:4px;font-weight:400;cursor:pointer}.wl-avatar-toggle{padding:0 10px;color:var(--muted);white-space:nowrap}.wl-legend{padding:0 10px;font-size:11px}.wl-body{overflow-y:auto;overflow-x:hidden;flex:1}.wl-row{display:flex;border-bottom:1px solid var(--surface-3)}.wl-name{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:0 8px;font-size:12px;border-right:2px solid var(--border-2);flex-shrink:0;overflow:hidden}.wl-name-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wl-name .avatar{width:16px;height:16px;font-size:7.5px}.wl-cells{flex:1;position:relative;overflow:hidden}.wl-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;font-family:Inter,Segoe UI,sans-serif;font-variant-numeric:tabular-nums;font-size:10px;font-weight:400;line-height:1;overflow:hidden;color:var(--wl-num)}.wl-name{font-size:11px}.wl-cell.w-over{color:var(--wl-num-over)}.toolbar-select{font-size:12px;padding:4px 6px;max-width:150px}.open-picker-wrap{display:contents}.open-picker-wrap>.btn{flex-shrink:0;white-space:nowrap}.open-picker{position:fixed;z-index:60;width:460px;max-width:92vw;max-height:calc(100vh - 80px);background:var(--surface);border:1px solid var(--border-2);border-radius:10px;box-shadow:0 12px 32px #0f172a2e;display:flex;flex-direction:column}.open-picker-head{display:flex;align-items:center;gap:14px;padding:8px 12px 6px}.open-picker-quick{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:0 12px 8px;border-bottom:1px solid var(--border)}.op-search{flex:1;min-width:0;padding:4px 8px;font-size:12px;border:1px solid var(--border-2);border-radius:6px;background:var(--surface);color:var(--text)}.op-link{border:none;background:none;color:var(--accent);cursor:pointer;font-size:11.5px;padding:0;white-space:nowrap}.op-link:hover{text-decoration:underline}.open-picker-list{overflow-y:auto;max-height:55vh;padding:6px 8px}.op-folder,.op-proj{display:flex;align-items:center;gap:7px;padding:3px 6px;border-radius:5px;cursor:pointer;font-size:12.5px}.op-folder{font-weight:600;margin-top:2px}.op-folder:hover,.op-proj:hover{background:var(--accent-soft)}.op-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.op-status{font-size:10.5px;flex-shrink:0}.op-empty{padding:8px;font-size:12.5px}.open-picker-foot{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--border)}.open-picker-foot .muted{flex:1;font-size:12px}.add-picker{width:300px}.op-btn{border:none;background:none;width:100%;font:inherit;color:inherit;text-align:left}.assign-total{font-size:12px;margin-top:6px}.drawer-backdrop{position:fixed;top:48px;left:0;right:0;bottom:0;background:#64748b29;z-index:49}.drawer{position:fixed;top:48px;right:0;bottom:0;width:340px;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 24px #0f172a14;z-index:50;display:flex;flex-direction:column}.drawer-resize{position:absolute;left:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:51}.drawer-resize:hover{background:var(--accent-3)}.assign-search{width:100%;margin:4px 0 6px;padding:4px 8px;font-size:12px;border:1px solid var(--border-2);border-radius:6px;background:var(--surface);color:var(--text)}.assign-empty{font-size:12px;padding:2px 6px}.assign-accordion{display:flex;align-items:center;gap:6px;width:100%;margin:6px 0 2px;padding:6px 10px;border:1px dashed var(--accent-3);border-radius:6px;background:transparent;color:var(--accent-2);font-family:inherit;font-size:12px;font-weight:600;text-align:left;cursor:pointer;transition:background .12s ease,border-color .12s ease}.assign-accordion:hover{background:var(--accent-soft);border-style:solid}.assign-accordion.solid{border-style:solid;background:var(--accent-soft)}.assign-accordion.solid:hover{background:var(--accent-soft-2)}.drawer-header{display:flex;align-items:center;gap:8px;padding:12px;border-bottom:1px solid var(--border)}.drawer-title{flex:1;font-weight:600;border:1px solid transparent;padding:4px 6px}.drawer-title:hover,.drawer-title:focus{border-color:var(--border-2)}.drawer-body{flex:1;overflow-y:auto;padding:16px}.assign-row{display:flex;align-items:center;justify-content:space-between;padding:3px 0}.assign-row.leaving{overflow:hidden;pointer-events:none;animation:assign-row-out .2s ease forwards}@keyframes assign-row-out{0%{max-height:32px;opacity:1}to{max-height:0;opacity:0;padding-top:0;padding-bottom:0}}.assign-check{display:flex;align-items:center;gap:8px;font-weight:400;cursor:pointer;padding:2px 0}.hours-input{width:64px;padding:3px 6px;font-size:12px}.dep-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.dep-dir{color:var(--muted);font-size:11px;white-space:nowrap}.dep-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.color-row{display:flex;flex-wrap:wrap;gap:6px;max-width:224px}.color-swatch{width:22px;height:22px;border-radius:6px;border:2px solid transparent;cursor:pointer}.color-swatch.active{border-color:var(--ink)}.atelier{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.at-toolbar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap}.at-toolbar .spacer{flex:1}.at-title{font-size:15px}.at-sub{font-size:12px}.at-param{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}.at-param input[type=number]{width:54px;padding:3px 5px}.at-param input[type=date]{padding:3px 5px}.at-warn-count{color:#b45309;font-weight:600;font-size:13px}[data-theme=dark] .at-warn-count{color:#fbd38d}.at-notice{display:flex;gap:16px;flex-wrap:wrap;padding:4px 12px;font-size:12px;border-bottom:1px solid var(--surface-3)}.at-stale{display:flex;align-items:center;gap:12px;padding:6px 12px;font-size:13px;background:#fef3c7;color:#92400e;border-bottom:1px solid #fcd34d}[data-theme=dark] .at-stale{background:#4a3a12;color:#fbd38d;border-bottom-color:#6b5416}.at-body{flex:1;display:flex;min-height:0}.at-main{flex:1;display:flex;flex-direction:column;min-width:0}.at-gantt{flex:1;display:flex;overflow:hidden;background:var(--surface);position:relative;min-height:0}.at-left{min-width:0}.at-wl{flex-shrink:0}.at-wl .wl-cell{cursor:default}.at-wl .wl-body::-webkit-scrollbar{width:14px}.at-wl .wl-body::-webkit-scrollbar-track{background:var(--surface-2)}.at-wl .wl-body::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:10px;border:3px solid var(--surface-2)}.at-wl .wl-body::-webkit-scrollbar-thumb:hover{background:var(--muted-3)}.at-lock{border:none;background:none;cursor:pointer;font-size:11px;padding:0 2px;opacity:.4;flex-shrink:0}.at-lock.on{opacity:1}.at-fixed{font-size:11px;flex-shrink:0}.at-chip{flex-shrink:0;font-size:9px;padding:0 4px;border-radius:6px;border:1px solid var(--border-2);color:var(--muted)}.at-chip.done{color:var(--ok);border-color:var(--ok)}.at-chip.warn{color:#b45309;border-color:#fcd34d;background:#fef3c7}.at-ghost{position:absolute;height:12px;border:1px dashed var(--muted-3);border-radius:3px;box-sizing:border-box;opacity:.6;pointer-events:none;z-index:1}.at-ghost-ms{position:absolute;width:9px;height:9px;transform:rotate(45deg);border-radius:1px;border:1px dashed var(--muted-3);box-sizing:border-box;opacity:.6;pointer-events:none;z-index:1}.at-bar-lock{position:absolute;top:1px;right:2px;font-size:9px;line-height:14px;pointer-events:none}.at-panel-warn{font-size:12px;color:#b45309;background:#fef3c7;border-radius:6px;padding:4px 8px}[data-theme=dark] .at-panel-warn{background:#4a3a12;color:#fbd38d}.hist-rollback{padding:2px 8px;font-size:12px}.bar-zone.tools-4:hover .bar-label{transform:translate(88px)}
