{index === 0 && | {categories.get(category)}{rows.length}个统计组 | }
{group.provider}{group.model} | {group.stats.n} | {usd(group.stats.mean)} | {usd(group.stats.median)} | {group.stats.meanMedianRatio?.toFixed(2) ?? "—"} | {group.stats.cv?.toFixed(2) ?? "—"} | {usd(group.stats.meanWithoutLargest)}{percent(group.stats.largestRemovalDrop)} |
{group.points.map((point) => {" "})}{group.stats.n < 3 ? "样本少于3,不能据此判断领域典型收入。" : "自选的小样本,须结合产品年龄、成本与留存评估。"} |
diff --git a/apps/docs/src/styles/globals.css b/apps/docs/src/styles/globals.css
index 7fc3b38..9877a0c 100644
--- a/apps/docs/src/styles/globals.css
+++ b/apps/docs/src/styles/globals.css
@@ -1473,6 +1473,13 @@ svg { flex-shrink: 0; }
.research-distribution { margin: 24px 0 38px; }
.research-distribution figure { margin: 20px 0; }
+.ai-research .income-statistics { min-width: 1200px; }
+/* Row-spanning category headings shift cell indexes between rows. */
+.ai-research .income-statistics td { min-width: 0; }
+.ai-research .income-statistics th[scope="rowgroup"] { min-width: 150px; white-space: nowrap; }
+.ai-research .income-statistics th[scope="rowgroup"] small { display: block; margin-top: 5px; }
+.ai-research .income-statistics td:not(:last-child) { white-space: nowrap; }
+.ai-research .income-statistics td:last-child { min-width: 220px; }
.income-distribution-chart { display: block; width: 100%; min-width: 900px; height: auto; }
.income-distribution-chart [role="button"] { cursor: pointer; outline: none; }
.income-distribution-chart [role="button"]:focus circle:last-child { stroke: #b17725; stroke-width: 3; }