Finance Overview
Revenue & finance · Light · Single page
Finance reporting that still looks like a designed document. Useful when the numbers have to be exact and the page has to be presentable at the same time.
What makes it work
- A profit and loss waterfall shows how the top line becomes the bottom line in one chart.
- The statement table carries inline sparklines, so every row has its own trend without a second chart.
- A cash runway panel sits apart from the statement, which stops a forward-looking number from being read as history.
- Violet branding is applied to headers and accents only. The numbers stay in neutral text.
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.
finance_overview_theme.theme.aml
PageTheme finance_overview_theme {
background {
bg_color: "#E0D9FF"
}
canvas {
border {
border_color: "#B8C2DE"
border_style: "solid"
border_width {
top: 2
left: 2
right: 2
bottom: 2
}
border_radius {
top_left: 12
top_right: 12
bottom_left: 12
bottom_right: 12
}
}
shadow: "md"
opacity: 1
background {
bg_color: "#FFFFFF"
}
}
block {
text {
font_size: 14
font_color: "#1B2559"
font_style: "normal"
font_family: "Plus Jakarta Sans"
font_weight: "normal"
}
label {
font_size: 14
font_color: "#1B2559"
font_style: "normal"
font_family: "Plus Jakarta Sans"
font_weight: "semibold"
}
border {
border_color: "#E2E8F0"
border_style: "solid"
border_width {
top: 1
left: 1
right: 1
bottom: 1
}
border_radius {
top_left: 12
top_right: 12
bottom_left: 12
bottom_right: 12
}
}
shadow: "sm"
opacity: 1
padding {
top: 20
left: 20
right: 20
bottom: 20
}
background {
bg_color: "#FFFFFF"
}
}
viz {
table {
header {
bg_color: "#7638FF"
font_size: 14
font_color: "#FFFFFF"
font_weight: "semibold"
}
general {
bg_color: "#D3C4FF"
font_size: 14
font_color: "#1B2559"
font_family: "Plus Jakarta Sans"
hover_color: "#F5F0FF"
banding_color: "#FFFFFF"
grid_color: "#C9D0E8"
border_color: "#C9D0E8"
border_width: 1
}
sub_title {
font_size: 14
font_color: "#FFFFFF"
font_weight: "normal"
}
sub_header {
bg_color: "#F0EBFF"
font_size: 14
font_color: "#1B2559"
font_weight: "semibold"
}
}
}
}
The theme is paired with custom CSS, which lives beside it rather than inside it. See Custom CSS for where it goes.
Custom CSS
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap');
/* ── Text block reset ─────────────────────────────────────────────────── */
.dac-text-block {
background-color: transparent !important;
box-shadow: none !important;
border: none !important;
}
/* H1 — Section label: uppercase purple */
.dac-text-block h1 {
font-family: 'Plus Jakarta Sans', sans-serif !important;
font-size: 20px !important;
font-weight: 700 !important;
letter-spacing: 2px !important;
text-transform: uppercase !important;
color: #7638FF !important;
margin: 0 0 6px 0 !important;
line-height: 1.2 !important;
}
/* H2 — Dashboard / section title */
.dac-text-block h2 {
font-family: 'Plus Jakarta Sans', sans-serif !important;
font-size: 26px !important;
font-weight: 700 !important;
color: #1B2559 !important;
margin: 0 0 4px 0 !important;
letter-spacing: -0.3px !important;
}
/* H3 — Hero KPI display number */
.dac-text-block h3 {
font-family: 'Space Grotesk', sans-serif !important;
font-size: 48px !important;
font-weight: 700 !important;
color: #1B2559 !important;
margin: 0 0 4px 0 !important;
line-height: 1.2 !important;
letter-spacing: -1.5px !important;
text-align: left !important;
}
/* P — Supporting / description text */
.dac-text-block p {
font-family: 'Plus Jakarta Sans', sans-serif !important;
font-size: 14px !important;
color: #6B7A99 !important;
line-height: 1.6 !important;
margin: 0 !important;
}
/* ── Section header with accent bar ─────────────────────────────────── */
.dac-text-block .section-header {
display: flex;
align-items: center;
gap: 12px;
}
.dac-text-block .accent-bar {
width: 3px;
height: 24px;
background: #7638FF;
border-radius: 2px;
flex-shrink: 0;
}
/* ── Section separator line ──────────────────────────────────────────── */
/* Usage in a Text Block: <hr> */
.dac-text-block hr {
border: none !important;
border-top: 1.5px solid #E2E8F0 !important;
margin: 0 !important;
}
/* ── KPI metric value ────────────────────────────────────────────────── */
.h-kpi-metric-kpi {
font-family: 'Space Grotesk', sans-serif !important;
font-size: 42px !important;
font-weight: 700 !important;
color: #1B2559 !important;
letter-spacing: -1px !important;
}
/* KPI metric label (sits below the number) */
.h-kpi-metric-label {
font-family: 'Plus Jakarta Sans', sans-serif !important;
font-size: 14px !important;
font-weight: 400 !important;
line-height: 3 !important;
color: #6B7A99 !important;
margin-bottom: 16px !important;
}
/* ── Chart / viz block title ─────────────────────────────────────────── */
.dac-viz-block-label {
font-family: 'Plus Jakarta Sans', sans-serif !important;
font-size: 16px !important;
font-weight: 600 !important;
font-style: normal !important;
color: #1B2559 !important;
letter-spacing: -0.2px !important;
display: flex !important;
align-items: center !important;
padding-top: 16px !important;
padding-bottom: 12px !important;
padding-left: 8px !important;
}
.dac-canvas {
background-color: #FFFFFF !important;
}
/* ── P&L Table: section separator on parent rows only ───────────────── */
/*
* Parent rows (Total Revenue, COGS, Gross Profit…) use a BAR sparkline.
* Sub-rows (SaaS Subscriptions…) use a LINE sparkline.
* :has([data-ci="ci-sparkline-bar"]) reliably targets only parent rows.
*/
/* Background on the row itself — covers full width including absolute-positioned cells */
.ag-row:has([data-ci="ci-sparkline-bar"]) {
background-color: #F7F5FF !important;
width: 100% !important;
min-width: 100% !important;
}
/* Border-top and font on the cells */
.ag-row:has([data-ci="ci-sparkline-bar"]) .ag-cell {
border-top: 1.5px solid #C9D0E8 !important;
font-weight: 600 !important;
color: #1B2559 !important;
background-color: transparent !important;
}
/* Remove top border from the very first parent row (Total Revenue) */
.ag-row-first:has([data-ci="ci-sparkline-bar"]) .ag-cell {
border-top: none !important;
}
/* Right pane — parent row background */
.ag-center-cols-container [role="row"][row-index="0"],
.ag-center-cols-container [role="row"][row-index="4"],
.ag-center-cols-container [role="row"][row-index="5"],
.ag-center-cols-container [role="row"][row-index="6"],
.ag-center-cols-container [role="row"][row-index="11"],
.ag-center-cols-container [role="row"][row-index="14"] {
background-color: #F7F5FF !important;
}
/* Font on all parent rows */
.ag-center-cols-container [role="row"][row-index="0"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="4"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="5"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="6"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="11"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="14"] .ag-cell {
font-weight: 600 !important;
color: #1B2559 !important;
}
/* Border-top on all except first row */
.ag-center-cols-container [role="row"][row-index="4"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="5"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="6"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="11"] .ag-cell,
.ag-center-cols-container [role="row"][row-index="14"] .ag-cell {
border-top: 1.5px solid #C9D0E8 !important;
}