:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f6f7f9;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}#root{min-height:100vh}:root{--bg:#f4f7fb;--surface:#fff;--surface-soft:#f8fafc;--surface-strong:#eef4ff;--ink:#111827;--ink-soft:#334155;--muted:#64748b;--faint:#94a3b8;--line:#dfe7f1;--line-soft:#edf2f7;--primary:#2563eb;--primary-dark:#1d4ed8;--primary-soft:#dbeafe;--success:#16a34a;--success-soft:#dcfce7;--warning:#d97706;--warning-soft:#fef3c7;--danger:#be123c;--danger-soft:#ffe4e6;--purple:#7c3aed;--purple-soft:#ede9fe;--sidebar:#0f172a;--sidebar-raised:#172033;--sidebar-line:#94a3b838;--shadow-sm:0 1px 2px #0f172a0d;--shadow-md:0 10px 28px #0f172a14;--radius:8px}.app-shell{background:radial-gradient(circle at top left, #2563eb14, transparent 34rem), var(--bg);min-height:100vh;color:var(--ink);grid-template-columns:276px minmax(0,1fr);display:grid}.sidebar{background:linear-gradient(180deg, #111c31 0%, var(--sidebar) 58%);color:#f8fafc;border-right:1px solid #94a3b82e;flex-direction:column;gap:18px;height:100vh;padding:22px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:2px 2px 12px;display:flex}.brand-mark{border-radius:var(--radius);color:#fff;background:linear-gradient(135deg,#2dd4bf,#3b82f6 78%);place-items:center;width:40px;height:40px;font-weight:900;display:grid;box-shadow:0 10px 24px #2563eb47}.brand strong,.brand span{display:block}.brand strong{font-size:15px;line-height:1.3}.brand span{color:#a8b3c7;margin-top:2px;font-size:12px}.nav-stack{gap:6px;display:grid}.nav-stack button,.month-switcher button,.segmented button,.person-load-list button,.directory-group button,.person-lane-head{font:inherit;cursor:pointer;border:0}.nav-stack button{border-radius:var(--radius);color:#cbd5e1;text-align:left;cursor:grab;background:0 0;align-items:center;gap:10px;height:42px;padding:0 12px;transition:background .18s,color .18s;display:flex;position:relative}.nav-stack button:active{cursor:grabbing}.nav-stack button span{flex:1;min-width:0}.nav-stack button:hover{color:#fff;background:#94a3b81f}.nav-stack button.active{background:var(--sidebar-raised);color:#fff;box-shadow:inset 3px 0 #60a5fa}.nav-stack button.dragging{opacity:.54}.nav-stack button.drop-target{outline-offset:2px;background:#60a5fa29;outline:1px dashed #60a5fadb}.drag-handle{color:#94a3b8;opacity:0;flex:none;margin-left:auto;transition:opacity .16s,color .16s}.nav-stack button:hover .drag-handle,.nav-stack button:focus-visible .drag-handle,.nav-stack button.dragging .drag-handle,.nav-stack button.drop-target .drag-handle{opacity:1}.nav-stack button.active .drag-handle{color:#bfdbfe}.filter-card,.source-card{border:1px solid var(--sidebar-line);border-radius:var(--radius);background:#0f172a94;padding:14px}.filter-title{color:#dbeafe;align-items:center;gap:7px;margin-bottom:12px;font-size:13px;font-weight:800;display:flex}.search-box,.select-field{gap:6px;margin-top:10px;display:grid}.search-box{position:relative}.search-box svg{color:var(--faint);pointer-events:none;position:absolute;top:11px;left:10px}.search-box input,.select-field select{border-radius:var(--radius);color:#f8fafc;background:#0f172ab8;border:1px solid #94a3b847;outline:none;width:100%;height:38px;font-size:13px}.search-box input{padding:0 10px 0 32px}.select-field span{color:#a8b3c7;font-size:12px}.select-field select{padding:0 9px}.source-card{margin-top:auto}.source-card span,.source-card p{color:#a8b3c7;font-size:12px}.source-card strong{color:#fff;margin:8px 0 6px;font-size:15px;display:block}.source-card p{overflow-wrap:anywhere;margin:0;line-height:1.45}.source-card .sync-line{border-top:1px solid #94a3b82e;margin-top:8px;padding-top:8px}.sync-line.ok{color:#86efac}.sync-line.error{color:#fda4af}.sync-line.syncing{color:#bfdbfe}.workspace{min-width:0;padding:22px 24px 28px}.topbar{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:16px;display:flex}.topbar>div:first-child{min-width:0}.page-label{color:var(--muted);margin:0 0 6px;font-size:13px;font-weight:800}.topbar h1{color:#0f172a;letter-spacing:0;margin:0;font-size:30px;line-height:1.15}.sync-badge{border-radius:var(--radius);width:fit-content;max-width:100%;color:var(--primary-dark);background:#eff6ff;border:1px solid #bfdbfe;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;padding:6px 10px;font-size:12px;font-weight:800;display:flex}.sync-badge span{overflow-wrap:anywhere}.sync-badge.ok{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.sync-badge.error{color:var(--danger);background:#fff1f2;border-color:#fecdd3}.sync-badge.syncing{color:var(--primary-dark)}.top-actions,.controls-row,.month-switcher,.segmented{align-items:center;gap:9px;display:flex}.top-actions{flex-wrap:wrap;justify-content:flex-end}.upload-button,.refresh-button{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);height:38px;color:var(--ink);cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:0 13px;font-size:13px;font-weight:800;transition:transform .16s,border-color .16s,box-shadow .16s;display:inline-flex}.upload-button:hover,.refresh-button:hover{border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 8px 18px #0f172a14}.refresh-button{color:var(--primary-dark);border-color:#bfdbfe}.refresh-button.ok{color:#166534;border-color:#bbf7d0}.refresh-button.error{color:var(--danger);border-color:#fecdd3}.refresh-button.syncing svg{animation:.9s linear infinite spin}.refresh-button:disabled{cursor:wait;opacity:.74;transform:none}.upload-button input{display:none}.upload-button.loading{opacity:.65;pointer-events:none}@keyframes spin{to{transform:rotate(360deg)}}.controls-row{justify-content:space-between;margin-bottom:14px}.month-switcher,.segmented{border-radius:var(--radius);border:1px solid var(--line);min-height:40px;box-shadow:var(--shadow-sm);background:#ffffffe0;padding:4px}.month-switcher button,.segmented button{height:30px;color:var(--ink-soft);background:0 0;border-radius:6px;place-items:center;display:grid}.month-switcher button:hover,.segmented button:hover{background:var(--surface-soft)}.month-switcher button{width:30px}.month-switcher strong{min-width:88px;color:var(--ink);text-align:center;white-space:nowrap;font-size:13px}.segmented button{padding:0 14px;font-size:13px;font-weight:800}.segmented button.active{background:var(--ink);color:#fff;box-shadow:0 6px 16px #0f172a29}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.metric-card{border-radius:var(--radius);border:1px solid var(--line);min-height:106px;box-shadow:var(--shadow-sm);background:linear-gradient(#fff 0%,#fbfdff 100%);gap:13px;padding:16px;display:flex}.metric-icon{border-radius:var(--radius);width:36px;height:36px;color:var(--primary);background:var(--primary-soft);flex:none;place-items:center;display:grid}.metric-card.warn .metric-icon{color:#b45309;background:var(--warning-soft)}.metric-card.danger .metric-icon{color:var(--danger);background:var(--danger-soft)}.metric-card span{color:var(--muted);font-size:12px;font-weight:800}.metric-card strong{color:#0f172a;margin:3px 0 5px;font-size:29px;line-height:1.08;display:block}.metric-card p{color:var(--muted);margin:0;font-size:12px;line-height:1.35}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md);overflow:hidden}.panel-heading{border-bottom:1px solid var(--line-soft);background:linear-gradient(#fff 0%,#fbfdff 100%);justify-content:space-between;align-items:flex-start;gap:14px;padding:16px 18px;display:flex}.panel-heading span{color:var(--primary);font-size:12px;font-weight:900}.panel-heading h2{color:#0f172a;letter-spacing:0;margin:4px 0 0;font-size:20px;line-height:1.2}.panel-heading p{max-width:320px;color:var(--muted);text-align:right;margin:0;font-size:12px;line-height:1.55}.panel-heading.calendar-heading{align-items:flex-start}.panel-heading.calendar-heading p{max-width:560px}.calendar-legend{flex-wrap:wrap;gap:8px 12px;margin-top:10px;display:flex}.calendar-legend span{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;font-weight:800;display:inline-flex}.legend-dot{border-radius:999px;width:8px;height:8px}.legend-dot.planned{background:var(--primary)}.legend-dot.actual{background:var(--success)}.calendar-grid{border-bottom:1px solid var(--line-soft);grid-template-columns:repeat(7,minmax(112px,1fr));display:grid;overflow-x:auto}.calendar-grid.week{grid-template-columns:repeat(7,minmax(150px,1fr))}.day-cell{border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:#fff;min-height:128px;padding:10px}.day-cell:nth-child(7n){border-right:0}.day-cell.muted{color:var(--faint);background:#f8fafc}.day-cell.has-items{background:#fbfdff}.day-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.day-top span{color:var(--ink);font-size:13px;font-weight:900}.day-cell.muted .day-top span{color:var(--faint)}.day-top small{color:var(--faint);font-size:11px}.day-items,.workload-tasks,.modal-fields{display:grid}.day-items{gap:6px}.day-items em,.workload-tasks em,.undated-strip em{color:var(--muted);font-size:12px;font-style:normal}.demand-chip{border:1px solid #0000;border-left:3px solid var(--primary);border-radius:var(--radius);background:var(--surface-soft);width:100%;min-width:0;color:inherit;text-align:left;cursor:pointer;font:inherit;gap:5px;padding:8px 9px;transition:background .16s,border-color .16s,transform .16s;display:grid}.demand-chip.compact{padding:6px 7px}.demand-chip.launch-planned{background:#eff6ff;border-color:#bfdbfe;border-left-width:3px}.demand-chip.launch-actual{background:#f0fdf4;border-color:#bbf7d0;border-left-width:3px}.demand-chip:hover{background:#eef6ff;border-color:#bfdbfe;transform:translateY(-1px)}.demand-chip.launch-actual:hover{background:#dcfce7;border-color:#86efac}.demand-chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.launch-badge{border-radius:999px;justify-self:start;padding:2px 7px;font-size:11px;font-weight:900;line-height:1.2}.launch-planned .launch-badge{background:var(--primary-soft);color:var(--primary-dark)}.launch-actual .launch-badge{background:var(--success-soft);color:#15803d}.demand-chip b,.demand-chip small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.demand-chip b{color:var(--ink);font-size:12px;line-height:1.25}.demand-chip small{color:var(--muted);font-size:11px}.status-pill{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;width:fit-content;max-width:190px;padding:3px 8px;font-size:11px;font-weight:900;line-height:1.2;display:inline-flex}.status-pill.done{color:#166534;background:var(--success-soft)}.status-pill.active{color:var(--primary-dark);background:var(--primary-soft)}.status-pill.testing{color:#92400e;background:var(--warning-soft)}.status-pill.planned{color:#6d28d9;background:var(--purple-soft)}.status-pill.dropped,.status-pill.unknown{color:#475569;background:#e2e8f0}.undated-strip{background:#fbfdff;padding:14px 18px 18px}.undated-strip-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.undated-strip-head span{color:var(--muted);font-size:12px;font-weight:800}.undated-strip-head span:only-child{margin-left:auto}.undated-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.undated-group{border:1px solid var(--line-soft);border-radius:var(--radius);background:#fff;flex-direction:column;min-width:0;max-height:360px;display:flex;overflow:hidden}.undated-group-title{border-bottom:1px solid var(--line-soft);background:var(--surface-soft);justify-content:space-between;align-items:center;gap:10px;min-height:38px;padding:9px 12px;display:flex}.undated-group-title span{color:#6d28d9;font-size:13px;font-weight:900}.undated-group-title b{background:var(--purple-soft);color:#6d28d9;border-radius:999px;place-items:center;min-width:24px;height:22px;font-size:12px;display:grid}.undated-group-list{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-height:0;max-height:306px;padding:10px;display:grid;overflow-y:auto}.undated-group-list::-webkit-scrollbar{width:8px}.undated-group-list::-webkit-scrollbar-track{background:0 0}.undated-group-list::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.empty-hint{color:var(--muted);margin:0;font-size:13px}.modal-backdrop{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a75;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.access-backdrop{z-index:50}.access-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;gap:12px;width:min(420px,100%);padding:20px;display:grid;box-shadow:0 24px 70px #0f172a3d}.access-card>span{color:var(--primary);font-size:12px;font-weight:900}.access-card h2{color:#0f172a;margin:0;font-size:20px;line-height:1.25}.access-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.access-card .access-error{color:var(--danger);font-weight:800}.access-card input{border:1px solid var(--line);border-radius:var(--radius);height:40px;color:var(--ink);font:inherit;outline:none;padding:0 12px;font-size:13px}.access-card input:focus{border-color:#bfdbfe;box-shadow:0 0 0 3px #2563eb1f}.access-card button{border-radius:var(--radius);background:var(--ink);color:#fff;cursor:pointer;height:40px;font:inherit;border:0;font-size:13px;font-weight:900}.access-card button:disabled{cursor:not-allowed;opacity:.62}.demand-modal{border-radius:var(--radius);border:1px solid var(--line);background:#fff;width:min(580px,100%);padding:18px;box-shadow:0 24px 70px #0f172a3d}.modal-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.modal-top span{color:var(--primary);font-size:12px;font-weight:900}.modal-top button{border-radius:var(--radius);width:32px;height:32px;color:var(--muted);cursor:pointer;background:#f1f5f9;border:0;place-items:center;display:grid}.demand-modal h2{color:#0f172a;letter-spacing:0;margin:0 0 16px;font-size:20px;line-height:1.35}.modal-fields{gap:12px}.detail-field{border-radius:var(--radius);background:var(--surface-soft);grid-template-columns:108px minmax(0,1fr);align-items:start;gap:12px;padding:12px;display:grid}.detail-field>span{color:var(--muted);font-size:12px;font-weight:900}.detail-field>div{color:#0f172a;overflow-wrap:anywhere;min-height:18px;font-size:13px;line-height:1.5}.detail-field a{color:var(--primary-dark);font-weight:800;text-decoration:none}.detail-field a:hover{text-decoration:underline}.chart-frame{padding:12px 12px 4px}.workload-body{grid-template-columns:minmax(260px,.26fr) minmax(0,1fr);display:grid}.workload-chart{border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:#fbfdff}.workload-heading{gap:16px}.workload-heading-meta{justify-content:flex-end;align-items:center;gap:12px;margin-left:auto;display:flex}.workload-heading-meta p{margin:0}.workload-heading-meta button{border:1px solid var(--line);border-radius:var(--radius);height:34px;color:var(--ink-soft);font:inherit;cursor:pointer;background:#fff;padding:0 12px;font-size:12px;font-weight:900;transition:border-color .16s,color .16s,background .16s}.workload-heading-meta button:hover:not(:disabled){color:var(--primary-dark);background:#eff6ff;border-color:#bfdbfe}.workload-heading-meta button:disabled{cursor:not-allowed;opacity:.48}.workload-list{background:#fff;max-height:calc(100vh - 286px);display:grid;overflow:auto}.workload-row{border-bottom:1px solid var(--line-soft);background:#fff;grid-template-columns:190px minmax(0,1fr) 64px;align-items:start;gap:16px;padding:17px 18px;display:grid}.workload-row:hover{background:#fbfdff}.workload-row.dragging{opacity:.58}.workload-row.drop-target{background:#f8fbff;box-shadow:inset 3px 0 #60a5fa}.workload-person{grid-template-columns:20px 34px 1fr;align-items:center;gap:8px;min-width:0;display:grid}.workload-drag-handle{color:#94a3b8;cursor:grab;opacity:.45;background:0 0;border:0;border-radius:6px;place-items:center;width:20px;height:32px;padding:0;transition:opacity .16s,background .16s,color .16s;display:grid}.workload-drag-handle:hover,.workload-row:hover .workload-drag-handle,.workload-drag-handle:focus-visible{color:var(--primary-dark);opacity:1;background:#edf2f7}.workload-drag-handle:active{cursor:grabbing}.avatar{color:#0369a1;background:#e0f2fe;border-radius:50%;place-items:center;width:32px;height:32px;font-size:12px;font-weight:900;display:grid}.avatar.large{width:52px;height:52px;font-size:15px}.workload-person strong,.workload-person small{align-items:center;display:flex}.workload-person strong{color:#0f172a;font-size:14px}.workload-person small{color:var(--muted);gap:5px;margin-top:4px;font-size:12px}.workload-tasks{gap:9px;min-width:0}.workload-task-group{grid-template-columns:136px minmax(0,1fr);align-self:start;align-items:start;gap:10px;min-width:0;display:grid}.workload-status-head{color:#64748b;background:#f1f5f9;border-radius:999px;justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;padding:5px 8px;font-size:12px;font-weight:900;line-height:1;display:flex}.workload-status-head span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.workload-status-head b{min-width:20px;height:20px;color:inherit;background:#ffffffb8;border-radius:999px;place-items:center;font-size:11px;display:grid}.workload-status-head.planned{color:#7c3aed;background:#f5f3ff}.workload-status-head.active{color:#2563eb;background:#eff6ff}.workload-status-head.testing{color:#d97706;background:#fff7ed}.workload-status-head.done{color:#16a34a;background:#f0fdf4}.workload-status-head.dropped{color:#64748b;background:#f1f5f9}.workload-status-items{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.workload-status-items .demand-chip{width:auto;min-width:0;max-width:252px;min-height:30px;box-shadow:none;background:#f8fafc;border-color:#e8eef7;border-left-width:3px;border-radius:7px;flex:156px;padding:6px 9px}.workload-status-items .demand-chip:hover{background:#eff6ff;border-color:#bfdbfe}.workload-status-items .demand-chip b{max-width:226px;font-size:12px}.workload-counts{text-align:center;place-self:center end}.workload-counts strong,.workload-counts span,.workload-counts small{display:block}.workload-counts strong{color:#0f172a;font-size:24px;line-height:1}.workload-counts strong.danger{color:var(--danger)}.workload-counts span{color:var(--muted);margin-top:4px;font-size:12px}.workload-counts small{color:var(--faint);margin-top:5px;font-size:11px}.throughput-panel{overflow:hidden}.throughput-heading .week-range{color:var(--ink-soft);margin-top:8px;font-size:13px;font-weight:900}.throughput-summary-grid{border-bottom:1px solid var(--line-soft);background:#fbfdff;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px;display:grid}.throughput-metric{border:1px solid var(--line);border-radius:var(--radius);min-height:116px;box-shadow:var(--shadow-sm);background:#fff;gap:6px;padding:14px;display:grid}.throughput-metric>div{border-radius:var(--radius);width:34px;height:34px;color:var(--purple);background:var(--purple-soft);place-items:center;display:grid}.throughput-metric.planned>div{color:var(--primary);background:var(--primary-soft)}.throughput-metric.done>div{color:var(--success);background:var(--success-soft)}.throughput-metric.risk>div{color:var(--danger);background:var(--danger-soft)}.throughput-metric span{color:var(--muted);font-size:12px;font-weight:900}.throughput-metric strong{color:#0f172a;font-size:28px;line-height:1}.throughput-metric p{color:var(--muted);margin:0;font-size:12px;line-height:1.35}.throughput-layout{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);display:grid}.throughput-chart-frame,.ai-analysis-card,.throughput-list-card,.throughput-status-strip{background:#fff;min-width:0;padding:14px}.throughput-chart-frame{border-right:1px solid var(--line-soft)}.section-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-title span{color:#0f172a;align-items:center;gap:7px;font-size:13px;font-weight:900;display:inline-flex}.section-title small{color:var(--muted);font-size:12px;font-weight:800}.insight-list{gap:9px;display:grid}.insight-item{border:1px solid var(--line-soft);border-left:3px solid var(--primary);border-radius:var(--radius);background:var(--surface-soft);padding:10px 11px}.insight-item.good{border-left-color:var(--success);background:#f0fdf4}.insight-item.warn{border-left-color:var(--warning);background:#fffbeb}.insight-item.danger{border-left-color:var(--danger);background:#fff1f2}.insight-item strong{color:#0f172a;font-size:13px;display:block}.insight-item p{color:var(--ink-soft);margin:5px 0 0;font-size:12px;line-height:1.5}.throughput-detail-grid{border-bottom:1px solid var(--line-soft);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.throughput-list-card{border-right:1px solid var(--line-soft)}.throughput-list-card:nth-child(3n){border-right:0}.throughput-demand-list{gap:8px;display:grid}.throughput-demand-list em{color:var(--muted);font-size:12px;font-style:normal}.throughput-demand-row{border:1px solid var(--line-soft);border-radius:var(--radius);width:100%;min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:#fbfdff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;display:grid}.throughput-demand-row:hover{background:#eff6ff;border-color:#bfdbfe}.throughput-demand-row>span{gap:5px;min-width:0;display:grid}.throughput-demand-row b,.throughput-demand-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.throughput-demand-row b{color:#0f172a;font-size:13px}.throughput-demand-row small{color:var(--muted);font-size:11px}.throughput-status-strip{background:#fbfdff}.status-bars{gap:9px;display:grid}.status-bar-row{grid-template-columns:132px minmax(0,1fr) 34px;align-items:center;gap:10px;display:grid}.status-bar-row span{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;overflow:hidden}.status-bar-row div{background:#e2e8f0;border-radius:999px;height:8px;overflow:hidden}.status-bar-row i{border-radius:inherit;background:linear-gradient(90deg, var(--primary), #14b8a6);height:100%;display:block}.status-bar-row b{color:#0f172a;text-align:right;font-size:12px}.kanban-panel{overflow:hidden}.kanban-toolbar{border-bottom:1px solid var(--line-soft);background:#fbfdff;padding:12px 14px}.kanban-toolbar-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.kanban-toolbar-head>span{color:var(--ink-soft);align-items:center;gap:7px;font-size:13px;font-weight:900;display:inline-flex}.kanban-column-actions{align-items:center;gap:8px;display:flex}.kanban-column-actions button{border:1px solid var(--line);height:30px;color:var(--ink-soft);cursor:pointer;font:inherit;background:#fff;border-radius:6px;padding:0 10px;font-size:12px;font-weight:900}.kanban-column-actions button:hover{color:var(--primary-dark);border-color:#bfdbfe}.kanban-column-filters{flex-wrap:wrap;gap:8px;display:flex}.kanban-filter-option{border:1px solid var(--line);min-height:32px;color:var(--muted);cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:7px;padding:0 8px;font-size:12px;font-weight:900;display:inline-flex}.kanban-filter-option.checked{color:var(--primary-dark);background:#eff6ff;border-color:#bfdbfe}.kanban-filter-option input{width:14px;height:14px;accent-color:var(--primary);margin:0}.kanban-filter-option span{white-space:nowrap}.kanban-filter-option b{color:#475569;background:#e2e8f0;border-radius:999px;place-items:center;min-width:20px;height:20px;font-size:11px;display:grid}.kanban-filter-option.checked b{background:var(--primary-soft);color:var(--primary-dark)}.kanban-board{background:#fbfdff;grid-auto-columns:minmax(268px,304px);grid-auto-flow:column;gap:12px;min-height:420px;max-height:calc(100vh - 292px);padding:14px;display:grid;overflow:auto}.kanban-column{border:1px solid var(--line);border-top:3px solid var(--faint);border-radius:var(--radius);background:var(--surface-soft);flex-direction:column;min-width:0;display:flex;overflow:hidden}.kanban-column.planned{border-top-color:var(--purple)}.kanban-column.active{border-top-color:var(--primary)}.kanban-column.testing{border-top-color:var(--warning)}.kanban-column.done{border-top-color:var(--success)}.kanban-column.dropped{border-top-color:var(--faint)}.kanban-column-head{border-bottom:1px solid var(--line-soft);background:#fff;justify-content:space-between;align-items:center;gap:10px;min-height:44px;padding:11px 12px;display:flex}.kanban-column-head span{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:900;overflow:hidden}.kanban-column-head b{color:#334155;background:#e2e8f0;border-radius:999px;place-items:center;min-width:26px;height:22px;font-size:12px;display:grid}.kanban-column-body{align-content:start;gap:9px;min-height:0;padding:10px;display:grid;overflow:auto}.kanban-card{border:1px solid var(--line-soft);border-radius:var(--radius);width:100%;min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;box-shadow:var(--shadow-sm);background:#fff;gap:9px;padding:10px;transition:transform .16s,border-color .16s,box-shadow .16s;display:grid}.kanban-card:hover{border-color:#bfdbfe;transform:translateY(-1px);box-shadow:0 10px 20px #0f172a14}.kanban-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.kanban-card-top,.kanban-card-meta,.kanban-card-resources{align-items:center;display:flex}.kanban-card-top{justify-content:space-between;gap:8px}.kanban-card-top>span:last-child{color:var(--muted);flex:none;font-size:11px;font-weight:900}.kanban-card strong{color:#0f172a;font-size:13px;line-height:1.35}.kanban-card-meta{color:var(--muted);justify-content:space-between;gap:8px;font-size:11px;line-height:1.35}.kanban-card-meta span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.kanban-card-meta span:last-child{flex:none}.kanban-card-resources{flex-wrap:wrap;gap:5px}.kanban-card-resources span{color:var(--primary-dark);background:#eef6ff;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:900}.demand-table-panel{overflow:hidden}.table-wrap{max-height:calc(100vh - 260px);overflow:auto}table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1240px}th,td{border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top;padding:12px 14px;font-size:13px}th{z-index:1;color:#475569;white-space:nowrap;background:#f8fafc;font-size:12px;font-weight:900;position:sticky;top:0}th:first-child,td:first-child{width:320px}th:nth-child(2),td:nth-child(2){width:138px}th:nth-child(3),td:nth-child(3){width:72px}th:nth-child(4),td:nth-child(4){width:150px}th:nth-child(5),td:nth-child(5){width:118px}th:nth-child(6),td:nth-child(6){width:170px}th:nth-child(7),td:nth-child(7){width:272px}tbody tr:hover{background:#fbfdff}td strong,td span,td small{display:block}td strong{color:#0f172a;max-width:320px;font-size:13px}td small{color:var(--muted);margin-top:4px;font-size:11px}td:nth-child(5) span,td:nth-child(5) small{white-space:nowrap}.resource-tags{flex-wrap:wrap;gap:5px;max-width:260px;display:flex}.resource-tags span{color:var(--primary-dark);background:#eef6ff;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:900}.progress-cell{color:#475569;max-width:360px;line-height:1.5}.role-dot{border-radius:50%;width:8px;height:8px;display:inline-block}@media (width<=1180px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.metric-grid,.workload-body{grid-template-columns:1fr 1fr}}@media (width<=760px){.workspace{padding:16px}.topbar,.controls-row,.panel-heading{flex-direction:column;align-items:stretch}.top-actions,.metric-grid,.workload-body,.throughput-summary-grid,.throughput-layout,.throughput-detail-grid,.undated-groups,.undated-group-list{grid-template-columns:1fr;display:grid}.throughput-chart-frame,.throughput-list-card{border-right:0;border-bottom:1px solid var(--line-soft)}.throughput-demand-row{grid-template-columns:1fr}.status-bar-row{grid-template-columns:104px minmax(0,1fr) 28px}.kanban-board{grid-auto-columns:minmax(260px,84vw);max-height:none}.panel-heading p{text-align:left;max-width:none}.kanban-toolbar-head{flex-direction:column;align-items:stretch}.kanban-column-actions{grid-template-columns:1fr 1fr;display:grid}.calendar-grid{grid-template-columns:repeat(7,minmax(128px,1fr))}.workload-row{grid-template-columns:1fr;align-items:start}.workload-counts{text-align:left;justify-self:start}}
