Color in Sanctuary is light coming through glass into a dark building. Stone, ink and lead stay quiet; glass carries the color, and is spent where it means something. The tables on this page are generated from the core’s palette. To see every color live, open the playground.
Flavors: the canonical hours
A flavor is the hour at which you stand in the nave. The building is the same; the light is not. Each flavor sets the stone, ink, lead and shadow, and re-tones every pigment so it stays legible.
| Flavor | Hour | Scheme | Default accent | Character |
|---|---|---|---|---|
lauds | Dawn | light | cobalt | First light on pale limestone. Ink on stone, colour pooling on the floor. |
vespers | Dusk | dark | amber | Candles lit against plum shadow. The warmest of the dark hours. |
compline | Night | dark | cobalt | Blue-slate stone after the doors close. The default flavor. |
matins | Deep night | dark | ruby | The crypt before any light. Near-black stone, jewel-deep glass. |
Matins plays each glass one tone deeper than the other dark flavors, so color stays jewel-like against black instead of pastel.
Stone, ink and lead
Stone is the surface, from the sunken floor to the most raised panel. Ink is the text, tinted against the stone on purpose: warm text on cool stone is what candlelight looks like, and it keeps long reading comfortable. Lead is the line between panes, a border that is structure, not decoration.
| Token | Lauds | Vespers | Compline | Matins |
|---|---|---|---|---|
--san-surface-sunken | #eae6dc | #180c13 | #070b14 | #010103 |
--san-surface | #f5f0e6 | #1f131a | #0d111b | #040408 |
--san-surface-raised-1 | #fbf6ec | #271a21 | #141923 | #09090f |
--san-surface-raised-2 | #fffaf0 | #2f2129 | #1b202b | #101016 |
--san-surface-raised-3 | #fffcf8 | #372931 | #222833 | #18181e |
--san-surface-raised-4 | #ffffff | #40323a | #2b303c | #202026 |
--san-surface-inverse | #1d1d2f | #f4e6d2 | #eee7d9 | #e2ded3 |
--san-text | #1d1d2f | #f4e6d2 | #eee7d9 | #e2ded3 |
--san-text-muted | #45455a | #c6b8a6 | #bdb7a9 | #b1aea3 |
--san-text-subtle | #616177 | #aa9c8a | #9e988b | #8d897f |
--san-text-disabled | #9596ae | #685b4b | #605a4e | #535047 |
--san-text-inverse | #f5f0e6 | #1f131a | #0d111b | #040408 |
--san-lead-soft | #dbd5c9 | #3c2a34 | #232a39 | #1a1a22 |
--san-lead | #b9b4a7 | #513d48 | #363d4d | #2d2d36 |
--san-lead-strong | #686358 | #77626d | #5b6374 | #54545e |
--san-lead-came | #231f15 | #090105 | #000108 | #000001 |
Pigments
Twelve hues, named for the glazier’s bench. The names that carry a chemical claim follow published analyses of medieval glass: blue from cobalt, red from copper, purple from manganese, yellow from silver stain applied to the surface. The rest are descriptive.
| Pigment | Hue | Note |
|---|---|---|
ruby | 24° | Copper ruby, the red of the great rose windows. |
ember | 47° | Red-orange, a coal seen through thick glass. |
amber | 70° | Deep silver stain, fired towards orange. |
gilt | 93° | Pale silver stain, the yellow of halos. |
verdure | 142° | Leaf green of foliage borders. |
viridian | 172° | Blue-green, cool and mineral. |
azure | 228° | Sky blue of clerestory grounds. |
cobalt | 259° | Cobalt blue, the signature of Gothic glazing. |
indigo | 281° | Blue-violet, glass at the last light. |
amethyst | 306° | Manganese purple. |
murrey | 342° | Murrey, the mulberry red-purple of glaziers. |
rose | 3° | Soft rose, flesh tones and dawn. |
Each pigment is a ramp of eleven tones, from 50 to 950. Lightness is fixed per tone across all hues, so swapping the accent never changes contrast. The raw ramps are for illustration and data; interfaces use the glass roles below. Every tone is listed in the token reference.
Glass roles
A flavor chooses which tone of a pigment plays each role. <p> stands for any pigment, so glass-cobalt-ink is the ink role of cobalt. The tones below are read from the palette.
| Role | Purpose | Lauds | Vespers | Compline | Matins |
|---|---|---|---|---|---|
glass-<p> | The color itself: fills, icons, accent text | 600 | 300 | 300 | 400 |
-lume | Light, not text: glow, hover, gradients | 400 | 200 | 200 | 300 |
-ink | Accent text: links, and any text on panes or sunken stone | 700 | 200 | 200 | 300 |
-pane | A tinted container | 100 | 800 | 800 | 900 |
-on | Content on the color | 50 | 950 | 950 | 950 |
-on-pane | Content on the pane | 800 | 100 | 100 | 200 |
The accent is one pigment’s glass under another name: accent, accent-lume, accent-ink and so on follow data-san-accent, or the flavor’s own accent when it is not set. The status colors work the same way, each with the same six roles:
| Token | Value |
|---|---|
--san-danger | glass-ruby |
--san-danger-lume | glass-ruby-lume |
--san-danger-ink | glass-ruby-ink |
--san-danger-pane | glass-ruby-pane |
--san-danger-on | glass-ruby-on |
--san-danger-on-pane | glass-ruby-on-pane |
--san-warning | glass-amber |
--san-warning-lume | glass-amber-lume |
--san-warning-ink | glass-amber-ink |
--san-warning-pane | glass-amber-pane |
--san-warning-on | glass-amber-on |
--san-warning-on-pane | glass-amber-on-pane |
--san-success | glass-verdure |
--san-success-lume | glass-verdure-lume |
--san-success-ink | glass-verdure-ink |
--san-success-pane | glass-verdure-pane |
--san-success-on | glass-verdure-on |
--san-success-on-pane | glass-verdure-on-pane |
--san-info | glass-azure |
--san-info-lume | glass-azure-lume |
--san-info-ink | glass-azure-ink |
--san-info-pane | glass-azure-pane |
--san-info-on | glass-azure-on |
--san-info-on-pane | glass-azure-on-pane |
The accessibility page computes every guarantee; in short: ink is safe for text on every stone, on on the glass and on-pane on the pane. lume carries no text guarantee: it is light, so use it for glows, hover and gradients, never for words.
Glazing
Glazing is how an accent is held, independent of which accent it is. It is set with data-san-glazing.
| Glazing | Name | Technique and rendering |
|---|---|---|
pot-metal | Pot-metal (default) | Glass coloured through its whole body. Solid, opaque accent. |
flashed | Flashed | A thin skin of colour over clear glass. Translucent, glowing accent. |
grisaille | Grisaille | Monochrome glass with a coloured border. Accent as a line only. |
Pot-metal gives the clearest hierarchy. Flashed suits interfaces over imagery or wallpapers. Grisaille suits dense tools where color must be rare. Compare them in the playground.
Windows
The window is the light that is cast: hero backgrounds, progress fills, glows, illustration. It never replaces the accent on a control, and it always follows the accent, so cast light and controls tell one color story. It is set with data-san-window.
| Window | Name | Light from | Note |
|---|---|---|---|
mono | Mono (default) | one pigment | Pane, glass and lume of the current accent. The default. |
harmonic | Harmonic | accent and neighbours | The accent leaded with the pigments on either side of it. |
Named windows
Five fixed gradients exist for a single place, such as a cover or an illustration (background: var(--san-window-rosace)). They do not follow the accent and are not a theme switch.
| Window | Name | Pigments | Character |
|---|---|---|---|
window-rosace | Rosace | ruby, murrey, cobalt | Ruby against cobalt, the rose window. |
window-jesse | Jesse | verdure, gilt, ruby | Vine, gold and blood: the Jesse tree. |
window-lancet | Lancet | viridian, azure, indigo | A tall cool window, all blues. |
window-aureole | Aureole | gilt, amber, ember | Halo light, gold falling to coal. |
window-vesperal | Vesperal | indigo, amethyst, rose | The west window at sunset. |