Skip to content

Report Themes

aryehcitron@gmail.com edited this page Nov 7, 2026 · 7 revisions

Report Themes

A report opens in a light or a dark theme (5.0.0). Every colour it draws comes from a set of CSS custom properties, its tokens, so a stylesheet of your own can restyle it by setting them again.

Light and dark

A report follows the system's light or dark setting, and keeps following it as it changes, until the reader picks a theme with the switch at the right of the report's title. The pick then holds, over a reload and over the system's setting. The theme is chosen in the page's head, before anything is drawn, so the page never flashes the other theme.

The pick is the one thing a report keeps in the browser's storage, in local storage as kronikol.theme. Where the browser refuses the page its storage, the pick holds while the page is open, over the system's setting too, and the next load follows the system's setting again.

The page's link holds the filters: the search (q), status, deps, depx, depmode, depstates, hp, hpx, tags, tagx, tagmode, tagstates, dur and pctl (Generated Reports › Deep links), beside a scenario's address, which opens the Features tab, from 5.2.0 the tab (tab=) and the Features tab's view (view=), and from 5.11.0 the Search tab's state (type=, in=, s=, o=, p=) and the match a search result went to (hit=), each written only where it says something the link would not say without it. The query builder lists the searches run since the page opened, in memory only. The browser's history of the page keeps where the reader was scrolled and what had the focus, for Back, Forward and a reload (Generated Reports › Back and Forward). Nothing else is kept: the display toggles, the payload controls and what is open start from the report's settings on each load (Report Configuration › Toggle Default Start States).

A copy of the page opened without its scripts still follows the system's setting, through a prefers-color-scheme block in the token sheet.

The labs page (TestRunReport.labs.html) and the Specifications report take the theme the same way, with the same switch on their title line. From 5.11.0 the search button sits left of the switch on the report and the Specifications report; the labs page, which has nothing to search, has none.

Diagrams

The page draws a diagram in the theme's colours: participants, arrows, notes, step bars, lanes and labels read their colours from the --dg-* tokens. A copy of a diagram (the right-click menu's Copy, Save and Open in new tab, as SVG or PNG) carries the look in the light theme's colours, whichever theme the page shows, so a pasted diagram reads on a white document.

From 5.8.0 a loop (a run of identical calls collapsed into loop ×N) and the Setup box take the theme's colours too: a loop is a rounded box shaded --dg-loop with a thin --dg-loop-edge line, the tab holding the word "loop" shaded --dg-loop-tab, and the Setup box is a rounded frame shaded --dg-setup with a thin --dg-setup-edge line. A Setup box in a colour you name with SetupHighlightColor keeps that colour in both themes. A diagram drawn with your own PlantUmlTheme keeps the theme's loops.

From 5.35.0 a failed answer's reason, drawn in the note on its return, is painted --dg-fail-ink, the report's own failure red (--kron-fail). The engine draws it firebrick, which a diagram drawn away from the page keeps.

Restyling a report with its tokens

Set the tokens again in a sheet of your own, given as CustomCss (see Report Configuration). That sheet comes after the report's own sheets, so its values win. Set the light values on :root, and the dark values twice, as the token sheet does: on :root[data-theme="dark"], which the script in the page's head sets for a reader who picked dark and for a page following a dark system setting, and again on :root:not([data-theme]) under prefers-color-scheme: dark, for a copy of the page opened without its scripts. A value set on :root alone shows in the light theme only.

:root {
    --kron-accent: #0b6e4f;
    --kron-selected: #d7efe5;
    --kron-selected-ink: #0a5c42;
}
:root[data-theme="dark"] {
    --kron-accent: #5fd0a8;
    --kron-selected: #17362b;
    --kron-selected-ink: #a8e6cf;
}
@media (prefers-color-scheme: dark) {
    :root:not([data-theme]) {
        --kron-accent: #5fd0a8;
        --kron-selected: #17362b;
        --kron-selected-ink: #a8e6cf;
    }
}

Keep text at 4.5:1 or more on the grounds it sits on (--kron-card, --kron-ground, --kron-strip), in both themes.

