Card with criteria checklist
The code for this example can be used in the Markdown visualization to create a card with a list of criteria:

Example query

Example code
<style>
/* Base styling */
body {
font-family: Inter, sans-serif;
margin: 0;
padding: 10px;
background-color: #f5f5f5;
}
/* Report card table styling */
.report-card-table {
width: 100%;
border-collapse: separate;
border-spacing: 0 10px;
margin-bottom: 10px;
}
/* Opportunity row styling */
.opportunity-row {
background-color: white;
box-shadow: 0 2px 2px rgba(0,0,0,0.1);
}
.opportunity-row > td {
padding: 10px; /* Remove default padding */
}
.opportunity-row td:first-child {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
border-left: 4px solid #191970;
}
.opportunity-row td:last-child {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
/* Priority indicators */
.high-priority td:first-child {
border-left-color: #907EFE;
}
.medium-priority td:first-child {
border-left-color: #3943B7;
}
.low-priority td:first-child {
border-left-color: #57A773;
}
/* Company info column styling */
.company-info {
width: 33%;
padding: 20px 20px 20px 30px;
vertical-align: top;
}
.company-header {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.company-title {
font-weight: bold;
font-size: 20px;
color: #191970;
margin-right: 15px;
}
.company-logo {
width: 80px;
height: 80px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
background-color: #f0f0f0;
display: flex;
justify-content: center;
align-items: center;
color: #999;
font-size: 12px;
margin-left: auto;
}
.company-logo img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 10px;
}
.company-meta {
margin-bottom: 18px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
}
.meta-item {
font-size: 14px;
color: #555;
background-color: #f8f8f8;
padding: 12px;
border-radius: 8px;
}
.meta-value {
display: block;
font-weight: bold;
color: #333;
font-size: 16px;
margin-top: 5px;
}
.company-tags {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 20px;
}
.tag {
display: inline-block;
background-color: #E6E6FA;
color: #191970;
font-size: 12px;
padding: 6px 12px;
border-radius: 16px;
font-weight: 500;
}
/* Assessment column styling */
.assessment-info {
width: 67%;
padding: 2px;
vertical-align: top;
}
.criteria-section {
background-color: #f9f9f9;
border-radius: 0 10px 10px 0;
padding: 15px;
height: 100%;
}
.criteria-table-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 15px;
margin-top: 5px;
}
.criteria-column {
width: 100%;
}
.criteria-header {
font-weight: bold;
font-size: 16px;
color: #191970;
margin-bottom: 1px;
display: flex;
justify-content: space-between;
align-items: center;
}
.criteria-score {
background-color: #191970;
color: white;
border-radius: 10%;
width: 60px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
font-size: 16px;
font-weight: bold;
}
.criteria-table {
width: 100%;
border-collapse: collapse;
margin-top: 5px;
}
.criteria-table th {
text-align: left;
padding: 10px;
font-size: 14px;
font-weight: 600;
color: #444;
border-bottom: 2px solid #e0e0e0;
}
.criteria-table td {
padding: 10px;
border-bottom: 1px solid #e8e8e8;
vertical-align: middle;
}
.criteria-table tr:last-child td {
border-bottom: none;
}
.status-indicator {
display: inline-block;
width: 24px;
height: 24px;
border-radius: 50%;
position: relative;
}
.status-true {
background-color: #57A773;
}
.status-true:after {
content: "✓";
color: white;
position: absolute;
font-size: 14px;
font-weight: bold;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.status-false {
background-color: #E63946;
}
.status-false:after {
content: "✗";
color: white;
position: absolute;
font-size: 14px;
font-weight: bold;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.criteria-label {
font-size: 14px;
color: #333;
font-weight: 400;
}
/* Footer styling */
.company-footer {
font-size: 13px;
color: #666;
border-top: 1px solid #eee;
padding-top: 10px;
margin-top: 12px;
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: space-between;
}
.company-footer span {
word-wrap: break-word;
overflow-wrap: break-word;
white-space: normal;
justify-content: space-between;
}
/* Tooltip styling */
.tooltip-container {
position: relative;
display: inline-flex;
align-items: center;
}
.tooltip-icon {
display: inline-flex;
justify-content: center;
align-items: center;
width: 16px;
height: 16px;
background-color: #ccc;
color: white;
border-radius: 50%;
font-size: 12px;
font-weight: bold;
margin-left: 8px;
cursor: help;
}
.tooltip-content {
visibility: hidden;
position: absolute;
z-index: 100;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
width: 240px;
background-color: #333;
color: white;
text-align: left;
border-radius: 6px;
padding: 10px 15px;
font-size: 12px;
font-weight: normal;
opacity: 0;
transition: opacity 0.3s;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
line-height: 1.4;
word-wrap: break-word;
white-space: normal;
}
.tooltip-content::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #333 transparent transparent transparent;
}
.tooltip-container:hover .tooltip-content {
visibility: visible;
opacity: 1;
}
</style>
<table class="report-card-table">
<tbody>
{{#result}}
<tr class="opportunity-row {{priorityClass}}">
<td class="company-info">
<div class="company-header">
<div class="company-title">{{opptys.opportunity_name.value_static}}</div>
<div class="company-logo">
<img src={{opptys.logo.value_static}} alt="N/A">
</div>
</div>
<div class="company-meta">
<div class="meta-item">ARR <span class="meta-value">{{opptys.arr.value_static}}</span></div>
<div class="meta-item">Current Stage <span class="meta-value">{{opptys.stage_name.value_static}}</span></div>
<div class="meta-item">Close Date <span class="meta-value">{{opptys.close_date.value_static}}</span></div>
<!-- <div class="meta-item">Priority <span class="meta-value">{{priority}}</span></div> -->
</div>
<div class="company-tags">
<span class="tag">{{opptys.type.value_static}}</span>
<!-- <span class="tag">{{opportunities.product.value}}</span>
<span class="tag">{{opportunities.opportunity_type.value}}</span> -->
</div>
<div class="company-footer">
<span>Qualified At: {{opptys.qualified_at.value_static}}</span>
</div>
<div class="company-footer">
<span>Next Steps: {{opptys.next_steps.value_static}}</span>
</div>
<div class="company-footer">
</div>
</td>
<td class="assessment-info">
<div class="criteria-section">
<div class="criteria-header">
<span>Assessment Criteria</span>
<span class="criteria-score">{{opptys.score.value_static}}/10</span>
</div>
<table class="criteria-table">
<thead>
<tr>
<th width="40">Status</th>
<th>Criteria</th>
<th width="40">Status</th>
<th>Criteria</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="status-indicator status-{{opptys.next_steps_populated.value_static}}"></span></td>
<td class="criteria-label">
<div class="tooltip-container">
Next Steps Populated
<span class="tooltip-icon">i</span>
<span class="tooltip-content">Have next steps been set?</span>
</div>
</td>
<td><span class="status-indicator status-{{opptys.roadmap_call_scheduled.value_static}}"></span></td>
<td class="criteria-label">Roadmap Call Scheduled</td>
</tr>
<tr>
<td><span class="status-indicator status-{{opptys.exec_sponsor_introduced.value_static}}"></span></td>
<td class="criteria-label">Exec Sponsor Introduced</td>
<td><span class="status-indicator status-{{opptys.poc_scoped.value_static}}"></span></td>
<td class="criteria-label">POC Scoped</td>
</tr>
<tr>
<td><span class="status-indicator status-{{opptys.realistic_close_date_based_on_stage.value_static}}"></span></td>
<td class="criteria-label">
<div class="tooltip-container">
Realistic Close Date Based On Stage
<span class="tooltip-icon">i</span>
<span class="tooltip-content">This flags if the opportunity is in "Qualifying" with a close date within 14 days, in "Scoping" with a close date within 7 days, or in "Evaluating" with a close date within 3 days</span>
</div>
</td>
<td><span class="status-indicator status-{{opptys.economic_buyer_identified.value_static}}"></span></td>
<td class="criteria-label">
<div class="tooltip-container">
Economic Buyer Identified
<span class="tooltip-icon">i</span>
<span class="tooltip-content">Have we identified who will be making the final buying decision?</span>
</div>
</td>
</tr>
<tr>
<td><span class="status-indicator status-{{opptys.decision_criteria_identified.value_static}}"></span></td>
<td class="criteria-label">Decision Criteria Set</td>
<td><span class="status-indicator status-{{opptys.pain_identified.value_static}}"></span></td>
<td class="criteria-label">Pain Identified</td>
</tr>
<tr>
<td><span class="status-indicator status-{{opptys.champion_identified.value_static}}"></span></td>
<td class="criteria-label">Champion Identified</td>
<td></td>
<td></td>
</tr>
<tr>
<td><span class="status-indicator status-{{opptys.security_sign_off.value_static}}"></span></td>
<td class="criteria-label">
<div class="tooltip-container">
Security Sign Off
<span class="tooltip-icon">i</span>
<span class="tooltip-content">Have we completed the security signoff process?</span>
</div>
</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
{{/result}}
</tbody>
</table>