Teyvat PaletteTeyvat colour cards
Scene library
GitHub
Gallery
Liloupar's Cell under the Skylight
SumeruDayHiddenWarm and moistSheltering

Liloupar's Cell under the Skylight

Palette

Click a swatch to copy its HEX; hover for the OKLCH value.

Reconstructed gradient

The gradient distilled from the scene, unrolled left to right by stop; the authored angle is 180° (used by the hero and exports), while gallery cards share a uniform 135° sweep.

0%f1efe020%60a47342%44563f60%1d453e82%272819100%151713

Why it works

Under a light with no colour of its own, the picture's colour is added by the things it lands on: the core of Liloupar's skylight, 3,311 pixels, measures L 0.99 / chroma 0.007 — and inside one frame it grows three hues, the lit canopy at 152° / chroma 0.101, the knee-high mist at 181° / 0.047, and the plain along the bottom edge at 109° / 0.025. The cavern walls it never reaches stop at L 0.20 / chroma 0.007, the same reading as the light itself. So when building a palette for a dark scene, the hue list should not start from the light source but from how many things will stop it: colouring the light only dyes every surface into one family, while arranging several different things in its path is what buys you several.

01

0.007 coming in, 0.007 where it never reaches

The skylight's core, 3,311 pixels, sits at L 0.99 / chroma 0.007, and 3,803 of the brightest 4000 pixels are L 1.00 / chroma 0.004. The left cavern wall, 64,512 pixels, is L 0.20 / chroma 0.007; the right wall, 58,212 pixels, L 0.20 / 0.012. A zero-chroma light and the darkness it will never touch read as the same number on the chroma axis — every colour in between was collected by the materials, and none of it was carried in by the light. To decide whose colour a picture is, measuring the source itself tells you nothing; measure its chroma on the way in and its chroma where it doesn't reach, and if the two match, the hue list was written by the materials.

02

Three things stop one beam and return three hues

The lit canopy is L 0.66 / chroma 0.101 / 152° with Cmax 0.157; the knee-high mist L 0.36 / 0.047 / 181°; the plain along the bottom edge L 0.27 / 0.025 / 109° — hues spread across 72°, chroma spread by a factor of 4, and only one light in the room. Set that against Great Hall of Truths by Brazier Light: there the light itself has colour, so 66.79% of the area is dyed into the single family 210°–315°, and even the whole floor is only a pale version of the fire's warmth (chroma 0.032). If the light has colour the picture is largely one family; if it doesn't, how many families the picture gets is decided by the materials. For a dark scene rich in hue, don't tune the lamp's colour — arrange what the beam runs into on its way.

03

53.76% black, and not a cent of ceiling tax paid

Achromatic covers 53.76% and the chroma median is pressed to 0.023, the lowest of these four, yet the ceiling still stands at 0.161 — against 0.156 for The Rain's End in Green Shade at 8.37% achromatic and 0.164 for Great Hall of Truths by Brazier Light at 9.37%, a spread of just 0.008 while the grey swings by a factor of 6.4. Group W, "the ceiling is a constant", measured a spread of 0.011 across 35 times as much grey in Natlan; here the upper bound on achromatic is pushed from that batch's 41.61% to 53.76% and the conclusion holds (the two batches' ceilings are not in the same bracket — 0.199–0.210 there, 0.156–0.164 here; the constant belongs to the batch, not to the library). What matters is what this grey is: the cavern wall at L 0.20 / chroma 0.007 against the canopy at L 0.62 / 0.087, lightness and chroma falling together, which by the R-group test makes it unlit material rather than air — and that kind of grey is not taxed. Before laying down a large field of black, confirm it is dark because nothing lights it, not because a sheet of haze stands in front of it.

Take these colours with you

CSS variables, a Tailwind v4 theme or SVG — one click to copy into your project.

/* Liloupar's Cell under the Skylight · Liloupar's Cell under the Skylight — Teyvat Palette */
:root {
  --skylight: oklch(0.95 0.02 103); /* Skylight White #f1efe0 */
  --lit-canopy: oklch(0.66 0.101 152); /* Lit Canopy #60a473 */
  --trunk-shade: oklch(0.43 0.043 138); /* Trunk Shade Green #44563f */
  --knee-mist: oklch(0.36 0.047 181); /* Knee-high Mist #1d453e */
  --plain-olive: oklch(0.27 0.025 109); /* Plain Olive #272819 */
  --cavern-black: oklch(0.2 0.007 121); /* Cavern Black #151713 */
  --gradient-liloupars-cell: linear-gradient(180deg, oklch(0.95 0.02 103) 0%, oklch(0.66 0.101 152) 20%, oklch(0.43 0.043 138) 42%, oklch(0.36 0.047 181) 60%, oklch(0.27 0.025 109) 82%, oklch(0.2 0.007 121) 100%);
}

A 1080×1350 PNG carrying the scene, its palette and every value — save it and post it as is.