From 5.11.0 the words a search result takes you to are marked in two tokens, in the page and in the diagrams it draws: --kron-mark, the ground under the matched words, and --kron-mark-edge, the line under them and the outline of the one the result named (Search and Filter Syntax › The search and its results). The defaults keep the edge at 3:1 or more against a payload's note, an event's note, a step bar and the card, and every ink a marked word is drawn in at 4.5:1 on the ground, in both themes. Keep that if you set them.

A sheet written against 4.x's rules or colours may no longer apply where 5.0.0 changed the markup: the features and their steps, the failure diff, the parameter table, the run band, the filter rows and the payload controls. Where it still applies, it paints the same colours in both themes. Set the tokens instead. Migrating to v5: the report lists the classes and functions 5.0.0 took out.

The violet theme

The Specifications report's default sheet, Stylesheets.VioletThemeStyleSheet (the default of HtmlSpecificationsCustomStyleSheet), is a theme written this way. It sets the report's tokens for the light and the dark theme in the three blocks above, adds a few variables of its own (--violet-card, --violet-rail, --violet-edge, --violet-solid, --violet-solid-hover) for its cards and its solid violet, and then gives a short list of rules their colours from those variables: the violet cards, the hover edges, and the chosen controls in solid violet under white. Set HtmlSpecificationsCustomStyleSheet to null for the Specifications report in the default blue.

Token reference

Every token, with its value in each theme. The page tokens colour the report itself; the diagram tokens colour what the page draws in a diagram.

Page tokens (--kron-*)

Token Light Dark
--kron-accent #2559c7 #7ea6f2
--kron-selected #dce8fb #1f3254
--kron-selected-ink #1d4fb0 #b0c9fb
--kron-selected-edge #6a8fd9 #5b82cf
--kron-accent-rail rgba(37, 89, 199, .18) rgba(126, 166, 242, .30)
--kron-hover #edf1f8 #222b38
--kron-ground #ebeef4 #0e131a
--kron-card #ffffff #171d26
--kron-strip #f8fafd #1b222c
--kron-strip-edge #d3d9e3 #323c4b
--kron-field #f2f5f9 #1f2732
--kron-quiet #f7f9fc #1b222c
--kron-quiet-edge #d3d9e3 #323c4b
--kron-hairline #d0d7e2 #343e4d
--kron-hairline-soft #e2e7ee #262f3b
--kron-divider #cdd4df #384354
--kron-divider-soft #dde2ea #2b3440
--kron-control-border #aeb7c6 #4a5568
--kron-select-border #7a8496 #748093
--kron-dot #8a94a5 #7d899b
--kron-shadow rgba(20, 30, 60, .06) rgba(0, 0, 0, .45)
--kron-card-shadow 0 1px 2px rgba(20, 30, 60, .07), 0 2px 6px rgba(20, 30, 60, .05) 0 1px 2px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .3)
--kron-panel #f4f6fa #12181f
--kron-ink #242b36 #e4e9f0
--kron-ink-soft #4a5361 #c5cdd8
--kron-ink-quiet #545c6a #b3bcc8
--kron-muted #5b6474 #a0aab7
--kron-label #5f6878 #9ba5b3
--kron-label-soft #616a7a #98a2b0
--kron-faint #626b7a #949eac
--kron-on-solid #ffffff #ffffff
--kron-on-accent #ffffff #10161e
--kron-pass #276c44 #62cd8f
--kron-pass-soft #e6f3ec #15301f
--kron-pass-ring #3f9a62 #3fa66a
--kron-fail #b3372e #f28b81
--kron-fail-soft #fbecea #3b1d1b
--kron-fail-edge #efc7c2 #6e302b
--kron-fail-ink #7c2a24 #f6b3ab
--kron-fail-shadow rgba(120, 30, 25, .25) rgba(0, 0, 0, .45)
--kron-fail-solid #b3372e #b8433a
--kron-exclude-soft #fbf1f0 #351f1d
--kron-exclude-edge #e6c9c5 #6a3934
--kron-exclude-ink #8a4a43 #eea69d
--kron-exception-soft #f8dcd9 #4a2220
--kron-warn #8a5a17 #e5b066
--kron-warn-soft #fbf3e7 #2d2415
--kron-warn-edge #ecd3ae #66502a
--kron-mark #fff1a8 #4a3800
--kron-mark-edge #9a6700 #d29922
--kron-skip #5b6170 #a9b1be
--kron-skip-soft #eef0f3 #262e39
--kron-bypass #285fba #8ab1f6
--kron-bypass-soft #e8f0fc #1c2a45
--kron-code-bg #e9edf3 #262f3c
--kron-track #edf0f5 #232b37
--kron-prop-key #7d3c98 #c99be3
--kron-prop-val #1a5276 #8fc3ec
--kron-overlay rgba(0, 0, 0, .4) rgba(0, 0, 0, .6)
--kron-font -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Roboto, "Helvetica Neue", Arial, sans-serif (the light value)
--kron-mono ui-monospace, SFMono-Regular, "SF Mono", Menlo, "Cascadia Mono", Consolas, "Liberation Mono", monospace (the light value)
--kron-fs-label 11px (the light value)
--kron-fs-meta 12px (the light value)
--kron-fs-control 13px (the light value)
--kron-fs-body 14px (the light value)
--kron-fs-feature 16px (the light value)
--kron-fs-title 22px (the light value)
--kron-label-track .06em (the light value)

