21 CSS Tooltips11 / 21
Data Table Cell
A quarterly metrics table where each plain number is a hover target. The popover shows the metric name, large value, change-vs-prior quarter, a three-bar segment breakdown (e.g. SMB / Mid / Enterprise), and a two-piece footer with delta and aggregate context. For analytics dashboards, BI reports, KPI surfaces.
Published
The code
<div class="tp-11">
<div class="tp-11__inner">
<table class="tp-11__table">
<thead>
<tr>
<th></th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tp-11__row-label">Revenue</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.1M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.1M</span><span class="tp-11__change tp-11__up">↑ +18% vs Q4</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:62%;background:#6366f1"></span></span><span class="tp-11__bar-pct">62%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">28%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>vs prior: <strong>+$320K</strong></span><span>ARR: <strong>$8.4M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.8M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.8M</span><span class="tp-11__change tp-11__up">↑ +33% vs Q1</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:55%;background:#6366f1"></span></span><span class="tp-11__bar-pct">55%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:33%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">33%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q1: <strong>+$700K</strong></span><span>ARR: <strong>$11.2M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$3.4M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">$3.4M</span><span class="tp-11__change tp-11__up">↑ +21% vs Q2</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:48%;background:#6366f1"></span></span><span class="tp-11__bar-pct">48%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:14%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">14%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q2: <strong>+$600K</strong></span><span>ARR: <strong>$13.6M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$4.2M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">$4.2M</span><span class="tp-11__change tp-11__up">↑ +24% vs Q3</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#6366f1"></span></span><span class="tp-11__bar-pct">42%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:20%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">20%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q3: <strong>+$800K</strong></span><span>Year: <strong>$12.5M</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Active Users</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">12.4K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">12.4K</span><span class="tp-11__change tp-11__up">↑ +22%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:58%;background:#22c55e"></span></span><span class="tp-11__bar-pct">58%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#16a34a"></span></span><span class="tp-11__bar-pct">32%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+2,240</strong></span><span>DAU/MAU: <strong>41%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">18.9K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">18.9K</span><span class="tp-11__change tp-11__up">↑ +52%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:54%;background:#22c55e"></span></span><span class="tp-11__bar-pct">54%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:36%;background:#16a34a"></span></span><span class="tp-11__bar-pct">36%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+6,500</strong></span><span>DAU/MAU: <strong>44%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">24.1K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">24.1K</span><span class="tp-11__change tp-11__up">↑ +28%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:50%;background:#22c55e"></span></span><span class="tp-11__bar-pct">50%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#16a34a"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#166534"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+5,200</strong></span><span>DAU/MAU: <strong>47%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">31.8K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">31.8K</span><span class="tp-11__change tp-11__up">↑ +32%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:44%;background:#22c55e"></span></span><span class="tp-11__bar-pct">44%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#16a34a"></span></span><span class="tp-11__bar-pct">40%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:16%;background:#166534"></span></span><span class="tp-11__bar-pct">16%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+7,700</strong></span><span>YoY: <strong>+156%</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Churn</td>
<td><span class="tp-11__t"><span class="tp-11__val">2.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q1</span><span class="tp-11__big-row"><span class="tp-11__big">2.8%</span><span class="tp-11__change tp-11__dn">↓ +0.4pp worse</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#ef4444"></span></span><span class="tp-11__bar-pct">42%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:31%;background:#f87171"></span></span><span class="tp-11__bar-pct">31%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:27%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">27%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>1.1%</strong></span><span>Win-back: <strong>14%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.4%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q2</span><span class="tp-11__big-row"><span class="tp-11__big">2.4%</span><span class="tp-11__change tp-11__up">↑ −0.4pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#ef4444"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:34%;background:#f87171"></span></span><span class="tp-11__bar-pct">34%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">28%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.8%</strong></span><span>Win-back: <strong>18%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.1%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q3</span><span class="tp-11__big-row"><span class="tp-11__big">2.1%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#ef4444"></span></span><span class="tp-11__bar-pct">32%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#f87171"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:30%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">30%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.6%</strong></span><span>Win-back: <strong>21%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">1.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q4</span><span class="tp-11__big-row"><span class="tp-11__big">1.8%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#ef4444"></span></span><span class="tp-11__bar-pct">28%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#f87171"></span></span><span class="tp-11__bar-pct">40%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">32%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.4%</strong></span><span>Year: <strong>−1.0pp</strong></span></span></span></span></td>
</tr>
</tbody>
</table>
</div>
</div><div class="tp-11">
<div class="tp-11__inner">
<table class="tp-11__table">
<thead>
<tr>
<th></th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tp-11__row-label">Revenue</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.1M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.1M</span><span class="tp-11__change tp-11__up">↑ +18% vs Q4</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:62%;background:#6366f1"></span></span><span class="tp-11__bar-pct">62%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">28%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>vs prior: <strong>+$320K</strong></span><span>ARR: <strong>$8.4M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.8M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.8M</span><span class="tp-11__change tp-11__up">↑ +33% vs Q1</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:55%;background:#6366f1"></span></span><span class="tp-11__bar-pct">55%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:33%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">33%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q1: <strong>+$700K</strong></span><span>ARR: <strong>$11.2M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$3.4M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">$3.4M</span><span class="tp-11__change tp-11__up">↑ +21% vs Q2</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:48%;background:#6366f1"></span></span><span class="tp-11__bar-pct">48%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:14%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">14%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q2: <strong>+$600K</strong></span><span>ARR: <strong>$13.6M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$4.2M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">$4.2M</span><span class="tp-11__change tp-11__up">↑ +24% vs Q3</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#6366f1"></span></span><span class="tp-11__bar-pct">42%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:20%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">20%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q3: <strong>+$800K</strong></span><span>Year: <strong>$12.5M</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Active Users</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">12.4K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">12.4K</span><span class="tp-11__change tp-11__up">↑ +22%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:58%;background:#22c55e"></span></span><span class="tp-11__bar-pct">58%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#16a34a"></span></span><span class="tp-11__bar-pct">32%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+2,240</strong></span><span>DAU/MAU: <strong>41%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">18.9K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">18.9K</span><span class="tp-11__change tp-11__up">↑ +52%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:54%;background:#22c55e"></span></span><span class="tp-11__bar-pct">54%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:36%;background:#16a34a"></span></span><span class="tp-11__bar-pct">36%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+6,500</strong></span><span>DAU/MAU: <strong>44%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">24.1K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">24.1K</span><span class="tp-11__change tp-11__up">↑ +28%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:50%;background:#22c55e"></span></span><span class="tp-11__bar-pct">50%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#16a34a"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#166534"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+5,200</strong></span><span>DAU/MAU: <strong>47%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">31.8K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">31.8K</span><span class="tp-11__change tp-11__up">↑ +32%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:44%;background:#22c55e"></span></span><span class="tp-11__bar-pct">44%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#16a34a"></span></span><span class="tp-11__bar-pct">40%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:16%;background:#166534"></span></span><span class="tp-11__bar-pct">16%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+7,700</strong></span><span>YoY: <strong>+156%</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Churn</td>
<td><span class="tp-11__t"><span class="tp-11__val">2.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q1</span><span class="tp-11__big-row"><span class="tp-11__big">2.8%</span><span class="tp-11__change tp-11__dn">↓ +0.4pp worse</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#ef4444"></span></span><span class="tp-11__bar-pct">42%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:31%;background:#f87171"></span></span><span class="tp-11__bar-pct">31%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:27%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">27%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>1.1%</strong></span><span>Win-back: <strong>14%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.4%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q2</span><span class="tp-11__big-row"><span class="tp-11__big">2.4%</span><span class="tp-11__change tp-11__up">↑ −0.4pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#ef4444"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:34%;background:#f87171"></span></span><span class="tp-11__bar-pct">34%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">28%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.8%</strong></span><span>Win-back: <strong>18%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.1%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q3</span><span class="tp-11__big-row"><span class="tp-11__big">2.1%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#ef4444"></span></span><span class="tp-11__bar-pct">32%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#f87171"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:30%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">30%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.6%</strong></span><span>Win-back: <strong>21%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">1.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q4</span><span class="tp-11__big-row"><span class="tp-11__big">1.8%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#ef4444"></span></span><span class="tp-11__bar-pct">28%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#f87171"></span></span><span class="tp-11__bar-pct">40%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">32%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.4%</strong></span><span>Year: <strong>−1.0pp</strong></span></span></span></span></td>
</tr>
</tbody>
</table>
</div>
</div>.tp-11 {
width: 100%;
min-height: 100vh;
background: #f8f9fa;
/* Top room — table cell tips pop UP from each value (~220px tall). */
padding: 240px 28px 36px;
font-family: 'Inter', system-ui, sans-serif;
}
.tp-11__inner {
max-width: 520px;
margin: 0 auto;
}
.tp-11__table {
width: 100%;
border-collapse: collapse;
}
.tp-11__table thead th {
font-size: 9.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #aaa;
font-weight: 500;
padding: 0 14px 11px;
text-align: right;
}
.tp-11__table thead th:first-child {
text-align: left;
}
.tp-11__table tbody tr {
border-top: 1px solid #eee;
}
.tp-11__table tbody tr:hover {
background: rgba(0, 0, 0, 0.015);
}
.tp-11__table tbody td {
padding: 12px 14px;
font-size: 12.5px;
color: #333;
text-align: right;
white-space: nowrap;
}
.tp-11__row-label {
color: #777 !important;
font-size: 11px !important;
text-align: left !important;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.tp-11__t {
position: relative;
display: inline-block;
cursor: help;
}
.tp-11__val {
border-bottom: 1px dashed transparent;
transition: border-color .15s, color .15s;
}
.tp-11__t:hover .tp-11__val {
border-bottom-color: #aaa;
color: #111;
}
.tp-11__tip {
position: absolute;
bottom: calc(100% + 9px);
left: 50%;
transform: translateX(-50%) translateY(4px);
width: 240px;
background: #fff;
border-radius: 9px;
border: 1px solid rgba(0, 0, 0, 0.08);
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.05);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .2s, transform .2s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear .2s;
z-index: 30;
overflow: hidden;
display: block;
text-align: left;
white-space: normal;
}
.tp-11__t:hover .tp-11__tip {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
transition-delay: 0s;
}
.tp-11__head {
display: block;
padding: 12px 13px 9px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__metric {
display: block;
font-size: 9.5px;
color: #aaa;
text-transform: uppercase;
letter-spacing: 0.09em;
margin-bottom: 5px;
}
.tp-11__big-row {
display: flex;
align-items: baseline;
gap: 8px;
}
.tp-11__big {
font-size: 22px;
font-weight: 700;
color: #111;
}
.tp-11__change {
font-size: 11px;
font-weight: 600;
}
.tp-11__up {
color: #16a34a;
}
.tp-11__dn {
color: #dc2626;
}
.tp-11__bars {
display: block;
padding: 11px 13px 7px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__bars-label {
display: block;
font-size: 7.5px;
color: #bbb;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 7px;
}
.tp-11__bar-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 5px;
}
.tp-11__bar-name {
font-size: 9.5px;
color: #999;
width: 32px;
text-align: right;
flex-shrink: 0;
}
.tp-11__bar-track {
flex: 1;
height: 5px;
background: #f0f0f0;
border-radius: 3px;
overflow: hidden;
display: block;
}
.tp-11__bar-fill {
height: 100%;
border-radius: 3px;
display: block;
}
.tp-11__bar-pct {
font-size: 9.5px;
color: #bbb;
width: 28px;
flex-shrink: 0;
text-align: right;
}
.tp-11__foot {
display: flex;
justify-content: space-between;
padding: 10px 13px;
font-size: 10.5px;
color: #bbb;
}
.tp-11__foot strong {
color: #555;
font-weight: 600;
}.tp-11 {
width: 100%;
min-height: 100vh;
background: #f8f9fa;
/* Top room — table cell tips pop UP from each value (~220px tall). */
padding: 240px 28px 36px;
font-family: 'Inter', system-ui, sans-serif;
}
.tp-11__inner {
max-width: 520px;
margin: 0 auto;
}
.tp-11__table {
width: 100%;
border-collapse: collapse;
}
.tp-11__table thead th {
font-size: 9.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #aaa;
font-weight: 500;
padding: 0 14px 11px;
text-align: right;
}
.tp-11__table thead th:first-child {
text-align: left;
}
.tp-11__table tbody tr {
border-top: 1px solid #eee;
}
.tp-11__table tbody tr:hover {
background: rgba(0, 0, 0, 0.015);
}
.tp-11__table tbody td {
padding: 12px 14px;
font-size: 12.5px;
color: #333;
text-align: right;
white-space: nowrap;
}
.tp-11__row-label {
color: #777 !important;
font-size: 11px !important;
text-align: left !important;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.tp-11__t {
position: relative;
display: inline-block;
cursor: help;
}
.tp-11__val {
border-bottom: 1px dashed transparent;
transition: border-color .15s, color .15s;
}
.tp-11__t:hover .tp-11__val {
border-bottom-color: #aaa;
color: #111;
}
.tp-11__tip {
position: absolute;
bottom: calc(100% + 9px);
left: 50%;
transform: translateX(-50%) translateY(4px);
width: 240px;
background: #fff;
border-radius: 9px;
border: 1px solid rgba(0, 0, 0, 0.08);
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.05);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .2s, transform .2s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear .2s;
z-index: 30;
overflow: hidden;
display: block;
text-align: left;
white-space: normal;
}
.tp-11__t:hover .tp-11__tip {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
transition-delay: 0s;
}
.tp-11__head {
display: block;
padding: 12px 13px 9px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__metric {
display: block;
font-size: 9.5px;
color: #aaa;
text-transform: uppercase;
letter-spacing: 0.09em;
margin-bottom: 5px;
}
.tp-11__big-row {
display: flex;
align-items: baseline;
gap: 8px;
}
.tp-11__big {
font-size: 22px;
font-weight: 700;
color: #111;
}
.tp-11__change {
font-size: 11px;
font-weight: 600;
}
.tp-11__up {
color: #16a34a;
}
.tp-11__dn {
color: #dc2626;
}
.tp-11__bars {
display: block;
padding: 11px 13px 7px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__bars-label {
display: block;
font-size: 7.5px;
color: #bbb;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 7px;
}
.tp-11__bar-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 5px;
}
.tp-11__bar-name {
font-size: 9.5px;
color: #999;
width: 32px;
text-align: right;
flex-shrink: 0;
}
.tp-11__bar-track {
flex: 1;
height: 5px;
background: #f0f0f0;
border-radius: 3px;
overflow: hidden;
display: block;
}
.tp-11__bar-fill {
height: 100%;
border-radius: 3px;
display: block;
}
.tp-11__bar-pct {
font-size: 9.5px;
color: #bbb;
width: 28px;
flex-shrink: 0;
text-align: right;
}
.tp-11__foot {
display: flex;
justify-content: space-between;
padding: 10px 13px;
font-size: 10.5px;
color: #bbb;
}
.tp-11__foot strong {
color: #555;
font-weight: 600;
}Here's a working CSS Tooltip from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Data Table Cell
Source: https://codefronts.com/snippets/css-tooltips/data-table-cell/
A quarterly metrics table where each plain number is a hover target. The popover shows the metric name, large value, change-vs-prior quarter, a three-bar segment breakdown (e.g. SMB / Mid / Enterprise), and a two-piece footer with delta and aggregate context. For analytics dashboards, BI reports, KPI surfaces.
## HTML
```html
<div class="tp-11">
<div class="tp-11__inner">
<table class="tp-11__table">
<thead>
<tr>
<th></th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tp-11__row-label">Revenue</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.1M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.1M</span><span class="tp-11__change tp-11__up">↑ +18% vs Q4</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:62%;background:#6366f1"></span></span><span class="tp-11__bar-pct">62%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">28%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>vs prior: <strong>+$320K</strong></span><span>ARR: <strong>$8.4M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.8M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.8M</span><span class="tp-11__change tp-11__up">↑ +33% vs Q1</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:55%;background:#6366f1"></span></span><span class="tp-11__bar-pct">55%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:33%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">33%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q1: <strong>+$700K</strong></span><span>ARR: <strong>$11.2M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$3.4M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">$3.4M</span><span class="tp-11__change tp-11__up">↑ +21% vs Q2</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:48%;background:#6366f1"></span></span><span class="tp-11__bar-pct">48%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:14%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">14%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q2: <strong>+$600K</strong></span><span>ARR: <strong>$13.6M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$4.2M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">$4.2M</span><span class="tp-11__change tp-11__up">↑ +24% vs Q3</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#6366f1"></span></span><span class="tp-11__bar-pct">42%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:20%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">20%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q3: <strong>+$800K</strong></span><span>Year: <strong>$12.5M</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Active Users</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">12.4K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">12.4K</span><span class="tp-11__change tp-11__up">↑ +22%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:58%;background:#22c55e"></span></span><span class="tp-11__bar-pct">58%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#16a34a"></span></span><span class="tp-11__bar-pct">32%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+2,240</strong></span><span>DAU/MAU: <strong>41%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">18.9K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">18.9K</span><span class="tp-11__change tp-11__up">↑ +52%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:54%;background:#22c55e"></span></span><span class="tp-11__bar-pct">54%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:36%;background:#16a34a"></span></span><span class="tp-11__bar-pct">36%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+6,500</strong></span><span>DAU/MAU: <strong>44%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">24.1K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">24.1K</span><span class="tp-11__change tp-11__up">↑ +28%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:50%;background:#22c55e"></span></span><span class="tp-11__bar-pct">50%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#16a34a"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#166534"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+5,200</strong></span><span>DAU/MAU: <strong>47%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">31.8K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">31.8K</span><span class="tp-11__change tp-11__up">↑ +32%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:44%;background:#22c55e"></span></span><span class="tp-11__bar-pct">44%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#16a34a"></span></span><span class="tp-11__bar-pct">40%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:16%;background:#166534"></span></span><span class="tp-11__bar-pct">16%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+7,700</strong></span><span>YoY: <strong>+156%</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Churn</td>
<td><span class="tp-11__t"><span class="tp-11__val">2.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q1</span><span class="tp-11__big-row"><span class="tp-11__big">2.8%</span><span class="tp-11__change tp-11__dn">↓ +0.4pp worse</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#ef4444"></span></span><span class="tp-11__bar-pct">42%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:31%;background:#f87171"></span></span><span class="tp-11__bar-pct">31%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:27%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">27%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>1.1%</strong></span><span>Win-back: <strong>14%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.4%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q2</span><span class="tp-11__big-row"><span class="tp-11__big">2.4%</span><span class="tp-11__change tp-11__up">↑ −0.4pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#ef4444"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:34%;background:#f87171"></span></span><span class="tp-11__bar-pct">34%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">28%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.8%</strong></span><span>Win-back: <strong>18%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.1%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q3</span><span class="tp-11__big-row"><span class="tp-11__big">2.1%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#ef4444"></span></span><span class="tp-11__bar-pct">32%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#f87171"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:30%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">30%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.6%</strong></span><span>Win-back: <strong>21%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">1.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q4</span><span class="tp-11__big-row"><span class="tp-11__big">1.8%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#ef4444"></span></span><span class="tp-11__bar-pct">28%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#f87171"></span></span><span class="tp-11__bar-pct">40%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">32%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.4%</strong></span><span>Year: <strong>−1.0pp</strong></span></span></span></span></td>
</tr>
</tbody>
</table>
</div>
</div>
```
## CSS
```css
.tp-11 {
width: 100%;
min-height: 100vh;
background: #f8f9fa;
/* Top room — table cell tips pop UP from each value (~220px tall). */
padding: 240px 28px 36px;
font-family: 'Inter', system-ui, sans-serif;
}
.tp-11__inner {
max-width: 520px;
margin: 0 auto;
}
.tp-11__table {
width: 100%;
border-collapse: collapse;
}
.tp-11__table thead th {
font-size: 9.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #aaa;
font-weight: 500;
padding: 0 14px 11px;
text-align: right;
}
.tp-11__table thead th:first-child {
text-align: left;
}
.tp-11__table tbody tr {
border-top: 1px solid #eee;
}
.tp-11__table tbody tr:hover {
background: rgba(0, 0, 0, 0.015);
}
.tp-11__table tbody td {
padding: 12px 14px;
font-size: 12.5px;
color: #333;
text-align: right;
white-space: nowrap;
}
.tp-11__row-label {
color: #777 !important;
font-size: 11px !important;
text-align: left !important;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.tp-11__t {
position: relative;
display: inline-block;
cursor: help;
}
.tp-11__val {
border-bottom: 1px dashed transparent;
transition: border-color .15s, color .15s;
}
.tp-11__t:hover .tp-11__val {
border-bottom-color: #aaa;
color: #111;
}
.tp-11__tip {
position: absolute;
bottom: calc(100% + 9px);
left: 50%;
transform: translateX(-50%) translateY(4px);
width: 240px;
background: #fff;
border-radius: 9px;
border: 1px solid rgba(0, 0, 0, 0.08);
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.05);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .2s, transform .2s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear .2s;
z-index: 30;
overflow: hidden;
display: block;
text-align: left;
white-space: normal;
}
.tp-11__t:hover .tp-11__tip {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
transition-delay: 0s;
}
.tp-11__head {
display: block;
padding: 12px 13px 9px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__metric {
display: block;
font-size: 9.5px;
color: #aaa;
text-transform: uppercase;
letter-spacing: 0.09em;
margin-bottom: 5px;
}
.tp-11__big-row {
display: flex;
align-items: baseline;
gap: 8px;
}
.tp-11__big {
font-size: 22px;
font-weight: 700;
color: #111;
}
.tp-11__change {
font-size: 11px;
font-weight: 600;
}
.tp-11__up {
color: #16a34a;
}
.tp-11__dn {
color: #dc2626;
}
.tp-11__bars {
display: block;
padding: 11px 13px 7px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__bars-label {
display: block;
font-size: 7.5px;
color: #bbb;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 7px;
}
.tp-11__bar-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 5px;
}
.tp-11__bar-name {
font-size: 9.5px;
color: #999;
width: 32px;
text-align: right;
flex-shrink: 0;
}
.tp-11__bar-track {
flex: 1;
height: 5px;
background: #f0f0f0;
border-radius: 3px;
overflow: hidden;
display: block;
}
.tp-11__bar-fill {
height: 100%;
border-radius: 3px;
display: block;
}
.tp-11__bar-pct {
font-size: 9.5px;
color: #bbb;
width: 28px;
flex-shrink: 0;
text-align: right;
}
.tp-11__foot {
display: flex;
justify-content: space-between;
padding: 10px 13px;
font-size: 10.5px;
color: #bbb;
}
.tp-11__foot strong {
color: #555;
font-weight: 600;
}
```Here's a working CSS Tooltip from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Data Table Cell
Source: https://codefronts.com/snippets/css-tooltips/data-table-cell/
A quarterly metrics table where each plain number is a hover target. The popover shows the metric name, large value, change-vs-prior quarter, a three-bar segment breakdown (e.g. SMB / Mid / Enterprise), and a two-piece footer with delta and aggregate context. For analytics dashboards, BI reports, KPI surfaces.
## HTML
```html
<div class="tp-11">
<div class="tp-11__inner">
<table class="tp-11__table">
<thead>
<tr>
<th></th><th>Q1</th><th>Q2</th><th>Q3</th><th>Q4</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tp-11__row-label">Revenue</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.1M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.1M</span><span class="tp-11__change tp-11__up">↑ +18% vs Q4</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:62%;background:#6366f1"></span></span><span class="tp-11__bar-pct">62%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">28%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>vs prior: <strong>+$320K</strong></span><span>ARR: <strong>$8.4M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$2.8M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">$2.8M</span><span class="tp-11__change tp-11__up">↑ +33% vs Q1</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:55%;background:#6366f1"></span></span><span class="tp-11__bar-pct">55%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:33%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">33%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q1: <strong>+$700K</strong></span><span>ARR: <strong>$11.2M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$3.4M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">$3.4M</span><span class="tp-11__change tp-11__up">↑ +21% vs Q2</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:48%;background:#6366f1"></span></span><span class="tp-11__bar-pct">48%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:14%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">14%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q2: <strong>+$600K</strong></span><span>ARR: <strong>$13.6M</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">$4.2M</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Revenue · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">$4.2M</span><span class="tp-11__change tp-11__up">↑ +24% vs Q3</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By segment</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">SMB</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#6366f1"></span></span><span class="tp-11__bar-pct">42%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Mid</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#8b5cf6"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:20%;background:#a78bfa"></span></span><span class="tp-11__bar-pct">20%</span></span>
</span>
<span class="tp-11__foot"><span>vs Q3: <strong>+$800K</strong></span><span>Year: <strong>$12.5M</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Active Users</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">12.4K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q1</span>
<span class="tp-11__big-row"><span class="tp-11__big">12.4K</span><span class="tp-11__change tp-11__up">↑ +22%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:58%;background:#22c55e"></span></span><span class="tp-11__bar-pct">58%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#16a34a"></span></span><span class="tp-11__bar-pct">32%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+2,240</strong></span><span>DAU/MAU: <strong>41%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">18.9K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q2</span>
<span class="tp-11__big-row"><span class="tp-11__big">18.9K</span><span class="tp-11__change tp-11__up">↑ +52%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:54%;background:#22c55e"></span></span><span class="tp-11__bar-pct">54%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:36%;background:#16a34a"></span></span><span class="tp-11__bar-pct">36%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:10%;background:#166534"></span></span><span class="tp-11__bar-pct">10%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+6,500</strong></span><span>DAU/MAU: <strong>44%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">24.1K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q3</span>
<span class="tp-11__big-row"><span class="tp-11__big">24.1K</span><span class="tp-11__change tp-11__up">↑ +28%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:50%;background:#22c55e"></span></span><span class="tp-11__bar-pct">50%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#16a34a"></span></span><span class="tp-11__bar-pct">38%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:12%;background:#166534"></span></span><span class="tp-11__bar-pct">12%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+5,200</strong></span><span>DAU/MAU: <strong>47%</strong></span></span>
</span>
</span>
</td>
<td>
<span class="tp-11__t">
<span class="tp-11__val">31.8K</span>
<span class="tp-11__tip">
<span class="tp-11__head">
<span class="tp-11__metric">Active Users · Q4</span>
<span class="tp-11__big-row"><span class="tp-11__big">31.8K</span><span class="tp-11__change tp-11__up">↑ +32%</span></span>
</span>
<span class="tp-11__bars">
<span class="tp-11__bars-label">By plan</span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Free</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:44%;background:#22c55e"></span></span><span class="tp-11__bar-pct">44%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Pro</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#16a34a"></span></span><span class="tp-11__bar-pct">40%</span></span>
<span class="tp-11__bar-row"><span class="tp-11__bar-name">Ent.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:16%;background:#166534"></span></span><span class="tp-11__bar-pct">16%</span></span>
</span>
<span class="tp-11__foot"><span>New: <strong>+7,700</strong></span><span>YoY: <strong>+156%</strong></span></span>
</span>
</span>
</td>
</tr>
<tr>
<td class="tp-11__row-label">Churn</td>
<td><span class="tp-11__t"><span class="tp-11__val">2.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q1</span><span class="tp-11__big-row"><span class="tp-11__big">2.8%</span><span class="tp-11__change tp-11__dn">↓ +0.4pp worse</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:42%;background:#ef4444"></span></span><span class="tp-11__bar-pct">42%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:31%;background:#f87171"></span></span><span class="tp-11__bar-pct">31%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:27%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">27%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>1.1%</strong></span><span>Win-back: <strong>14%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.4%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q2</span><span class="tp-11__big-row"><span class="tp-11__big">2.4%</span><span class="tp-11__change tp-11__up">↑ −0.4pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#ef4444"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:34%;background:#f87171"></span></span><span class="tp-11__bar-pct">34%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">28%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.8%</strong></span><span>Win-back: <strong>18%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">2.1%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q3</span><span class="tp-11__big-row"><span class="tp-11__big">2.1%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#ef4444"></span></span><span class="tp-11__bar-pct">32%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:38%;background:#f87171"></span></span><span class="tp-11__bar-pct">38%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:30%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">30%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.6%</strong></span><span>Win-back: <strong>21%</strong></span></span></span></span></td>
<td><span class="tp-11__t"><span class="tp-11__val">1.8%</span><span class="tp-11__tip"><span class="tp-11__head"><span class="tp-11__metric">Monthly Churn · Q4</span><span class="tp-11__big-row"><span class="tp-11__big">1.8%</span><span class="tp-11__change tp-11__up">↑ −0.3pp better</span></span></span><span class="tp-11__bars"><span class="tp-11__bars-label">Reason</span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Price</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:28%;background:#ef4444"></span></span><span class="tp-11__bar-pct">28%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Feat.</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:40%;background:#f87171"></span></span><span class="tp-11__bar-pct">40%</span></span><span class="tp-11__bar-row"><span class="tp-11__bar-name">Other</span><span class="tp-11__bar-track"><span class="tp-11__bar-fill" style="width:32%;background:#fca5a5"></span></span><span class="tp-11__bar-pct">32%</span></span></span><span class="tp-11__foot"><span>Net rev churn: <strong>0.4%</strong></span><span>Year: <strong>−1.0pp</strong></span></span></span></span></td>
</tr>
</tbody>
</table>
</div>
</div>
```
## CSS
```css
.tp-11 {
width: 100%;
min-height: 100vh;
background: #f8f9fa;
/* Top room — table cell tips pop UP from each value (~220px tall). */
padding: 240px 28px 36px;
font-family: 'Inter', system-ui, sans-serif;
}
.tp-11__inner {
max-width: 520px;
margin: 0 auto;
}
.tp-11__table {
width: 100%;
border-collapse: collapse;
}
.tp-11__table thead th {
font-size: 9.5px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #aaa;
font-weight: 500;
padding: 0 14px 11px;
text-align: right;
}
.tp-11__table thead th:first-child {
text-align: left;
}
.tp-11__table tbody tr {
border-top: 1px solid #eee;
}
.tp-11__table tbody tr:hover {
background: rgba(0, 0, 0, 0.015);
}
.tp-11__table tbody td {
padding: 12px 14px;
font-size: 12.5px;
color: #333;
text-align: right;
white-space: nowrap;
}
.tp-11__row-label {
color: #777 !important;
font-size: 11px !important;
text-align: left !important;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.tp-11__t {
position: relative;
display: inline-block;
cursor: help;
}
.tp-11__val {
border-bottom: 1px dashed transparent;
transition: border-color .15s, color .15s;
}
.tp-11__t:hover .tp-11__val {
border-bottom-color: #aaa;
color: #111;
}
.tp-11__tip {
position: absolute;
bottom: calc(100% + 9px);
left: 50%;
transform: translateX(-50%) translateY(4px);
width: 240px;
background: #fff;
border-radius: 9px;
border: 1px solid rgba(0, 0, 0, 0.08);
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.11), 0 2px 8px rgba(0, 0, 0, 0.05);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .2s, transform .2s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear .2s;
z-index: 30;
overflow: hidden;
display: block;
text-align: left;
white-space: normal;
}
.tp-11__t:hover .tp-11__tip {
opacity: 1;
visibility: visible;
transform: translateX(-50%) translateY(0);
transition-delay: 0s;
}
.tp-11__head {
display: block;
padding: 12px 13px 9px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__metric {
display: block;
font-size: 9.5px;
color: #aaa;
text-transform: uppercase;
letter-spacing: 0.09em;
margin-bottom: 5px;
}
.tp-11__big-row {
display: flex;
align-items: baseline;
gap: 8px;
}
.tp-11__big {
font-size: 22px;
font-weight: 700;
color: #111;
}
.tp-11__change {
font-size: 11px;
font-weight: 600;
}
.tp-11__up {
color: #16a34a;
}
.tp-11__dn {
color: #dc2626;
}
.tp-11__bars {
display: block;
padding: 11px 13px 7px;
border-bottom: 1px solid #f0f0f0;
}
.tp-11__bars-label {
display: block;
font-size: 7.5px;
color: #bbb;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 7px;
}
.tp-11__bar-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 5px;
}
.tp-11__bar-name {
font-size: 9.5px;
color: #999;
width: 32px;
text-align: right;
flex-shrink: 0;
}
.tp-11__bar-track {
flex: 1;
height: 5px;
background: #f0f0f0;
border-radius: 3px;
overflow: hidden;
display: block;
}
.tp-11__bar-fill {
height: 100%;
border-radius: 3px;
display: block;
}
.tp-11__bar-pct {
font-size: 9.5px;
color: #bbb;
width: 28px;
flex-shrink: 0;
text-align: right;
}
.tp-11__foot {
display: flex;
justify-content: space-between;
padding: 10px 13px;
font-size: 10.5px;
color: #bbb;
}
.tp-11__foot strong {
color: #555;
font-weight: 600;
}
```How this works
The Data Table Cell demo lays out a quarterly metrics grid the way analytics tools like Airtable, Notion, and Numbers do — every plain number is a hover target that reveals a spreadsheet-style comment popover with the full drill-down. The trigger is .tp-11__t, a positioned inline-block span wrapping the visible .tp-11__val and its hidden .tp-11__tip. Rest state hides the tip with opacity:0, visibility:hidden, and pointer-events:none; the visible value carries a transparent dashed underline that shifts to #aaa on hover, an affordance cue borrowed from BI report cells.
The popover itself is a 240px card pinned above the cell via bottom:calc(100% + 9px) and centered with left:50%; transform:translateX(-50%). It stacks a header (metric label + big value + green delta #16a34a or red delta #dc2626), a three-row segment breakdown with hex-colored fills (SMB indigo #6366f1, Mid #8b5cf6, Enterprise #a78bfa), and a two-piece footer with prior-quarter change and aggregate ARR context. Every fill width is inline-styled so the same markup drives revenue, active-user, and churn rows.
Motion combines opacity, a translateY(4px) lift on the tip, and a delayed visibility transition so the popover finishes fading before the browser reclaims hit testing. Typography leans dense and tabular — Inter at 12.5px for cells, 22px 700-weight for the big value, 9.5px uppercase 0.09em tracking for the metric label — a register that reads as spreadsheet software rather than marketing UI. Every column-type badge, delta arrow, and percentage stays legible without JavaScript.
Make it yours
- Retheme deltas by swapping the
.tp-11__upand.tp-11__dncolors — the current#16a34agreen and#dc2626red match Tailwind's palette, but any accessible pair passing 4.5:1 against the#fffcard background will work. - Widen the tip past 240px if you need more segment rows; the segment bars use
flex:1tracks, so they grow gracefully. Bump the parentpadding-topabove 240px so the tip still fits inside the demo frame. - Change segment palettes per row by editing the inline
backgroundhex on each.tp-11__bar-fill— the revenue row uses indigo shades, the users row uses greens, churn uses reds. Keep three tonal steps within one hue for a legible stack. - Add a fourth row by cloning any table row and its four
.tp-11__tspans. The row-label cell uses!importantoverrides so left alignment survives even when a global reset flips the default. - Swap Inter for your product's UI font in the
font-familydeclaration. Addfont-variant-numeric: tabular-numson.tp-11__valif your typeface has proportional figures — quarterly columns will stay aligned to the decimal.
Gotchas — read before shipping
- The tip lives inside a table cell, so any ancestor with
overflow:hidden— a common wrapper on dashboard cards — will clip it. Escape the container with a portal, or setoverflow:visibleon the wrapping cell, row, and.tp-11__inner. - WCAG 2.1 SC 1.4.13 (Content on Hover or Focus) requires hover content to be dismissable, hoverable, and persistent. This demo covers persistent and hoverable but not keyboard focus — add
:focus-withinalongside:hoverand give.tp-11__tatabindex="0"for parity. - The change indicators lean on color plus an up-arrow or down-arrow glyph, satisfying WCAG SC 1.4.1 (Use of Color). If you strip the arrows, add a screen-reader-only text label like "increase" so red-green color-blind users still get the delta direction.
- The
transition: visibility 0s linear .2sis the load-bearing line — remove it and the tip stays in the hit-test tree during the fade-out, triggering flickering re-shows if the user's cursor drifts. Keep the delay tied to the opacity duration. - Safari occasionally repaints the segment bar fills a tick late when the tip animates in. Adding
will-change: opacity, transformto.tp-11__tippromotes the popover to its own layer and stabilizes the paint. Removewill-changewhen idle to avoid GPU-memory churn. - On touch devices
:hoverfires on tap and stays until the next tap elsewhere — usable but not obvious. Detect coarse pointers with@media (hover:none)and either hide the tip trigger or replace it with a details/summary pattern that respects INP-safe tap targets of 24×24px minimum.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 90+ | 14+ | 88+ | 90+ |
Full support including cubic-bezier transitions and the delayed visibility swap. Test on iOS Safari where hover taps stick until dismissed elsewhere on the page. rgba box-shadow stack renders identically to Chromium.