:root{--background:220 25% 98%;--foreground:222 35% 12%;--surface-muted:220 25% 96%;--surface-strong:220 20% 92%;--card:0 0% 100%;--card-foreground:222 35% 12%;--popover:0 0% 100%;--popover-foreground:222 35% 12%;--primary:222 76% 40%;--primary-foreground:210 40% 98%;--primary-hover:222 76% 36%;--primary-active:222 76% 32%;--primary-subtle:222 76% 95%;--accent:189 95% 36%;--accent-foreground:0 0% 100%;--accent-subtle:189 95% 94%;--success:158 64% 35%;--success-foreground:0 0% 100%;--success-subtle:158 50% 94%;--warning:35 92% 45%;--warning-foreground:0 0% 100%;--warning-subtle:35 92% 94%;--danger:355 78% 50%;--danger-foreground:0 0% 100%;--danger-subtle:355 78% 96%;--info:199 89% 48%;--info-subtle:199 89% 94%;--muted:220 25% 96%;--muted-foreground:220 12% 45%;--border:220 20% 90%;--border-strong:220 18% 80%;--input:220 20% 90%;--ring:222 76% 40%;--sidebar:222 47% 10%;--sidebar-foreground:220 25% 92%;--sidebar-muted:222 35% 16%;--sidebar-active:222 76% 50%;--sidebar-border:222 35% 20%;--sidebar-text-muted:220 15% 60%;--header:0 0% 100%;--header-foreground:222 35% 12%;--header-border:220 20% 90%;--expertise-ux:280 65% 50%;--expertise-dev:222 76% 40%;--expertise-data:158 64% 35%;--expertise-pm:35 92% 45%;--expertise-pmm:355 78% 50%;--chart-1:222 76% 45%;--chart-2:189 80% 40%;--chart-3:158 60% 40%;--chart-4:35 88% 50%;--chart-5:280 55% 55%;--chart-6:340 70% 55%;--chart-7:220 14% 50%;--chart-8:199 80% 50%;--chart-9:25 85% 55%;--chart-10:162 65% 45%;--radius-sm:4px;--radius:6px;--radius-md:8px;--radius-lg:12px;--shadow-card:0 1px 2px 0 rgba(15,23,42,0.04),0 1px 3px 0 rgba(15,23,42,0.06);--shadow-md:0 4px 12px -2px rgba(15,23,42,0.08),0 2px 4px -1px rgba(15,23,42,0.04);--shadow-lg:0 12px 28px -8px rgba(15,23,42,0.16),0 4px 8px -2px rgba(15,23,42,0.06);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace}.dark{--background:222 40% 7%;--foreground:220 25% 95%;--surface-muted:222 35% 11%;--surface-strong:222 30% 16%;--card:222 35% 10%;--card-foreground:220 25% 95%;--popover:222 35% 11%;--popover-foreground:220 25% 95%;--primary:221 83% 62%;--primary-foreground:222 47% 11%;--primary-hover:221 83% 68%;--primary-active:221 83% 56%;--primary-subtle:222 50% 20%;--accent:189 80% 55%;--accent-subtle:189 50% 20%;--success:158 60% 50%;--success-subtle:158 40% 18%;--warning:35 92% 58%;--warning-subtle:35 60% 20%;--danger:0 80% 65%;--danger-subtle:0 50% 22%;--info:199 80% 60%;--info-subtle:199 50% 20%;--muted:222 30% 14%;--muted-foreground:220 12% 65%;--border:222 25% 18%;--border-strong:222 20% 25%;--input:222 25% 18%;--ring:221 83% 62%;--sidebar:222 47% 5%;--sidebar-foreground:220 25% 92%;--sidebar-muted:222 35% 11%;--sidebar-active:221 83% 55%;--sidebar-border:222 35% 14%;--sidebar-text-muted:220 15% 55%;--header:222 35% 9%;--header-foreground:220 25% 95%;--header-border:222 25% 16%;--expertise-ux:280 75% 65%;--expertise-dev:221 83% 60%;--expertise-data:158 64% 55%;--expertise-pm:35 92% 60%;--expertise-pmm:0 80% 65%;--chart-1:221 83% 65%;--chart-2:189 80% 55%;--chart-3:158 60% 55%;--chart-4:35 92% 60%;--chart-5:280 65% 70%;--chart-6:340 75% 65%;--chart-7:220 14% 60%;--chart-8:199 80% 60%;--chart-9:25 95% 60%;--chart-10:162 65% 55%;--shadow-card:0 1px 2px 0 rgba(0,0,0,0.3),0 1px 3px 0 rgba(0,0,0,0.4);--shadow-md:0 4px 12px -2px rgba(0,0,0,0.5),0 2px 4px -1px rgba(0,0,0,0.3);--shadow-lg:0 12px 28px -8px rgba(0,0,0,0.6),0 4px 8px -2px rgba(0,0,0,0.4)}.avatar{width:28px;height:28px;border-radius:50%;color:white;font-size:11px;font-weight:600;flex-shrink:0}.avatar,.btn{display:inline-flex;align-items:center;justify-content:center}.btn{gap:6px;height:32px;padding:0 12px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid transparent;cursor:pointer;white-space:nowrap;font-family:inherit}.btn-primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}.btn-primary:hover{background:hsl(var(--primary-hover))}.btn-secondary{background:hsl(var(--card));color:hsl(var(--foreground));border-color:hsl(var(--border))}.btn-secondary:hover{background:hsl(var(--surface-muted));border-color:hsl(var(--border-strong))}.btn-ghost{background:transparent;color:hsl(var(--foreground))}.btn-ghost:hover{background:hsl(var(--surface-muted))}.btn-sm{height:28px;padding:0 10px;font-size:12px}.filter-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;flex-wrap:wrap}.filter-pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;background:hsl(var(--surface-muted));border:1px solid hsl(var(--border));border-radius:14px;font-size:12px;cursor:pointer;font-family:inherit;color:hsl(var(--foreground))}.filter-pill .label{color:hsl(var(--muted-foreground))}.filter-pill .value{font-weight:500}.filter-pill:hover{border-color:hsl(var(--border-strong))}.filter-pill.active{border-color:hsl(var(--primary));background:hsl(var(--primary-subtle))}.filter-pill.active,.filter-pill.active .label{color:hsl(var(--primary))}.filter-search{height:28px;padding:0 12px;border-radius:14px;border:1px solid hsl(var(--border));background:hsl(var(--surface-muted));font-size:12px;font-family:inherit;color:hsl(var(--foreground));width:210px;outline:none}.filter-search::-moz-placeholder{color:hsl(var(--muted-foreground))}.filter-search::placeholder{color:hsl(var(--muted-foreground))}.filter-search:focus{border-color:hsl(var(--primary));background:hsl(var(--card))}.grid-screen{flex-direction:column;border:1px solid hsl(var(--border));border-radius:8px;overflow:hidden;height:100%;isolation:isolate}.grid-kpis,.grid-screen{display:flex;background:hsl(var(--card))}.grid-kpis{align-items:stretch;gap:8px;padding:10px 12px;border-bottom:1px solid hsl(var(--border))}.kpi-pill{display:flex;flex-direction:column;padding:6px 14px;background:hsl(var(--surface-muted));border:1px solid hsl(var(--border));border-radius:6px;min-width:110px;position:relative}.kpi-pill.highlight{background:hsl(var(--primary-subtle));border-color:hsl(var(--primary)/.2)}.kpi-label{font-size:10px;font-weight:500;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em}.kpi-pill.highlight .kpi-label{color:hsl(var(--primary))}.kpi-value{font-size:18px;font-weight:600;line-height:1.1;margin-top:2px}.kpi-value small{font-size:10px;font-weight:500;color:hsl(var(--muted-foreground));margin-left:2px}.kpi-pill.highlight .kpi-value{color:hsl(var(--primary))}.kpi-sub{font-size:10px;color:hsl(var(--muted-foreground));margin-top:1px}.autosave-indicator{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:14px;font-size:11px;background:hsl(var(--success-subtle));color:hsl(var(--success));font-weight:500}.autosave-indicator.saving{background:hsl(var(--info-subtle));color:hsl(var(--info))}.autosave-indicator.conflict{background:hsl(var(--danger-subtle));color:hsl(var(--danger))}.spinner{width:10px;height:10px;border:1.5px solid;border-right:1.5px solid transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.grid-scroll{flex:1;overflow:auto;position:relative}.staffing-table{border-collapse:separate;border-spacing:0;font-size:13px;width:-moz-max-content;width:max-content;min-width:100%}.staffing-table thead th{position:sticky;top:0;background:hsl(var(--surface-muted));border-bottom:1px solid hsl(var(--border-strong));z-index:500;height:36px;text-align:left;font-weight:500}.col-row-head{width:380px;min-width:380px;max-width:380px;padding:0;border-right:1px solid hsl(var(--border));background:hsl(var(--card))}.staffing-table thead .col-row-head{background:hsl(var(--surface-muted));z-index:501}.sticky-l{position:sticky;left:0}.col-month{width:78px;min-width:78px;text-align:center;padding:0;border-right:1px solid hsl(var(--border))}.col-month.locked{background:hsl(var(--muted))}.col-month.cur-month{background:hsl(var(--primary-subtle));border-bottom:2px solid hsl(var(--primary))}.month-cell-head{display:flex;flex-direction:column;align-items:center;padding:4px 6px;gap:1px}.m-label{font-size:12px;font-weight:600;color:hsl(var(--foreground));line-height:1.15}.m-year{font-weight:400}.m-days,.m-year{color:hsl(var(--muted-foreground));font-size:10px}.m-days{font-variant-numeric:tabular-nums;line-height:1.1}.col-month.cur-month .m-label{color:hsl(var(--primary))}.staffing-table tbody td{border-bottom:1px solid hsl(var(--border));border-right:1px solid hsl(var(--border));height:32px;padding:0;background:hsl(var(--card));position:relative}.staffing-table tbody tr:nth-child(2n) td{background:hsl(var(--surface-muted)/.4)}.staffing-table tbody tr.row-consultant td{background:hsl(var(--surface-muted));border-top:1px solid hsl(var(--border-strong));height:44px;font-weight:500;position:sticky;top:90px;z-index:calc(var(--blk-z, 1))}.staffing-table tbody tr.row-consultant td.sticky-l{z-index:calc(var(--blk-z, 1) + 1)}.staffing-table tbody tr.row-cap-real td{position:sticky;top:134px;z-index:calc(var(--blk-z, 1));background:hsl(var(--card))}.staffing-table tbody tr.row-cap-real td.sticky-l{z-index:calc(var(--blk-z, 1) + 1)}.staffing-table.mode-compare tbody tr.row-cap-real td{top:142px}.cap-real-val{font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.cap-real-val .sep{color:hsl(var(--muted-foreground));font-weight:400;margin:0 1px}.cap-real-val.ok{color:hsl(var(--success))}.cap-real-val.mid{color:hsl(var(--warning))}.cap-real-val.under{color:hsl(var(--danger))}.staffing-table tbody tr.row-project td{height:48px}.staffing-table tbody tr.row-consultant.understaffed td.col-row-head{background:hsl(var(--warning-subtle)/.5)}.consultant-row-head{display:flex;align-items:center;gap:8px;padding:0 12px;height:100%;cursor:pointer}.exp-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;vertical-align:middle}.prod-rate-chip{background:transparent;color:inherit;border:1px solid transparent;padding:0 4px;height:16px;border-radius:3px;font-size:10px;font-weight:500;line-height:1;cursor:pointer;font-family:inherit}.prod-rate-chip:hover{border-color:hsl(var(--border-strong));background:hsl(var(--card))}.prod-rate-chip.reduced{background:hsl(var(--warning-subtle));color:hsl(var(--warning));font-weight:600}.prod-rate-chip.reduced:hover{border-color:hsl(var(--warning)/.5)}.prod-rate-edit{display:inline-flex;align-items:center;gap:1px;height:16px;padding:0 4px;border:1px solid hsl(var(--primary));border-radius:3px;background:hsl(var(--card));font-size:10px}.prod-rate-input{width:22px;height:14px;border:0;outline:none;background:transparent;font-size:10px;font-weight:600;color:hsl(var(--foreground));text-align:right;padding:0;font-family:inherit;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.prod-rate-input::-webkit-inner-spin-button,.prod-rate-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.prod-rate-suffix{font-size:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.meta-row-head,.prod-rate-suffix{color:hsl(var(--muted-foreground))}.meta-row-head{display:flex;align-items:center;gap:8px;padding:0 12px;height:100%;font-size:11px}.meta-label{font-weight:500}.meta-btn{margin-left:auto;background:transparent;border:none;color:hsl(var(--primary));font-size:10px;cursor:pointer;display:inline-flex;align-items:center;gap:3px;opacity:0;transition:opacity .15s}.row-meta:hover .meta-btn{opacity:1}.project-row-head{display:flex;align-items:flex-start;gap:8px;padding:6px 12px;min-height:100%}.proj-name{font-size:12px;font-weight:500;line-height:1.25;word-break:break-word}.proj-meta{color:hsl(var(--muted-foreground));display:flex;gap:6px;margin-top:2px}.estimate-chip,.proj-meta{font-size:10px;align-items:center;flex-wrap:wrap}.estimate-chip{display:inline-flex;gap:5px;max-width:100%;line-height:1.4}.estimate-chip-icon{color:hsl(var(--muted-foreground));flex-shrink:0}.estimate-chip-label{color:hsl(var(--muted-foreground));font-weight:500;word-break:break-word}.estimate-chip-cat{color:hsl(var(--muted-foreground)/.7);font-weight:400;font-style:italic}.row-unstaffed{background:hsl(var(--warning)/.04)}.row-unstaffed:hover{background:hsl(var(--warning)/.08)}.row-unstaffed .col-row-head{color:hsl(var(--muted-foreground))}.unstaffed-dot{width:10px;height:10px;border-radius:50%;border:1.5px dashed hsl(var(--warning)/.6);flex-shrink:0}.staffing-table tbody tr.row-category td{height:30px!important;background:hsl(var(--primary)/.07);border-top:1px solid hsl(var(--border-strong));border-bottom:1px solid hsl(var(--border))}.staffing-table tbody tr.row-category td.col-row-head{border-left:3px solid hsl(var(--primary)/.35)}.category-row-head{display:flex;align-items:center;gap:8px;padding:0 12px 0 53px;height:100%}.category-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:hsl(var(--foreground));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.category-meta{font-size:10px;font-weight:500;color:hsl(var(--muted-foreground));flex-shrink:0}.category-total{font-size:11px;font-weight:700;color:hsl(var(--foreground)/.75)}.row-unstaffed .row-action{opacity:1;background:hsl(var(--primary)/.1);color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.25)}.row-unstaffed .row-action:hover{background:hsl(var(--primary)/.18)}.project-add-collab{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:600;border-radius:5px;cursor:pointer;background:hsl(var(--primary)/.1);color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.25);opacity:0;transition:opacity .15s}.row-project-head:hover .project-add-collab{opacity:1}.project-add-collab:hover{background:hsl(var(--primary)/.18)}.staffing-table tbody tr.row-project-head td{background:hsl(var(--surface-muted))!important;border-top:2px solid hsl(var(--border-strong));box-shadow:inset 0 3px 0 -1px hsl(var(--primary)/.1)}.staffing-table tbody tr.row-project-head td.col-row-head{border-left:3px solid hsl(var(--primary)/.55)}.staffing-table tbody tr.row-project-head.staff-ok td.col-row-head{border-left-color:hsl(var(--success))}.staffing-table tbody tr.row-project-head.staff-under td.col-row-head{border-left-color:hsl(var(--warning))}.estimate-chip-days{display:inline-flex;align-items:center;font-size:10px;font-weight:700;padding:0 5px;border-radius:3px;font-variant-numeric:tabular-nums;flex-shrink:0}.estimate-chip-days.ok{background:hsl(var(--success)/.14);color:hsl(var(--success))}.estimate-chip-days.over{background:hsl(var(--danger)/.14);color:hsl(var(--danger))}.estimate-chip-cta{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-family:inherit;padding:1px 6px;border-radius:3px;border:1px dashed hsl(var(--border-strong));background:transparent;color:hsl(var(--muted-foreground));cursor:pointer}.estimate-chip-cta:hover{border-color:hsl(var(--primary));color:hsl(var(--primary))}.tj-pill{padding:1px 5px;background:hsl(var(--accent-subtle));color:hsl(var(--accent));border-radius:3px}.market-chip,.tj-pill{display:inline-flex;align-items:center;font-size:10px;font-weight:500}.market-chip{gap:3px;padding:1px 6px;border-radius:10px;border:1px solid transparent;cursor:pointer;white-space:nowrap;background:transparent}.market-chip:hover{filter:brightness(.95)}.market-chip-add{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border-radius:9px;border:1px dashed hsl(var(--border-strong));background:transparent;color:hsl(var(--muted-foreground));cursor:pointer}.market-chip-add:hover{border-color:hsl(var(--primary));color:hsl(var(--primary))}.market-picker{position:absolute;top:calc(100% + 4px);left:0;width:240px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:6px;box-shadow:var(--shadow-lg);z-index:50;padding:4px;max-height:280px;overflow-y:auto}.market-picker .opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:4px;cursor:pointer;font-size:12px}.market-picker .opt:hover{background:hsl(var(--surface-muted))}.market-picker .opt.selected{background:hsl(var(--primary-subtle));color:hsl(var(--primary))}.market-picker .opt .swatch{width:8px;height:8px;border-radius:50%;flex-shrink:0}.row-action{background:transparent;border:none;width:22px;height:22px;border-radius:4px;color:hsl(var(--muted-foreground));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.row-project:hover .row-action{opacity:1}.row-action:hover{background:hsl(var(--surface-muted));color:hsl(var(--foreground))}.add-row-head{display:flex;align-items:center;gap:8px;padding:0 12px;height:100%}.add-project-btn{background:transparent;border:1px dashed hsl(var(--border-strong));color:hsl(var(--muted-foreground));height:24px;padding:0 10px;border-radius:4px;font-size:11px;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.add-project-btn:hover{border-color:hsl(var(--primary));color:hsl(var(--primary));background:hsl(var(--primary-subtle))}.gcell{text-align:center}.gcell .cell-val{display:block;font-size:13px;color:hsl(var(--foreground));padding:0 6px}.gcell.editable{cursor:cell}.gcell.editable:hover{background:hsl(var(--primary-subtle)/.4)!important}.gcell.locked{background:hsl(var(--muted))!important;cursor:not-allowed}.gcell.locked .cell-val{color:hsl(var(--muted-foreground))}.gcell.no-perm{background:hsl(var(--surface-muted)/.5)!important;cursor:not-allowed;opacity:.6}.gcell.no-perm .cell-val{color:hsl(var(--muted-foreground))}.gcell.no-perm:hover{background:hsl(var(--surface-muted)/.5)!important}.gcell.cur-month{background:hsl(var(--primary-subtle)/.2)!important}.row-consultant .gcell.cur-month{background:hsl(var(--primary-subtle)/.4)!important}.row-consultant .gcell.summary.cur-month{background:transparent!important}.row-consultant td.gcell.summary{background:transparent!important;padding:0}.gcell.empty-add{background:hsl(var(--surface-muted)/.3)!important}.gcell.readonly .meta-val{color:hsl(var(--muted-foreground));font-size:11px;padding:0 6px}.gcell.leaves .meta-val{color:hsl(var(--warning));font-weight:500}.gcell.active{outline:2px solid hsl(var(--primary));outline-offset:-2px;z-index:2;background:hsl(var(--card))!important}.gcell.out-of-contract{background:repeating-linear-gradient(135deg,hsl(var(--muted)/.55),hsl(var(--muted)/.55) 4px,hsl(var(--surface-muted)/.7) 4px,hsl(var(--surface-muted)/.7) 8px)!important;cursor:not-allowed;color:hsl(var(--muted-foreground))}.gcell.out-of-contract:hover{background:inherit!important}.gcell.summary.out-of-contract{padding:0}.row-consultant .gcell.summary.out-of-contract,.row-consultant .gcell.summary.out-of-contract.cur-month{background:repeating-linear-gradient(135deg,hsl(var(--muted)/.55),hsl(var(--muted)/.55) 4px,hsl(var(--surface-muted)/.7) 4px,hsl(var(--surface-muted)/.7) 8px)!important}.gcell.overflow{background:transparent!important;box-shadow:inset 2px 0 0 hsl(var(--warning));outline:none}.gcell.overflow .cell-val{color:hsl(var(--foreground));font-weight:600}.gcell.conflict{outline:2px solid hsl(var(--danger));outline-offset:-2px;background:hsl(var(--danger-subtle))!important;z-index:5}.cell-input{width:100%;height:100%;border:none;outline:none;background:transparent;text-align:center;font-size:13px;font-weight:500;color:hsl(var(--primary));padding:0 6px}.drag-handle{position:absolute;bottom:-3px;right:-3px;width:7px;height:7px;background:hsl(var(--primary));border:1.5px solid hsl(var(--card));border-radius:1px;cursor:crosshair;z-index:4}.staffing-table tbody tr.row-consultant td.gcell.summary{padding:0}.summary-cell{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:4px 6px;gap:3px;border-left:3px solid transparent}.summary-cell.tone-under{background:hsl(var(--danger)/.32);border-left-color:hsl(var(--danger));box-shadow:inset 0 0 0 1px hsl(var(--danger)/.45)}.summary-cell.tone-mid{background:hsl(var(--warning)/.38);border-left-color:hsl(var(--warning));box-shadow:inset 0 0 0 1px hsl(var(--warning)/.45)}.summary-cell.tone-ok{background:hsl(var(--success)/.32);border-left-color:hsl(var(--success));box-shadow:inset 0 0 0 1px hsl(var(--success)/.45)}.staffing-table tbody tr.row-consultant td.gcell.summary.locked .summary-cell{background:transparent;border-left-color:transparent;opacity:.55}.summary-rate{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.summary-rate.under{color:hsl(var(--danger))}.summary-rate.mid{color:hsl(var(--warning))}.summary-rate.ok{color:hsl(var(--success))}.summary-rate .muted{color:currentColor;opacity:.7;font-weight:600;font-size:12px;margin-left:1px}.rate-bar{width:100%;height:3px;background:hsl(var(--background)/.6);border-radius:2px;overflow:hidden}.rate-fill{height:100%;background:hsl(var(--success));transition:width .2s}.rate-fill.under{background:hsl(var(--danger))}.rate-fill.mid{background:hsl(var(--warning))}.rate-fill.ok{background:hsl(var(--success))}.row-total.row-total-top td{background:hsl(var(--surface-strong))!important;border-bottom:2px solid hsl(var(--border-strong));position:sticky;top:35px;z-index:502;height:56px}.row-total.row-total-top .col-row-head.sticky-l{z-index:503}.row-total td{background:hsl(var(--surface-strong))!important;border-top:2px solid hsl(var(--border-strong));position:sticky;bottom:0;z-index:3;height:56px}.total-cell{display:flex;flex-direction:column;align-items:center;padding:4px 3px;gap:1px;line-height:1.15}.total-ca{font-size:12px;font-weight:700;color:hsl(var(--foreground))}.total-ca .muted{color:hsl(var(--muted-foreground));font-weight:500;margin-left:1px;font-size:10px}.total-rate{font-size:12px;font-weight:700}.total-rate.under{color:hsl(var(--danger))}.total-rate.mid{color:hsl(var(--warning))}.total-rate.ok{color:hsl(var(--success))}.total-prod{font-size:10px;font-weight:500}.total-prod,.total-prod .muted{color:hsl(var(--muted-foreground))}.total-prod .muted{opacity:.7}.leaves-popover{position:absolute;top:calc(100% + 4px);right:0;width:300px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:8px;box-shadow:var(--shadow-lg);z-index:60;text-align:left;font-weight:400}.leaves-popover-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px}.leaves-list,.leaves-popover-head{border-bottom:1px solid hsl(var(--border))}.leaves-list{padding:6px 10px;max-height:140px;overflow-y:auto}.leaves-list-item{display:flex;align-items:center;gap:6px;padding:4px 0}.leaves-form{padding:8px 10px}.leaves-form-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.leaves-label{font-size:11px;font-weight:500;color:hsl(var(--muted-foreground));width:38px;flex-shrink:0}.leaves-input{flex:1;height:26px;padding:0 8px;border:1px solid hsl(var(--border));border-radius:4px;background:hsl(var(--card));font-size:12px;color:hsl(var(--foreground));outline:none}.leaves-input:focus{border-color:hsl(var(--primary));box-shadow:0 0 0 2px hsl(var(--primary)/.15)}.leaves-error{font-size:11px;color:hsl(var(--danger));background:hsl(var(--danger-subtle));padding:4px 8px;border-radius:4px;margin-top:4px}.gcell.leaves.editable{cursor:pointer}.gcell.leaves.editable:hover{background:hsl(var(--info-subtle)/.5)!important}.gcell.leaves.editable .meta-val{color:hsl(var(--info))}.history-popover{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:4px;width:320px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:8px;box-shadow:var(--shadow-lg);z-index:50;text-align:left}.conflict-dialog-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.4);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1300}.conflict-dialog{width:480px;background:hsl(var(--popover));border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden;text-align:left}.autocomplete-input{display:flex;align-items:center;gap:6px;height:28px;padding:0 10px;background:hsl(var(--card));border:1px solid hsl(var(--primary));border-radius:4px;color:hsl(var(--muted-foreground))}.autocomplete-input input{flex:1;border:none;outline:none;background:transparent;font-size:12px;color:hsl(var(--foreground))}.autocomplete-pop{position:absolute;top:calc(100% + 4px);left:0;width:380px;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:8px;box-shadow:var(--shadow-lg);z-index:40}.ac-item{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer}.ac-item.highlight{background:hsl(var(--primary-subtle))}.ac-item:hover,.kbd-tiny{background:hsl(var(--surface-muted))}.kbd-tiny{font-family:var(--font-mono);font-size:9px;padding:1px 4px;border:1px solid hsl(var(--border));border-radius:2px;color:hsl(var(--muted-foreground))}.gcell.verified-cell,.staffing-table.mode-verified .gcell.editable{cursor:not-allowed}.gcell.verified-cell .verified-val{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:13px;font-style:italic;font-variant-numeric:tabular-nums;color:hsl(263 70% 55%)}.gcell.verified-cell.has-data{background:hsl(263 70% 55%/.06)}.gcell.verified-cell .verified-val.empty{opacity:.4;font-style:normal}.staffing-table.mode-compare .col-month{width:96px;min-width:96px}.staffing-table.mode-compare tbody tr.row-project td{height:56px}.gcell.compare-cell{padding:0}.compare-cell-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:4px;gap:2px;line-height:1.1;text-align:center}.gcell.compare-cell .compare-projection-solo{width:100%;height:100%;border:0;outline:none;background:transparent;cursor:cell}.compare-cell-inner .compare-equal-mark{font-size:9px;color:hsl(263 70% 55%);opacity:.7;font-style:italic;line-height:1}.compare-cell-inner .compare-row-values{display:inline-flex;align-items:baseline;gap:4px;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.compare-cell-inner .compare-projection{border:0;outline:none;background:transparent;padding:0;font-size:inherit;font-weight:inherit;font-variant-numeric:inherit;color:hsl(var(--foreground));cursor:cell}.compare-cell-inner .compare-projection:disabled{cursor:not-allowed}.compare-cell-inner .compare-sep{color:hsl(var(--muted-foreground));font-weight:400}.compare-cell-inner .compare-verified{font-style:italic;color:hsl(263 70% 55%)}.compare-cell-inner .compare-verified.empty{color:hsl(var(--muted-foreground));font-style:normal;opacity:.55}.compare-cell-inner .compare-delta{display:block;width:100%;text-align:center;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.compare-cell-inner .compare-delta.up{color:hsl(var(--success))}.compare-cell-inner .compare-delta.down{color:hsl(var(--danger))}.gcell.compare-cell.editable:hover{background:hsl(var(--primary-subtle)/.4)!important}.summary-cell.compare{padding:4px;gap:2px;align-items:center}.summary-cell.compare .summary-rate-row{display:inline-flex;align-items:baseline;gap:4px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.summary-cell.compare .summary-rate-half{font-size:13px;font-weight:700}.summary-cell.compare .summary-rate-half.proj.under{color:hsl(var(--danger))}.summary-cell.compare .summary-rate-half.proj.mid{color:hsl(var(--warning))}.summary-cell.compare .summary-rate-half.proj.ok{color:hsl(var(--foreground))}.summary-cell.compare .summary-rate-half.ver{color:hsl(263 70% 55%);font-style:italic}.summary-cell.compare .summary-rate-half.ver.empty{color:hsl(var(--muted-foreground));font-style:normal;opacity:.7}.summary-cell.compare .summary-rate-half .muted{font-size:10px;font-weight:500;margin-left:1px;opacity:.7}.summary-cell.compare .summary-rate-sep{color:hsl(var(--muted-foreground));font-size:13px;font-weight:400}.summary-cell.compare .summary-delta{font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.summary-cell.compare .summary-delta.up{color:hsl(var(--success))}.summary-cell.compare .summary-delta.down{color:hsl(var(--danger))}.gcell.total.compare-total .total-cell.compare{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:2px 4px;height:100%}.total-cell.compare .total-rate-row{display:inline-flex;align-items:baseline;gap:3px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.total-cell.compare .total-rate-half.proj.under{color:hsl(var(--danger))}.total-cell.compare .total-rate-half.proj.mid{color:hsl(var(--warning))}.total-cell.compare .total-rate-half.proj.ok{color:hsl(var(--foreground))}.total-cell.compare .total-rate-half.ver{color:hsl(263 70% 55%);font-style:italic}.total-cell.compare .total-rate-half.ver.empty{color:hsl(var(--muted-foreground));font-style:normal;opacity:.7}.total-cell.compare .total-rate-half .muted{font-size:10px;margin-left:1px;opacity:.7}.total-cell.compare .total-delta{font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.total-cell.compare .total-delta.up{color:hsl(var(--success))}.total-cell.compare .total-delta.down{color:hsl(var(--danger))}.total-cell.compare .total-prod{font-size:10px;color:hsl(var(--muted-foreground))}.staffing-table.mode-compare tbody tr.row-consultant td{height:52px}.staffing-table.mode-compare tbody tr.row-total td{height:60px}.staffing-table tbody tr.row-virtual td{background:hsl(263 70% 55%/.025)}.staffing-table tbody tr.row-virtual td.col-row-head{box-shadow:inset 2px 0 0 hsl(263 70% 55%/.5)}.staffing-table tbody tr.row-local td{background:hsl(var(--warning)/.1)}.staffing-table tbody tr.row-local td.col-row-head{box-shadow:inset 3px 0 0 hsl(var(--warning)/.85)}.staffing-table tbody tr.row-local:hover td{background:hsl(var(--warning)/.16)}.compare-cell-actions{position:absolute;inset:0;display:flex;justify-content:space-between;align-items:flex-start;padding:2px;pointer-events:none;opacity:0;transition:opacity .12s ease-out}.gcell.compare-cell:hover .compare-cell-actions{opacity:1}.compare-cell-action{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:3px;border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--muted-foreground));cursor:pointer;transition:all .12s ease-out;padding:0;box-shadow:0 1px 2px hsl(var(--foreground)/.05)}.compare-cell-action:hover:not(:disabled){transform:scale(1.1);box-shadow:0 2px 4px hsl(var(--foreground)/.12)}.compare-cell-action.align:hover:not(:disabled){border-color:hsl(263 70% 55%);color:hsl(263 70% 55%);background:hsl(263 70% 55%/.1)}.compare-cell-action.push:hover:not(:disabled){border-color:hsl(var(--primary));color:hsl(var(--primary));background:hsl(var(--primary-subtle))}.compare-cell-action.validate{color:hsl(var(--success));border-color:hsl(var(--success)/.4)}.compare-cell-action.validate:hover:not(:disabled){border-color:hsl(var(--success));color:hsl(var(--success));background:hsl(var(--success)/.12)}.assign-budget-cta{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;cursor:pointer;white-space:nowrap;background:hsl(var(--warning)/.15);color:hsl(var(--warning));border:1px solid hsl(var(--warning)/.4)}.assign-budget-cta:hover{background:hsl(var(--warning)/.25)}.compare-cell-action.delete{color:hsl(var(--danger));border-color:hsl(var(--danger)/.4)}.compare-cell-action.delete:hover:not(:disabled){border-color:hsl(var(--danger));color:hsl(var(--danger));background:hsl(var(--danger)/.12)}.compare-cell-action:disabled{opacity:.3;cursor:not-allowed}.compare-validated-sub{font-size:9px;line-height:1;color:hsl(var(--success));font-variant-numeric:tabular-nums;margin-top:1px}.compare-leave-conflict{bottom:1px;font-size:10px;line-height:1;z-index:2}.compare-cell-action-error,.compare-leave-conflict{position:absolute;left:2px;color:hsl(var(--danger));pointer-events:auto}.compare-cell-action-error{bottom:2px;right:2px;font-size:9px;background:hsl(var(--danger-subtle));padding:2px 4px;border-radius:3px;cursor:pointer;text-align:center;line-height:1.1}.row-consultant .gcell.summary.cur-month,.row-consultant td.gcell.summary{background:hsl(var(--surface-muted))!important}.row-consultant .gcell.summary.out-of-contract,.row-consultant .gcell.summary.out-of-contract.cur-month{background:repeating-linear-gradient(135deg,hsl(var(--muted)/.55),hsl(var(--muted)/.55) 4px,hsl(var(--surface-muted)/.7) 4px,hsl(var(--surface-muted)/.7) 8px) hsl(var(--surface-muted))!important}.staffing-table tbody tr.row-consultant.understaffed td.col-row-head{background:linear-gradient(hsl(var(--warning-subtle)/.5),hsl(var(--warning-subtle)/.5)) hsl(var(--surface-muted))!important}.row-cap-real .gcell.cur-month{background:linear-gradient(hsl(var(--primary-subtle)/.2),hsl(var(--primary-subtle)/.2)) hsl(var(--card))!important}.row-cap-real .gcell.out-of-contract{background:repeating-linear-gradient(135deg,hsl(var(--muted)/.55),hsl(var(--muted)/.55) 4px,hsl(var(--surface-muted)/.7) 4px,hsl(var(--surface-muted)/.7) 8px) hsl(var(--card))!important}.row-consultant .summary-cell.tone-under{background:linear-gradient(hsl(var(--danger)/.32),hsl(var(--danger)/.32)) hsl(var(--surface-muted))}.row-consultant .summary-cell.tone-mid{background:linear-gradient(hsl(var(--warning)/.38),hsl(var(--warning)/.38)) hsl(var(--surface-muted))}.row-consultant .summary-cell.tone-ok{background:linear-gradient(hsl(var(--success)/.32),hsl(var(--success)/.32)) hsl(var(--surface-muted))}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-bottom:4px;margin-bottom:24px}.detail-header-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.detail-header-actions{display:flex;gap:8px;flex-shrink:0;padding-top:4px}.detail-identity{gap:16px}.detail-identity,.detail-meta{display:flex;align-items:center}.detail-meta{gap:10px;flex-wrap:wrap;font-size:13px;color:hsl(var(--muted-foreground))}.detail-meta .sep{opacity:.4}.kpi-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.cd-kpi{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}.cd-kpi-lab{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:hsl(var(--muted-foreground));margin-bottom:4px}.cd-kpi-val{font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1}.cd-kpi-val small{font-size:14px;font-weight:500;color:hsl(var(--muted-foreground));margin-left:4px}.cd-kpi-sub{font-size:12px;margin-top:2px}.cd-kpi-sub .muted{color:hsl(var(--muted-foreground))}.cd-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;padding:18px;margin-bottom:14px}.cd-card-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid hsl(var(--border))}.cd-card-title{font-size:15px;font-weight:600;margin:0}.cd-monthly{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;height:180px;align-items:flex-end}.cd-month{display:flex;flex-direction:column;height:100%;gap:4px}.cd-month-bars{flex:1;position:relative;display:flex;align-items:flex-end;background:hsl(var(--surface-muted)/.4);border-radius:4px 4px 0 0;padding:0 6px}.cd-month-bar-cap{position:absolute;bottom:0;left:6px;right:6px;background:hsl(var(--surface-strong));border-radius:3px 3px 0 0}.cd-month-bar-st{position:relative;width:100%;background:hsl(var(--primary));border-radius:3px 3px 0 0;min-height:2px}.cd-month-bar-st.under{background:hsl(var(--danger))}.cd-month-bar-st.mid{background:hsl(var(--warning))}.cd-month-bar-st.ok{background:hsl(var(--success))}.cd-month-bar-st.out{background:repeating-linear-gradient(135deg,hsl(var(--muted)/.6),hsl(var(--muted)/.6) 4px,hsl(var(--surface-muted)) 4px,hsl(var(--surface-muted)) 8px)}.cd-month-foot{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;border-top:1px solid hsl(var(--border));padding-top:4px}.cd-month-lab{font-weight:600}.cd-month-val{color:hsl(var(--muted-foreground));font-size:9px}.cd-proj-table{display:flex;flex-direction:column;border:1px solid hsl(var(--border));border-radius:6px;overflow:hidden}.cd-proj-row{display:grid;grid-template-columns:2fr 80px 1fr 80px;gap:12px;padding:10px 14px;align-items:center;font-size:13px;border-bottom:1px solid hsl(var(--border))}.cd-proj-row:last-child{border-bottom:none}.cd-proj-row.cd-proj-head{background:hsl(var(--surface-muted));font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:hsl(var(--muted-foreground));padding:8px 14px}.cd-proj-row .num{text-align:right}.cd-proj-row.cd-proj-head .cd-proj-cells span{text-align:center}.cd-proj-name{display:flex;align-items:center;gap:10px;min-width:0}.cd-proj-name .name-text{word-break:break-word}.cd-proj-status{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cd-proj-active{background:hsl(var(--success))}.cd-proj-completed{background:hsl(var(--muted-foreground))}.cd-proj-internal{background:hsl(var(--warning))}.cd-proj-cells{display:grid;grid-template-columns:repeat(12,1fr);gap:2px}.cd-proj-cells>span{text-align:center;font-size:10px;color:hsl(var(--muted-foreground));padding:1px 0}.cd-proj-cell{display:flex;align-items:center;justify-content:center;height:24px;border-radius:3px;font-size:11px;font-weight:600;background:hsl(var(--surface-muted)/.5)}.cd-proj-cell.empty{background:transparent}.pj-link{color:hsl(var(--primary));font-family:var(--font-mono);font-size:12px;display:inline-flex;align-items:center;gap:4px;text-decoration:none}.pj-link:hover{text-decoration:underline}.pj-monthly{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;height:220px}.pj-month{display:flex;flex-direction:column;gap:8px}.pj-month-bar-wrap{flex:1;display:flex;align-items:flex-end;background:linear-gradient(to top,hsl(var(--surface-muted)/.3) 0,transparent 50%);border-radius:6px;padding:6px}.pj-month-bar{width:100%;background:linear-gradient(to top,hsl(var(--primary)),hsl(var(--primary)/.7));border-radius:4px;position:relative;display:flex;justify-content:center;padding-top:8px;min-height:4px}.pj-month-bar-val{font-size:12px;font-weight:700;color:white}.pj-month-foot{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px}.pj-month-foot .muted{color:hsl(var(--muted-foreground));font-size:10px}.cd-proj-row.team-row{grid-template-columns:1.5fr 80px 2fr 80px}.pj-bl-table{display:flex;flex-direction:column}.pj-bl-row{display:grid;grid-template-columns:1.6fr 1fr 80px 130px 1.2fr 96px;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid hsl(var(--border));font-size:13px}.pj-bl-row:last-child{border-bottom:none}.pj-bl-head{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:hsl(var(--muted-foreground))}.pj-bl-row .num{text-align:right}.pj-bl-label{font-weight:600}.pj-bl-skill{color:hsl(var(--muted-foreground));font-size:12px}.pj-bl-prog{position:relative;height:7px;border-radius:4px;background:hsl(var(--surface-muted));overflow:hidden}.pj-bl-prog>span{position:absolute;inset:0 auto 0 0;border-radius:4px}.pj-bl-actions{display:flex;justify-content:flex-end}.pj-bl-add{display:flex;align-items:center;gap:8px;padding:8px 4px 12px;border-bottom:1px solid hsl(var(--border))}.pj-bl-select{flex:1;height:30px;padding:0 8px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--background));color:hsl(var(--foreground));font-size:12.5px}.pj-bl-select:focus{outline:none;border-color:hsl(var(--primary)/.6)}.cd-bl-grouprow{display:flex;align-items:center;gap:8px;padding:8px 4px 6px;margin-top:4px;border-bottom:1px solid hsl(var(--border));font-size:12px}.cd-bl-gtitle{font-weight:700}.cd-bl-gsub{color:hsl(var(--muted-foreground))}.cd-bl-gspacer{flex:1}.cd-bl-gstat{font-weight:600;font-size:12px}.cd-bl-grouprow.muted-group .cd-bl-gtitle{color:hsl(var(--muted-foreground))}.tv-stage{width:100%;height:100vh;background:radial-gradient(ellipse at top,#0a1428 0,#050912 60%,#02040a 100%);color:white;display:flex;flex-direction:column;font-family:var(--font-sans),"Inter",system-ui,sans-serif;position:relative;overflow:hidden;--background:222 70% 3%;--surface-muted:222 50% 8%;--card:222 60% 7%;--popover:222 60% 5%;--foreground:0 0% 100%;--muted-foreground:215 20% 60%;--border:222 50% 14%;--primary:221 100% 70%;--chart-1:221 100% 70%;--success:158 80% 55%;--warning:35 100% 60%;--danger:0 90% 65%}.tv-bg-grain{position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(96,165,250,.08) 0,transparent 40%),radial-gradient(circle at 80% 70%,rgba(52,211,153,.05) 0,transparent 40%);pointer-events:none}.tv-header{padding:32px 48px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.06);position:relative;z-index:1}.tv-brand-mark{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,#60a5fa,#3b82f6);display:inline-flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:16px;letter-spacing:-.02em;box-shadow:0 0 24px rgba(96,165,250,.35)}.tv-eyebrow{font-size:13px;color:rgba(255,255,255,.5);letter-spacing:.14em;text-transform:uppercase;font-weight:500}.tv-title{font-size:22px;margin-top:2px;letter-spacing:-.01em}.tv-clock,.tv-title{font-weight:600;color:white}.tv-clock{font-size:24px;font-variant-numeric:tabular-nums}.tv-clock-label{font-size:12px;color:rgba(255,255,255,.5);letter-spacing:.08em;text-transform:uppercase}.tv-live{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;background:rgba(248,113,113,.15);border:1px solid rgba(248,113,113,.3);border-radius:14px;font-size:12px;font-weight:600;color:#fca5a5;letter-spacing:.1em}.tv-live-dot{width:8px;height:8px;border-radius:50%;background:#f87171;animation:tvpulse 1.6s ease-in-out infinite}@keyframes tvpulse{0%,to{opacity:1}50%{opacity:.3}}.tv-main{flex:1;padding:32px 48px;flex-direction:column;min-height:0}.tv-footer,.tv-main{display:flex;position:relative;z-index:1}.tv-footer{padding:20px 48px;align-items:center;justify-content:space-between;border-top:1px solid rgba(255,255,255,.06);font-size:13px;color:rgba(255,255,255,.5);letter-spacing:.08em}.tv-dots{display:flex;gap:8px}.tv-dot{width:32px;height:4px;background:rgba(255,255,255,.15);border-radius:2px;border:0;padding:0;cursor:pointer;transition:background .2s}.tv-dot.on{background:#60a5fa;box-shadow:0 0 12px rgba(96,165,250,.6)}.tv-dot:hover{background:rgba(255,255,255,.3)}.tv-dot.on:hover{background:#60a5fa}.tv-kpi{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:32px 36px;display:flex;flex-direction:column;justify-content:space-between;min-height:0}.tv-kpi.glow{box-shadow:0 0 80px rgba(91,156,255,.18)}.tv-kpi-label{font-size:16px;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.12em;font-weight:500}.tv-kpi-value{font-size:132px;font-weight:600;letter-spacing:-.04em;line-height:1;color:white;font-variant-numeric:tabular-nums}.tv-kpi-value-unit{font-size:.4em;color:rgba(255,255,255,.5);margin-left:8px;font-weight:400}.tv-kpi-delta{display:inline-flex;align-items:center;gap:8px;font-size:18px;font-weight:500}.tv-kpi-delta.up{color:#34d399}.tv-kpi-delta.down{color:#f87171}.tv-kpi-delta.neutral{color:rgba(255,255,255,.6)}.tv-panel{background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.08);border-radius:16px;display:flex;flex-direction:column;overflow:hidden;min-height:0}.tv-panel-title{padding:24px 32px;font-size:16px;text-transform:uppercase;letter-spacing:.12em;color:rgba(255,255,255,.5);border-bottom:1px solid rgba(255,255,255,.06)}.tv-alert-row{display:flex;align-items:center;gap:24px;padding:22px 28px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.06);border-left-width:6px;border-radius:12px}.tv-alert-row.critical{border-left-color:#f87171}.tv-alert-row.important{border-left-color:#fbbf24}.tv-alert-row.watch{border-left-color:#60a5fa}.tv-alert-pill{font-size:11px;font-weight:700;letter-spacing:.15em;padding:6px 14px;border-radius:4px;flex-shrink:0}.tv-alert-pill.critical{background:rgba(248,113,113,.15);color:#fca5a5}.tv-alert-pill.important{background:rgba(251,191,36,.15);color:#fde68a}.tv-alert-pill.watch{background:rgba(96,165,250,.15);color:#93c5fd}.tv-alert-text{font-size:24px;color:white;font-weight:500;line-height:1.3}.tv-alert-meta{font-size:14px;color:rgba(255,255,255,.5);margin-top:4px}.recon-page{display:flex;flex-direction:column;gap:16px;padding:20px 24px 80px;max-width:1500px;margin:0 auto}.recon-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.recon-source-bar{gap:12px;padding:10px 14px;border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--card))}.recon-source-bar,.recon-src{display:flex;align-items:center}.recon-src{gap:10px;flex:1;min-width:0}.recon-src-letter{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}.recon-src.A .recon-src-letter{background:hsl(var(--primary)/.15);color:hsl(var(--primary))}.recon-src.B .recon-src-letter{background:hsl(263 70% 55%/.15);color:hsl(263 70% 55%)}.recon-src-meta{line-height:1.2;min-width:0}.recon-src-label{font-size:13px;font-weight:600;color:hsl(var(--foreground))}.recon-src-sub{font-size:11px;margin-top:2px}.recon-src-sub,.recon-swap{color:hsl(var(--muted-foreground))}.recon-swap{width:30px;height:30px;border-radius:50%;border:1px solid hsl(var(--border));background:hsl(var(--card));cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.recon-swap:hover{background:hsl(var(--surface-muted));color:hsl(var(--foreground))}.recon-source-tip{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11px;color:hsl(var(--muted-foreground));padding-left:12px;border-left:1px solid hsl(var(--border))}.recon-kpis{display:grid;grid-template-columns:repeat(5,1fr) 1.5fr;gap:8px}.recon-kpi{padding:10px 14px;border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--card));display:flex;flex-direction:column;justify-content:center;min-height:64px}.recon-kpi-val{font-size:20px;font-weight:700;line-height:1.1;letter-spacing:-.01em}.recon-kpi-lab{font-size:10px;font-weight:500;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.04em;margin-top:4px}.recon-kpi-money .recon-kpi-val{color:hsl(var(--warning))}.recon-kpi-progress{gap:8px}.recon-kpi-progress-bar{height:8px;background:hsl(var(--surface-muted));border-radius:4px;overflow:hidden}.recon-kpi-progress-fill{height:100%;background:linear-gradient(90deg,hsl(var(--success)) 0,hsl(var(--primary)) 100%);transition:width .3s ease}.recon-kpi-progress-meta{font-size:11px;color:hsl(var(--muted-foreground))}.recon-kpi-progress-meta b{color:hsl(var(--foreground))}.recon-filters{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid hsl(var(--border));border-bottom:1px solid hsl(var(--border))}.recon-filters-left,.recon-filters-right{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.filter-chip,.filter-chip-active{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:14px;font-size:11px;font-weight:500;border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--foreground));cursor:pointer}.filter-chip:hover{background:hsl(var(--surface-muted))}.filter-chip-active{background:hsl(var(--primary-subtle));border-color:hsl(var(--primary)/.3);color:hsl(var(--primary))}.filter-chip-ghost{display:inline-flex;align-items:center;font-size:11px;color:hsl(var(--muted-foreground));background:transparent;border:0;padding:4px 8px;cursor:pointer;text-decoration:underline;text-decoration-color:transparent}.filter-chip-ghost:hover{text-decoration-color:currentColor}.recon-tabs{display:inline-flex;border:1px solid hsl(var(--border));background:hsl(var(--surface-muted)/.5);border-radius:6px;padding:2px;gap:1px}.recon-tab{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:500;color:hsl(var(--muted-foreground));background:transparent;border:0;border-radius:4px;cursor:pointer}.recon-tab.active{background:hsl(var(--card));color:hsl(var(--foreground));box-shadow:0 1px 2px hsl(var(--foreground)/.05)}.recon-list{display:flex;flex-direction:column;gap:10px}.recon-card{border:1px solid hsl(var(--border));border-radius:10px;background:hsl(var(--card));overflow:hidden;transition:border-color .15s,box-shadow .15s}.recon-card:hover{border-color:hsl(var(--border-strong))}.recon-card-selected{border-color:hsl(var(--primary)/.5);box-shadow:0 0 0 1px hsl(var(--primary)/.3)}.recon-card-head{display:grid;grid-template-columns:24px 36px 1fr auto auto auto;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid hsl(var(--border));background:hsl(var(--surface-muted)/.4)}.recon-check{display:flex}.recon-card-id{min-width:0}.recon-card-name{font-size:13px;font-weight:600}.recon-card-meta{font-size:11px;color:hsl(var(--muted-foreground));margin-top:2px;display:inline-flex;gap:4px;align-items:center}.exp-pill{display:inline-flex;font-size:9px;font-weight:600;padding:1px 6px;border-radius:8px;text-transform:uppercase;letter-spacing:.04em;background:hsl(var(--accent-subtle));color:hsl(var(--accent))}.exp-pill.dev{background:hsl(217 91% 60%/.15);color:hsl(217 91% 60%)}.exp-pill.data{background:hsl(155 70% 45%/.15);color:hsl(155 70% 40%)}.exp-pill.ux{background:hsl(330 80% 60%/.15);color:hsl(330 80% 55%)}.exp-pill.pm{background:hsl(263 70% 55%/.15);color:hsl(263 70% 55%)}.exp-pill\.pm-mgmt{background:hsl(28 90% 55%/.15);color:hsl(28 90% 55%)}.recon-card-month{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.recon-month-lab{font-size:9px;text-transform:uppercase;color:hsl(var(--muted-foreground));letter-spacing:.05em}.recon-month-val{font-size:12px;font-weight:600}.recon-sev{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:12px;font-size:10px;font-weight:600}.recon-sev-dot{width:6px;height:6px;border-radius:50%}.recon-sev-high{background:hsl(var(--danger-subtle));color:hsl(var(--danger))}.recon-sev-high .recon-sev-dot{background:hsl(var(--danger))}.recon-sev-medium{background:hsl(var(--warning-subtle));color:hsl(var(--warning))}.recon-sev-medium .recon-sev-dot{background:hsl(var(--warning))}.recon-sev-low{background:hsl(var(--surface-muted));color:hsl(var(--muted-foreground))}.recon-sev-low .recon-sev-dot{background:hsl(var(--muted-foreground))}.recon-card-toggle{border:0;background:transparent;color:hsl(var(--muted-foreground));padding:4px;border-radius:4px;cursor:pointer}.recon-card-toggle:hover{background:hsl(var(--surface-muted));color:hsl(var(--foreground))}.recon-card-body{padding:0}.recon-table-wrap{overflow-x:auto}.recon-projects{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}.recon-col-proj{width:auto}.recon-col-num{width:110px}.recon-col-delta{width:80px}.recon-col-actions{width:96px}.recon-projects th.recon-th-proj{text-align:left}.recon-projects th.recon-th-actions,.recon-projects th.recon-th-delta,.recon-projects th.recon-th-num{text-align:center}.recon-projects th{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:hsl(var(--muted-foreground));padding:8px 12px;border-bottom:1px solid hsl(var(--border));white-space:nowrap}.recon-projects th .recon-srcA,.recon-projects th .recon-srcB{vertical-align:middle}.recon-num-unit{font-size:10px;color:hsl(var(--muted-foreground));margin-left:1px}.recon-row-cell .recon-num-unit{color:hsl(var(--foreground)/.6)}.recon-srcA,.recon-srcB{display:inline-block;width:14px;height:14px;border-radius:50%;font-size:9px;text-align:center;line-height:14px;margin-right:4px;font-weight:700}.recon-srcA{background:hsl(var(--primary)/.15);color:hsl(var(--primary))}.recon-srcB{background:hsl(263 70% 55%/.15);color:hsl(263 70% 55%)}.recon-projects td{padding:10px 12px;border-bottom:1px solid hsl(var(--border));vertical-align:middle}.recon-row-cell td{background:hsl(var(--surface-muted)/.3);font-weight:500}.recon-cell-title{font-size:12px;font-weight:600}.recon-cell-sub{font-size:10px;color:hsl(var(--muted-foreground));margin-top:2px}.recon-num,.recon-projects td.recon-num{font-variant-numeric:tabular-nums;text-align:center}.recon-pct{font-size:10px;color:hsl(var(--muted-foreground));margin-left:1px}.recon-row-proj td{font-size:12px}.recon-proj-row{display:flex;gap:8px}.recon-folder{color:hsl(var(--muted-foreground));margin-top:3px;flex-shrink:0}.recon-proj-name{line-height:1.3;word-break:break-word}.recon-proj-code{font-size:11px;color:hsl(var(--muted-foreground))}.recon-proj-meta{display:inline-flex;gap:6px;align-items:center;margin-top:3px;flex-wrap:wrap}.badge-type{display:inline-flex;font-size:10px;padding:1px 6px;border-radius:10px;background:hsl(var(--surface-muted));color:hsl(var(--muted-foreground));font-weight:500}.recon-delta-up b{color:hsl(var(--success))}.recon-delta-down b{color:hsl(var(--danger))}.recon-delta-flat b{color:hsl(var(--muted-foreground))}.recon-row-actions{white-space:nowrap;text-align:center;padding:6px 8px!important}.recon-row-actions>:not(:first-child){margin-left:4px}.recon-row-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:4px;border:1px solid hsl(var(--border));background:hsl(var(--card));cursor:pointer;font-size:11px;font-weight:600;padding:0}.recon-row-btn:hover:not(:disabled){transform:scale(1.05)}.recon-row-btn:disabled{opacity:.4;cursor:not-allowed}.recon-row-btn.A:hover:not(:disabled){border-color:hsl(var(--primary));background:hsl(var(--primary-subtle))}.recon-row-btn.B:hover:not(:disabled){border-color:hsl(263 70% 55%);background:hsl(263 70% 55%/.1)}.recon-row-btn-letter{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;font-size:9px;font-weight:700}.recon-row-btn.A .recon-row-btn-letter{background:hsl(var(--primary)/.15);color:hsl(var(--primary))}.recon-row-btn.B .recon-row-btn-letter{background:hsl(263 70% 55%/.15);color:hsl(263 70% 55%)}.recon-row-identical td{background:hsl(var(--surface-muted)/.3);padding:6px 14px}.recon-row-identical summary{font-size:11px;color:hsl(var(--muted-foreground));cursor:pointer;display:inline-flex;align-items:center;gap:5px}.recon-identical-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.recon-identical-pill{display:inline-flex;font-size:10px;padding:2px 7px;border-radius:10px;background:hsl(var(--surface-muted));color:hsl(var(--muted-foreground))}.recon-card-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-top:1px solid hsl(var(--border));background:hsl(var(--surface-muted)/.3);gap:12px;flex-wrap:wrap}.recon-impact{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:hsl(var(--foreground))}.recon-impact b{font-weight:700}.recon-impact-icon{justify-content:center;width:22px;height:22px;border-radius:50%;background:hsl(var(--surface-muted));color:hsl(var(--muted-foreground))}.recon-actions,.recon-impact-icon{display:inline-flex;align-items:center}.recon-actions{gap:8px}.recon-btn-A,.recon-btn-B{display:inline-flex;align-items:center;gap:6px}.recon-btn-letter{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:10px;font-weight:700}.recon-btn-A .recon-btn-letter{background:hsl(var(--primary-foreground)/.2);color:hsl(var(--primary-foreground))}.recon-btn-B .recon-btn-letter{background:hsl(263 70% 55%/.2);color:hsl(263 70% 55%)}.recon-table-card{border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--card));overflow-x:auto}.recon-bigtable{width:100%;border-collapse:collapse;font-size:12px}.recon-bigtable thead th{position:sticky;top:0;background:hsl(var(--surface-muted));font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:hsl(var(--muted-foreground));padding:8px 10px;text-align:left;border-bottom:1px solid hsl(var(--border));white-space:nowrap}.recon-bigtable td.num,.recon-bigtable th.num{text-align:right;font-variant-numeric:tabular-nums}.recon-bigtable td{padding:8px 10px;border-bottom:1px solid hsl(var(--border));vertical-align:middle}.recon-bigtable tr.sel td{background:hsl(var(--primary-subtle)/.5)}.recon-bigtable tr:hover td{background:hsl(var(--surface-muted)/.6)}.recon-tbl-name{display:inline-flex;align-items:center;gap:6px}.recon-tbl-detail{color:hsl(var(--muted-foreground));font-size:11px}.recon-tbl-actions{display:inline-flex;gap:3px}.recon-tbl-btn{width:22px;height:22px;border-radius:4px;border:1px solid hsl(var(--border));background:hsl(var(--card));cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.recon-tbl-btn:hover:not(:disabled){background:hsl(var(--surface-muted))}.recon-tbl-btn:disabled{opacity:.4;cursor:not-allowed}.recon-tbl-btn.A:hover:not(:disabled){border-color:hsl(var(--primary))}.recon-tbl-btn.B:hover:not(:disabled){border-color:hsl(263 70% 55%)}.recon-type-pill{display:inline-flex;padding:2px 7px;border-radius:8px;font-size:10px;font-weight:500}.recon-type-pill.surstaff{background:hsl(var(--warning-subtle));color:hsl(var(--warning))}.recon-type-pill.sous-staff{background:hsl(var(--info-subtle,var(--primary-subtle)));color:hsl(var(--primary))}.recon-type-pill.creation{background:hsl(155 70% 45%/.15);color:hsl(155 70% 35%)}.recon-bulk-bar{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);gap:16px;padding:10px 14px;border-radius:12px;background:hsl(var(--foreground));color:hsl(var(--background));box-shadow:0 8px 24px hsl(var(--foreground)/.25);z-index:50;font-size:12px}.recon-bulk-bar,.recon-bulk-count{display:inline-flex;align-items:center}.recon-bulk-count{gap:6px}.recon-bulk-num{font-size:14px;font-weight:700}.recon-bulk-actions{display:inline-flex;gap:8px}.recon-empty{text-align:center;padding:60px 24px;color:hsl(var(--muted-foreground))}.recon-empty-title{font-size:16px;font-weight:600;color:hsl(var(--foreground));margin-bottom:6px}.recon-empty-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:50%;background:hsl(var(--success)/.1);color:hsl(var(--success));justify-content:center}.recon-empty-icon,.recon-tjm-edit{display:inline-flex;align-items:center}.recon-tjm-edit{gap:2px;font-size:10px;font-weight:500;padding:1px 5px;background:hsl(var(--accent-subtle));color:hsl(var(--accent));border-radius:3px;cursor:text}.recon-tjm-edit:hover{background:hsl(var(--accent-subtle)/.7)}.recon-tjm-edit:focus-within{outline:1px solid hsl(var(--accent));outline-offset:0}.recon-tjm-input{width:32px;border:0;outline:none;background:transparent;font:inherit;color:inherit;font-weight:inherit;font-variant-numeric:tabular-nums;text-align:right;padding:0;-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.recon-tjm-input::-moz-placeholder{color:hsl(var(--accent)/.6)}.recon-tjm-input::placeholder{color:hsl(var(--accent)/.6)}.recon-tjm-input::-webkit-inner-spin-button,.recon-tjm-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.recon-tjm-edit>span{margin-left:0}.gantt-scroll{flex:1;overflow:auto;position:relative;background:hsl(var(--card))}.gantt-canvas{min-width:-moz-max-content;min-width:max-content;position:relative}.gantt-head{top:0;z-index:5;border-bottom:1px solid hsl(var(--border-strong))}.gantt-corner,.gantt-head{display:flex;position:sticky;background:hsl(var(--surface-muted))}.gantt-corner{left:0;z-index:6;width:var(--label-w);min-width:var(--label-w);padding:0 14px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:hsl(var(--muted-foreground))}.gantt-corner,.gantt-month-head{border-right:1px solid hsl(var(--border));align-items:center}.gantt-month-head{width:var(--col-w);min-width:var(--col-w);display:flex;flex-direction:column;justify-content:center;padding:6px 0;gap:1px}.gantt-month-head.cur{background:hsl(var(--primary-subtle));border-bottom:2px solid hsl(var(--primary))}.gantt-month-head .gm-label{font-size:12px;font-weight:600;color:hsl(var(--foreground))}.gantt-month-head.cur .gm-label{color:hsl(var(--primary))}.gantt-month-head .gm-year{font-size:10px;color:hsl(var(--muted-foreground))}.gantt-group{border-top:2px solid hsl(var(--border-strong));border-bottom:1px solid hsl(var(--border-strong));background:hsl(var(--muted))}.gantt-group,.gantt-row{display:flex;align-items:stretch}.gantt-row{border-bottom:1px solid hsl(var(--border))}.gantt-row:hover .gantt-track{background-color:hsl(var(--primary)/.035)}.gantt-label{position:sticky;left:0;z-index:2;width:var(--label-w);min-width:var(--label-w);background:hsl(var(--card));border-right:1px solid hsl(var(--border));display:flex;align-items:center;gap:8px;padding:0 12px}.gantt-group .gantt-label{background:hsl(var(--muted));padding:9px 12px}.gantt-group .gantt-c-name{font-size:13.5px;font-weight:700;letter-spacing:-.01em}.gantt-row:hover .gantt-label{background:hsl(var(--surface-muted)/.55)}.gantt-row .gantt-label{padding-left:22px}.gantt-c-name{font-size:13px;font-weight:600;color:hsl(var(--foreground));line-height:1.15;word-break:break-word}.gantt-c-meta{font-size:10.5px;color:hsl(var(--muted-foreground));line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.gantt-p-name{font-size:12.5px;font-weight:500;color:hsl(var(--foreground));word-break:break-word}.gantt-p-sub{font-size:10px;color:hsl(var(--muted-foreground));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-ent-badge{flex-shrink:0;font-size:9px;font-weight:700;letter-spacing:.03em;padding:2px 5px;border-radius:4px;color:#fff}.gantt-prov-tag{flex-shrink:0;font-size:8.5px;font-weight:700;text-transform:uppercase;padding:1px 4px;border-radius:3px;background:hsl(var(--warning)/.15);color:hsl(var(--warning))}.gantt-days-badge{margin-left:auto;flex-shrink:0;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;color:hsl(var(--muted-foreground));padding-left:6px}.gantt-track{position:relative;flex:1;background-image:linear-gradient(to right,hsl(var(--border)) 0 1px,transparent 1px);background-size:var(--col-w) 100%;background-position:-1px 0}.gantt-row .gantt-track{min-height:36px}.gantt-group .gantt-track{min-height:40px}.gantt-today{position:absolute;top:0;bottom:0;width:var(--col-w);background:hsl(var(--primary)/.05);border-left:1px solid hsl(var(--primary)/.35);border-right:1px solid hsl(var(--primary)/.35);pointer-events:none}.gantt-bar{position:absolute;top:8px;height:20px;display:flex;overflow:hidden;border-radius:5px;box-shadow:0 1px 2px rgba(0,0,0,.12);background:var(--bar-color)}.gantt-seg{width:var(--col-w);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1}.gantt-seg.over{box-shadow:inset 0 -3px 0 hsl(var(--danger))}.gantt-seg.editable{cursor:text}.gantt-seg.editable:hover{box-shadow:inset 0 0 0 1.5px hsl(var(--card)/.8)}.gantt-seg.editing{padding:0}.gantt-seg-input{width:100%;height:100%;border:0;border-radius:4px;text-align:center;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;background:hsl(var(--card));color:hsl(var(--foreground));box-shadow:inset 0 0 0 2px hsl(var(--primary));outline:none;padding:0 2px;-moz-appearance:textfield}.gantt-seg-input::-webkit-inner-spin-button,.gantt-seg-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.gantt-toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);z-index:1100;display:inline-flex;align-items:center;gap:10px;max-width:520px;padding:9px 12px;border-radius:8px;background:hsl(var(--danger));color:#fff;font-size:12.5px;box-shadow:0 8px 24px rgba(0,0,0,.22)}.gantt-toast button{border:0;background:rgba(255,255,255,.2);color:#fff;border-radius:4px;padding:2px;cursor:pointer;display:inline-flex}.gantt-toast button:hover{background:rgba(255,255,255,.32)}.gantt-summary{position:absolute;top:50%;height:6px;transform:translateY(-50%);border-radius:3px;background:var(--bar-color);opacity:.4}.gantt-summary:after,.gantt-summary:before{content:"";position:absolute;top:-2px;width:3px;height:10px;border-radius:1px;background:var(--bar-color)}.gantt-summary:before{left:0}.gantt-summary:after{right:0}.gantt-legend{display:flex;align-items:center;gap:16px;padding:8px 14px;border-top:1px solid hsl(var(--border));background:hsl(var(--card));font-size:11px;color:hsl(var(--muted-foreground));flex-wrap:wrap}.gantt-legend .lg-item{display:inline-flex;align-items:center;gap:6px}.gantt-legend .lg-swatch{width:24px;height:12px;border-radius:3px;display:inline-block}.gantt-legend .lg-summary{width:24px;height:6px;border-radius:3px;display:inline-block;background:hsl(var(--muted-foreground)/.4)}.gantt-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:60px 20px;color:hsl(var(--muted-foreground));font-size:13px}.gantt-track-eventable{cursor:copy}.gantt-track-eventable:hover{background-color:hsl(var(--primary)/.025)}.gantt-group .gantt-track-eventable{min-height:60px}.gantt-event{position:absolute;top:0;bottom:0;width:18px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;padding:0;border:0;background:transparent;cursor:pointer;z-index:3}.gantt-event:before{content:"";position:absolute;top:19px;bottom:calc(50% + 3px);width:0;border-left:1.5px dashed var(--ev-color);opacity:.5}.gantt-event-pin{position:relative;margin-top:2px;width:18px;height:18px;border-radius:5px;background:var(--ev-color);color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 1px 2px rgba(0,0,0,.22);transition:transform .1s ease}.gantt-event:hover .gantt-event-pin{transform:scale(1.14)}.gantt-event--below{justify-content:flex-end}.gantt-event--below .gantt-event-pin{margin-top:0;margin-bottom:2px}.gantt-event--below:before{top:calc(50% + 3px);bottom:19px}.gantt-pop-backdrop{position:fixed;inset:0;z-index:1000}.gantt-pop{position:fixed;z-index:1001;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.16),0 2px 8px rgba(0,0,0,.08);padding:12px;font-size:12px;color:hsl(var(--foreground))}.gantt-pop-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.gantt-pop-title{font-weight:600;font-size:12.5px}.gantt-pop-x{border:0;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;padding:2px;border-radius:4px;display:inline-flex}.gantt-pop-x:hover{background:hsl(var(--surface-muted))}.gantt-pop-sub{margin:2px 0 8px;color:hsl(var(--muted-foreground));font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-pop-field{display:flex;flex-direction:column;gap:4px;margin-bottom:9px}.gantt-pop-field>span{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:hsl(var(--muted-foreground))}.gantt-pop-input{height:30px;padding:0 8px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--background));color:hsl(var(--foreground));font-size:12px}.gantt-pop-input:focus{outline:none;border-color:hsl(var(--primary)/.6)}.gantt-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.gantt-type-opt{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 7px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--card));color:hsl(var(--muted-foreground));font-size:11px;font-weight:500;cursor:pointer;transition:border-color .1s,color .1s}.gantt-type-opt:hover{background:hsl(var(--surface-muted)/.6)}.gantt-type-opt.active{font-weight:600;background:hsl(var(--surface-muted)/.4)}.gantt-pop-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.gantt-pop-btn{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;border:1px solid transparent}.gantt-pop-btn:disabled{opacity:.55;cursor:not-allowed}.gantt-pop-btn.ghost{background:transparent;border-color:hsl(var(--border));color:hsl(var(--muted-foreground))}.gantt-pop-btn.ghost:hover{background:hsl(var(--surface-muted))}.gantt-pop-btn.primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground))}.gantt-pop-btn.primary:hover:not(:disabled){filter:brightness(1.05)}.gantt-pop-btn.danger{background:hsl(var(--danger)/.1);color:hsl(var(--danger));border-color:hsl(var(--danger)/.3);width:100%;justify-content:center}.gantt-pop-btn.danger:hover:not(:disabled){background:hsl(var(--danger)/.16)}