Diagram tokens (--dg-*)

Token Light Dark
--dg-bg #ffffff #171d26
--dg-ink #242b36 #e4e9f0
--dg-ink-soft #5b6474 #aab3c0
--dg-line #4a5361 #8792a3
--dg-participant #e9eef6 #253041
--dg-participant-edge #b6c2d5 #4d5d76
--dg-lifeline #cdd5e0 #334052
--dg-note #fdf6e4 #2b2618
--dg-note-edge #b9a57a #75653f
--dg-card-edge #e0cf9f #5e5236
--dg-event #eee1f7 #2a2140
--dg-event-edge #b48cc8 #7d5c9c
--dg-event-card-edge #cfb6e6 #5d4780
--dg-pass #e3f1e8 #15301f
--dg-pass-edge #8cbf9f #33724d
--dg-fail #fbe8e6 #3b1d1b
--dg-fail-edge #dc9f97 #7c3b34
--dg-fail-ink #b3372e #f28b81
--dg-bar #2f3b4f #3d4d69
--dg-step #e9eef6 #222c3a
--dg-step-edge #c4cfdf #3b4a60
--dg-step-ink #2f3b4f #dbe3ee
--dg-step-table #ffffff #131a24
--dg-loop #f4f7fb #1d2632
--dg-loop-edge #cdd5e0 #334052
--dg-loop-tab #e9eef6 #253041
--dg-setup #f6f6f6 #1a212b
--dg-setup-edge #d5dbe4 #2c3646
--dg-flame-fill 58% 93% 26% 21%
--dg-flame-edge 42% 54% 48% 60%
--dg-flame-hover 62% 87% 30% 27%
--dg-activity #eef3fc #1d2638
--dg-activity-edge #5f6878 #7d899b
--dg-lane #c9d1de #3a4656
--dg-http #438dd5 #6aa5e4
--dg-http-fill #2b6cb0 (the light value)
--dg-db #0e7c86 #45b3bf
--dg-db-fill #0b6c75 (the light value)
--dg-db-edge #09616a #2f8f99
--dg-msg #9b59b6 #c18fdc
--dg-msg-fill #8e44ad (the light value)
--dg-person #08427b #2f6db0
--dg-icon #ffffff #222b38
--dg-icon-edge #8a94a5 #7d899b
--dg-icon-ink #5b6474 #c5cdd8
--dg-badge #2f3b4e #c5cdd8
--dg-badge-ink #ffffff #171d26

Home · 🔍 Search this wiki Full-text search across every page. The “Pages” list above matches page and heading names, not page content.


Demo


Getting Started

Common Tasks

Integration Guides

Uninstrumentable / polyglot backends

Extensions

Configuration

Features

Reference

Clone this wiki locally