Customer Support and CSAT
Customer support · Light · Single page
A support dashboard that does not look like a ticket queue. The branding is consistent enough that it reads as a product rather than a report.
What makes it work
- A lilac and pink palette with a paw-print mark, applied to headers, chips, and chart series alike.
- Annotation copy sits beside each panel explaining what to look at, which is rarer than it should be.
- CSAT is shown as a distribution rather than a single average, so the shape of the feedback stays visible.
- A reminder that internal-facing dashboards can carry a brand too.
The views
This dashboard is a single scrolling page, shown in full below.
See it live
Open the live dashboard to click through it yourself. No Holistics account needed.
Theme code
The theme this dashboard actually uses, written out as a reusable PageTheme. Paste it into a
.theme.aml file under Development > Library > Themes to reuse it across your own dashboards,
or inline it as a single dashboard's theme: property. Chart colour palettes are set
separately, so they are not included here.
customer_support_csat_theme.theme.aml
PageTheme customer_support_csat_theme {
title: "Pawductive Purple"
background {
bg_image: "linear-gradient(50deg, rgba(136, 117, 169, 0.2) 0%, rgba(239, 68, 68, 0.1) 100%)"
}
canvas {
border {
border_color: "#cec9d9"
border_style: "solid"
border_width {
top: 1
left: 1
right: 1
bottom: 1
}
border_radius {
top_left: 8
top_right: 8
bottom_left: 8
bottom_right: 8
}
}
shadow: "sm"
opacity: 1
background {
bg_color: "rgba(255, 255, 255, 0.6)"
}
}
block {
text {
font_size: 14
font_color: "#6b6880"
font_style: "normal"
font_family: "Geist"
font_weight: "normal"
}
label {
font_size: 13
font_color: "#3d3c4f"
font_style: "normal"
font_family: "Geist"
font_weight: "semibold"
}
border {
border_color: "#cec9d9"
border_style: "solid"
border_width {
top: 1
left: 1
right: 1
bottom: 1
}
border_radius {
top_left: 8
top_right: 8
bottom_left: 8
bottom_right: 8
}
}
shadow: "sm"
opacity: 1
padding {
top: 16
left: 16
right: 16
bottom: 16
}
background {
bg_color: "#ffffff"
}
}
viz {
table {
header {
bg_color: "#f8f7fa"
font_size: 12
font_color: "#3d3c4f"
font_weight: "semibold"
}
general {
bg_color: "#ffffff"
font_size: 13
font_color: "#3d3c4f"
font_family: "Geist"
hover_color: "#f1eff5"
banding_color: "#f8f7fa"
grid_color: "#eae7f0"
border_color: "#cec9d9"
border_width: 1
}
sub_title {
font_size: 11
font_color: "#6b6880"
font_weight: "normal"
}
sub_header {
bg_color: "#f1eff5"
font_size: 12
font_color: "#6b6880"
font_weight: "normal"
}
}
}
}
The theme is paired with custom CSS, which lives beside it rather than inside it. See Custom CSS for where it goes.
Custom CSS
/* ── Fonts ──────────────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600;700&family=Geist:wght@400;500;600;700&display=swap');
/* ── Typography hierarchy (H1 > H2 > H3 > H4 > p) ─────────────── */
.dac-text-block h1 {
font-family: 'Lora', Georgia, serif !important;
font-size: 36px !important;
font-weight: 700 !important;
color: #3d3c4f !important;
line-height: 1.2 !important;
margin: 0 0 8px 0 !important;
}
.dac-text-block h2 {
font-family: 'Lora', Georgia, serif !important;
font-size: 28px !important;
font-weight: 600 !important;
color: #3d3c4f !important;
line-height: 1.3 !important;
margin: 0 0 6px 0 !important;
}
.dac-text-block h3 {
font-family: 'Lora', sans-serif !important;
font-size: 20px !important;
font-weight: 600 !important;
color: #6b6880 !important;
line-height: 1.4 !important;
margin: 0 0 4px 0 !important;
}
.dac-text-block h4 {
font-family: 'Geist', sans-serif !important;
font-size: 16px !important;
font-weight: 600 !important;
color: #3d3c4f !important;
line-height: 1.5 !important;
margin: 0 0 2px 0 !important;
}
.dac-text-block p {
font-family: 'Geist', sans-serif !important;
font-size: 14px !important;
font-weight: 400 !important;
color: #6b6880 !important;
line-height: 1.6 !important;
margin: 0 !important;
}
/* ── Viz block labels ───────────────────────────────────────────── */
.dac-viz-block-label {
font-family: 'Geist', sans-serif !important;
font-size: 16px !important;
font-weight: 600 !important;
color: #3d3c4f !important;
letter-spacing: -0.1px !important;
padding: 16px 8px 12px 8px !important;
}
/* ── KPI value styling ──────────────────────────────────────────── */
.kpi-value {
font-family: 'Lora', Georgia, serif !important;
font-size: 32px !important;
font-weight: 700 !important;
color: #3d3c4f !important;
letter-spacing: -0.5px !important;
line-height: 1 !important;
}
.kpi-label {
font-family: 'Geist', sans-serif !important;
font-size: 12px !important;
font-weight: 600 !important;
color: #6b6880 !important;
text-transform: uppercase !important;
letter-spacing: 0.05em !important;
}
/* ── Filter styling ─────────────────────────────────────────────── */
.dm-filter-form {
border-color: #cec9d9 !important;
border-radius: 8px !important;
font-family: 'Geist', sans-serif !important;
}
.dm-filter-form mark.active {
color: #8a79ab !important;
background-color: #dfd9ec !important;
font-weight: 500 !important;
border-radius: 4px !important;
padding: 2px 6px !important;
}