:root{--app-bg:#f4f6f9;--line:#e5e9f0;--text-strong:#162033;--text:#334155;--text-soft:#475569;--text-muted:#7a8699;--shadow-sm:0 1px 2px #0f172a0f;color:var(--text);background:var(--app-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;font-weight:400;line-height:1.45}*{box-sizing:border-box}html{background:var(--app-bg)}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit;letter-spacing:0}button{-webkit-tap-highlight-color:transparent}#root{min-height:100svh}::selection{color:#fff;background:#2563eb}.app-shell{min-height:100svh;color:var(--text-strong);background:var(--app-bg);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:72px 236px minmax(0,1fr);display:grid}.global-rail{border-right:1px solid var(--line);z-index:10;background:#f7f8fb;flex-direction:column;gap:8px;height:100svh;padding:12px 8px;display:flex;position:sticky;top:0}.brand-mark{color:#fff;background:#1d4ed8;border-radius:8px;place-items:center;width:40px;height:40px;margin:0 auto 6px;font-size:18px;font-weight:800;display:grid}.rail-item{min-height:52px;color:var(--text-soft);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;gap:3px;font-size:11px;font-weight:600;display:grid}.rail-item svg{color:#5b6472}.rail-item.active,.rail-item:hover{color:#1d4ed8;background:#eaf1ff}.rail-spacer{flex:1}.space-sidebar{border-right:1px solid var(--line);z-index:9;background:#fff;height:100svh;padding:16px 12px;position:sticky;top:0;overflow-y:auto}.space-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;margin-bottom:14px;padding:8px 8px 14px;display:flex}.space-title strong{margin-top:2px;font-size:16px;display:block}.eyeless-label,.nav-section-title{color:var(--text-muted);font-size:12px;font-weight:700;display:block}.module-list,.pinned-space{gap:4px;display:grid}.pinned-space{margin-top:24px}.nav-section-title{padding:0 8px 5px}.module-item,.pin-row{width:100%;min-height:36px;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;padding:0 10px;font-weight:650;display:flex}.module-item:hover,.pin-row:hover{background:#f3f6fb}.module-item.active{color:#1d4ed8;background:#eaf1ff}.pin-row{color:var(--text-soft);font-size:13px}.main-zone{flex-direction:column;min-width:0;display:flex}.topbar{z-index:8;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffeb;grid-template-columns:auto minmax(220px,520px) auto;align-items:center;gap:14px;height:58px;padding:0 18px;display:grid;position:sticky;top:0}.topbar-title{line-height:1.1;display:grid}.topbar-title span{color:var(--text-muted);font-size:12px;font-weight:700}.topbar-title strong{font-size:18px}.search-box{border:1px solid var(--line);background:#f8fafc;border-radius:8px;align-items:center;gap:8px;height:36px;padding:0 12px;display:flex}.search-box input{width:100%;min-width:0;color:var(--text-strong);font:inherit;background:0 0;border:0;outline:none;font-size:14px}.topbar-actions{justify-self:end;align-items:center;gap:8px;display:flex}.env-badge{color:#64748b;white-space:nowrap;background:#f1f5f9;border-radius:999px;align-items:center;height:28px;padding:0 9px;font-size:12px;font-weight:750;display:inline-flex}.env-badge.feishu{color:#047857;background:#ecfdf5}.env-badge.warning{color:#c2410c;background:#fff7ed}.feishu-user-pill{color:#065f46;white-space:nowrap;background:#ecfdf5;border-radius:999px;align-items:center;gap:7px;min-width:0;max-width:170px;height:30px;padding:0 9px 0 4px;font-size:12px;font-weight:780;display:inline-flex}.feishu-user-pill>span:last-child{text-overflow:ellipsis;min-width:0;overflow:hidden}.feishu-user-avatar{color:#047857;background:#d1fae5;border-radius:999px;flex:none;place-items:center;width:24px;height:24px;font-size:10px;font-weight:850;display:grid;position:relative;overflow:hidden}.feishu-user-avatar img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.workspace{flex:1;grid-template-columns:minmax(0,1fr) 336px;gap:0;min-width:0;display:grid}.content-panel{min-width:0;padding:18px}.view-stack{gap:16px;min-width:0;display:grid}.view-header{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.view-header.compact{align-items:end}h1,h2,h3,p{margin:0}h1{font-size:24px;font-weight:760;line-height:1.18}h2{font-size:16px;font-weight:750;line-height:1.25}h3{font-size:14px;font-weight:750;line-height:1.25}.view-tabs,.segmented{border:1px solid var(--line);background:#f8fafc;border-radius:8px;align-items:center;gap:2px;min-width:0;max-width:100%;min-height:36px;padding:3px;display:inline-flex;overflow-x:auto}.view-tabs button,.segmented button{color:var(--text-soft);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;flex:none;min-height:28px;padding:0 10px;font-weight:700}.view-tabs button.active,.segmented button.active{color:#1d4ed8;background:#fff;box-shadow:0 1px 3px #0f172a14}.primary-button,.secondary-button,.icon-button{border:1px solid var(--line);min-height:34px;color:var(--text-strong);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 11px;font-weight:750;display:inline-flex}.primary-button{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.secondary-button:hover,.icon-button:hover{background:#f8fafc}.icon-button{width:34px;padding:0}.toolbar-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.saved-views{align-items:center;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.saved-views span{border:1px solid var(--line);color:var(--text-soft);background:#fff;border-radius:999px;flex:none;padding:5px 10px;font-size:12px;font-weight:750}.metric-grid{grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;display:grid}.metric-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:5px;min-width:0;padding:14px;display:grid}.metric-card span,.metric-card small{color:var(--text-muted);font-size:12px;font-weight:700}.metric-card strong{color:var(--text-strong);font-size:24px;line-height:1.15}.metric-card.compact{padding:12px}.metric-card.compact strong{font-size:20px}.two-column,.analytics-grid{grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:14px;display:grid}.analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-grid .section-block:last-child{grid-column:1/-1}.section-block{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:14px}.section-heading{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.section-heading span{color:var(--text-muted);font-size:12px;font-weight:750}.project-strip,.task-list{gap:9px;display:grid}.project-mini-card{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fbfdff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto 96px;align-items:center;gap:10px;width:100%;padding:10px;display:grid}.project-mini-card strong,.task-line strong,.task-card strong{color:var(--text-strong);font-size:14px;line-height:1.35;display:block}.project-mini-card span,.task-line span,.task-card span{color:var(--text-muted);margin-top:2px;font-size:12px;font-weight:650;display:block}.task-line{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:9px;display:grid}.compact-list .task-line{grid-template-columns:auto minmax(0,1fr)}.status-chip{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.tone-blue{color:#1d4ed8;background:#eaf1ff}.tone-green{color:#047857;background:#ecfdf5}.tone-orange{color:#c2410c;background:#fff7ed}.tone-purple{color:#6d28d9;background:#f5f3ff}.tone-gray{color:#475569;background:#f1f5f9}.progress-track{background:#e2e8f0;border-radius:999px;min-width:72px;height:7px;display:block;overflow:hidden}.progress-track i{border-radius:inherit;background:linear-gradient(90deg,#2563eb,#10b981);height:100%;display:block}.gantt-shell{border:1px solid var(--line);background:#fff;border-radius:8px;overflow:auto}.gantt-header,.gantt-row{grid-template-columns:220px minmax(0,1fr);min-width:1040px;display:grid}.gantt-header{z-index:2;border-bottom:1px solid var(--line);background:#f8fafc;position:sticky;top:0}.people-heading{color:var(--text-muted);border-right:1px solid var(--line);padding:11px 14px;font-size:12px;font-weight:800}.timeline-head,.timeline-row{grid-template-columns:repeat(42,28px);display:grid}.timeline-head span{min-height:38px;color:var(--text-muted);border-right:1px solid #eef2f7;place-items:center;font-size:11px;font-weight:750;display:grid}.gantt-row{border-bottom:1px solid var(--line)}.person-cell{border-right:1px solid var(--line);align-content:center;gap:7px;min-height:92px;padding:12px 14px;display:grid}.person-title{align-items:center;gap:9px;min-width:0;display:flex}.person-title div{gap:3px;min-width:0;display:grid}.person-title strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.person-title div span,.person-metrics b{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;overflow:hidden}.person-metrics{flex-wrap:wrap;gap:8px;display:flex}.timeline-row{background-image:repeating-linear-gradient(90deg,#0000,#0000 27px,#eef2f7 27px 28px);min-height:92px;position:relative}.schedule-bar{grid-column:var(--start) / span var(--span);color:#1d4ed8;text-align:left;cursor:pointer;background:#eaf1ff;border:1px solid #2563eb42;border-radius:8px;align-self:center;min-width:0;height:48px;padding:7px 9px;overflow:hidden}.schedule-bar.active{color:#fff;background:#1d4ed8}.schedule-bar span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800;display:block;overflow:hidden}.schedule-bar small{opacity:.8;margin-top:2px;font-size:11px;font-weight:750;display:block}.gantt-footer{min-width:1040px;min-height:38px;color:var(--text-muted);background:#f8fafc;justify-content:flex-end;align-items:center;gap:16px;padding:0 14px;font-size:12px;font-weight:800;display:flex}.table-shell{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;min-width:0;max-width:100%;overflow:auto}table{border-collapse:collapse;width:100%;min-width:1060px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:12px;font-size:13px}th{color:var(--text-muted);z-index:1;background:#f8fafc;font-size:12px;font-weight:800;position:sticky;top:0}td strong,td span{display:block}td strong{color:var(--text-strong);font-size:13px}td span{color:var(--text-muted);margin-top:3px;font-size:12px;font-weight:650}.tag-list{flex-wrap:wrap;align-items:center;gap:5px;min-width:0;display:flex}td .tag-list,.detail-list .tag-list,.field-list .tag-list,.config-card .tag-list{margin-top:0}.tag-list .value-tag,.value-tag{white-space:nowrap;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;min-height:22px;padding:0 7px;font-size:12px;font-weight:850;line-height:1;display:inline-flex}.option-red{color:#b91c1c;background:#fee2e2;border-color:#fecaca}.option-green{color:#047857;background:#dcfce7;border-color:#bbf7d0}.option-blue{color:#1d4ed8;background:#dbeafe;border-color:#bfdbfe}.option-pink{color:#be185d;background:#fce7f3;border-color:#fbcfe8}.option-black{color:#fff;background:#111827;border-color:#111827}.option-teal{color:#0f766e;background:#ccfbf1;border-color:#99f6e4}.option-yellow{color:#854d0e;background:#fef3c7;border-color:#fde68a}.option-purple{color:#6d28d9;background:#f3e8ff;border-color:#e9d5ff}.option-rose{color:#be123c;background:#ffe4e6;border-color:#fecdd3}.option-indigo{color:#4338ca;background:#e0e7ff;border-color:#c7d2fe}.option-orange{color:#c2410c;background:#ffedd5;border-color:#fed7aa}.option-gray{color:#475569;background:#f1f5f9;border-color:#e2e8f0}tbody tr{cursor:pointer}tbody tr:hover,tbody tr.selected{background:#f8fbff}.board{grid-template-columns:repeat(4,minmax(210px,1fr));gap:12px;display:grid;overflow-x:auto}.board-column{border:1px solid var(--line);background:#f8fafc;border-radius:8px;min-height:520px;padding:10px}.board-heading{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.board-heading span{width:24px;height:24px;color:var(--text-muted);background:#fff;border-radius:999px;place-items:center;font-size:12px;font-weight:800;display:grid}.task-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:8px;margin-bottom:9px;padding:10px;display:grid}.task-meta,.task-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.task-meta b{color:var(--text-muted);background:#f1f5f9;border-radius:999px;padding:3px 7px;font-size:12px}.task-actions button,.vehicle-card dd button{color:#1d4ed8;cursor:pointer;background:0 0;border:0;padding:0;font-weight:800}.vehicle-grid{grid-template-columns:repeat(2,minmax(260px,1fr));gap:12px;display:grid}.vehicle-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:14px;padding:14px;display:grid}.vehicle-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.vehicle-head strong{display:block}.vehicle-head span{color:var(--text-muted);font-size:12px;font-weight:700;display:block}dl{margin:0}.vehicle-card dl,.detail-list{gap:10px;display:grid}.vehicle-card dl div,.detail-list div{grid-template-columns:72px minmax(0,1fr);gap:10px;display:grid}dt{color:var(--text-muted);font-size:12px;font-weight:800}dd{min-width:0;color:var(--text-strong);margin:0;font-size:13px;font-weight:700}.bar-list,.deal-pipeline{gap:12px;display:grid}.bar-line{grid-template-columns:88px minmax(0,1fr) 48px;align-items:center;gap:10px;display:grid}.bar-line span,.bar-line b,.pipeline-row span,.pipeline-row b{color:var(--text-muted);font-size:12px;font-weight:800}.bar-line div{background:#e2e8f0;border-radius:999px;height:10px;overflow:hidden}.bar-line i{border-radius:inherit;background:#2563eb;height:100%;display:block}.pipeline-row{grid-template-columns:minmax(120px,1fr) 64px 96px minmax(110px,1fr);align-items:center;gap:10px;display:grid}.metric-inline{flex-wrap:wrap;gap:8px;display:inline-flex}.metric-inline span{border:1px solid var(--line);color:var(--text-soft);background:#fff;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}.config-grid,.field-dictionary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.config-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field-dictionary{grid-template-columns:repeat(3,minmax(0,1fr))}.config-card{border:1px solid var(--line);background:#fff;border-radius:8px;align-content:start;gap:8px;min-width:0;padding:12px;display:grid}.config-card.wide{gap:12px}.config-card strong{color:var(--text-strong);font-size:14px}.config-card span,.config-card small{min-width:0;color:var(--text-muted);overflow-wrap:anywhere;font-size:12px;font-weight:750}.status-flow,.field-chip-list{flex-wrap:wrap;gap:8px;display:flex}.status-flow div{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:7px;padding:6px 8px;display:inline-flex}.status-flow b{color:var(--text-strong);font-size:12px}.field-chip{background:#f1f5f9;border-radius:8px;gap:2px;max-width:100%;padding:7px 9px;display:inline-grid}.field-chip b,.field-chip small{overflow-wrap:anywhere;min-width:0}.field-chip b{color:var(--text-strong);font-size:12px}.field-chip small{color:var(--text-muted);font-size:11px;font-weight:800}.inspector{border-left:1px solid var(--line);background:#fff;height:calc(100svh - 58px);padding:16px;position:sticky;top:58px;overflow-y:auto}.inspector-header{border-bottom:1px solid var(--line);gap:8px;margin-bottom:14px;padding-bottom:14px;display:grid}.inspector-header h2{font-size:18px}.inspector-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.inspector-section{margin-top:18px}.node-card,.role-list,.field-list{gap:8px;display:grid}.node-card{border:1px solid var(--line);background:#f8fafc;border-radius:8px;padding:11px}.node-card strong,.node-card b{color:var(--text-strong);font-size:13px}.node-card span,.node-card small{color:var(--text-muted);font-size:12px;font-weight:750}.role-list div,.field-list div{border-bottom:1px solid var(--line);gap:3px;padding:9px 0;display:grid}.role-list strong{color:var(--text-strong);font-size:13px}.role-list span{color:var(--text-muted);font-size:12px;font-weight:750}.field-list{margin:0}.empty-note{color:var(--text-muted);font-size:13px;font-weight:700}.avatar-list{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.person-avatar{color:#1d4ed8;cursor:help;background:#eaf1ff;border:1px solid #bfdbfe;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;font-size:12px;font-weight:850;line-height:1;display:grid;position:relative;overflow:hidden}.person-avatar img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.avatar-fallback{z-index:0;position:relative}.avatar-list .empty-note{width:auto;height:auto;color:var(--text-muted);background:0 0;border-radius:0;display:inline-flex}.modal-backdrop{z-index:40;background:#0f172a47;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.composer-modal{border:1px solid var(--line);background:#fff;border-radius:8px;width:min(440px,100%);padding:18px;box-shadow:0 18px 50px #0f172a2e}.modal-title{justify-content:space-between;align-items:start;gap:12px;margin-bottom:16px;display:flex}.project-form{gap:12px;display:grid}.project-form label{color:var(--text-soft);gap:6px;font-size:13px;font-weight:800;display:grid}.project-form input{border:1px solid var(--line);min-height:38px;color:var(--text-strong);font:inherit;background:#fff;border-radius:8px;padding:0 10px}.form-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}button:focus-visible,input:focus-visible{outline-offset:2px;outline:2px solid #2563eb8c}@media (width<=1180px){.app-shell{grid-template-columns:64px 208px minmax(0,1fr)}.workspace{grid-template-columns:minmax(0,1fr)}.inspector{border-left:0;border-top:1px solid var(--line);height:auto;position:static}}@media (width<=860px){.app-shell{grid-template-columns:1fr}.global-rail{height:62px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);grid-template-columns:repeat(6,minmax(0,1fr));display:grid;position:fixed;inset:auto 0 0}.brand-mark,.rail-spacer,.global-rail .rail-item:last-child{display:none}.rail-item{min-height:48px}.space-sidebar{border-right:0;border-bottom:1px solid var(--line);height:auto;max-height:156px;padding:calc(10px + env(safe-area-inset-top)) 12px 10px;position:sticky;top:0;overflow:auto}.space-title{margin:0 0 8px;padding:0 4px 8px}.module-list{padding-bottom:4px;display:flex;overflow-x:auto}.module-item{flex:none;width:auto;min-height:34px}.pinned-space,.nav-section-title{display:none}.topbar{grid-template-columns:1fr;height:auto;padding:12px;position:static}.topbar-actions{flex-wrap:wrap;justify-self:start}.content-panel{padding:12px 12px 78px}.metric-grid,.two-column,.analytics-grid,.vehicle-grid,.config-grid,.config-grid.two,.field-dictionary{grid-template-columns:1fr}.view-header{flex-direction:column;align-items:stretch}.segmented,.view-tabs{justify-content:start;overflow-x:auto}.project-mini-card{grid-template-columns:minmax(0,1fr)}.board{grid-template-columns:repeat(4,240px)}.inspector{margin-bottom:62px}}
