diff --git a/components/l0/_palette_minimal.splash b/components/l0/_palette_minimal.splash new file mode 100644 index 0000000..2840791 --- /dev/null +++ b/components/l0/_palette_minimal.splash @@ -0,0 +1,40 @@ +// Mood delta: minimal — near-monochrome, hairlines, and air. +// +// 19 corpus cards declare `theme minimal` and none of them could realize. +// +// The brief is restraint, and the measurement this session says exactly what +// that must NOT mean: the emptiest mockup in an eight-way blind comparison lost +// all seven of its pairs, with the judges calling its space "void", "empty, not +// a pause", "unmotivated". Restraint is a confident hierarchy with nothing +// competing, not an absence of things. So this mood spends its budget on the +// type scale and takes it out of colour — one near-neutral ground, no accent +// hue at all, and dividers instead of fills. + +let l0_base = argb(255, 16, 17, 19) // #101113 a warm-neutral near-black +let l0_base_2 = argb(255, 6, 7, 8) // #060708 away from the panel +let l0_sheet = argb(255, 22, 23, 26) // #16171a over a map — opaque + +// Panels barely lift; a rule does the separating instead of a fill. Still the +// 1.12:1 the other moods land on, just carried by the hairline rather than +// the surface. +let l0_fill = argb( 12, 255, 255, 255) // #ffffff0c +let l0_hairline = argb( 46, 255, 255, 255) // #ffffff2e the load-bearing element +let l0_stroke = argb( 46, 255, 255, 255) // #ffffff2e +let l0_active = argb( 40, 255, 255, 255) // #ffffff28 + +// No accent hue. Emphasis comes from weight and size, which `emphasis` and the +// derive step already control — a mood that also shouted would be two knobs +// fighting over the same job. +let l0_bar = argb(255, 235, 235, 238) // #ebebee +let l0_bar_rail = argb( 30, 255, 255, 255) // #ffffff1e +let l0_go = argb(255, 235, 235, 238) // #ebebee +let l0_ondark = argb(255, 16, 17, 19) // #101113 ink on a lit fill + +// A wider ink range than dark: with colour withdrawn, the only thing left to +// build a hierarchy out of is how bright each level is. +let l0_text = argb(255, 255, 255, 255) // #ffffff +let l0_soft = argb(214, 255, 255, 255) // #ffffffd6 +let l0_dim = argb(130, 255, 255, 255) // #ffffff82 + +let radius_factor = 0.5 +let space_factor = 1.15 diff --git a/components/l0/_palette_vibrant.splash b/components/l0/_palette_vibrant.splash new file mode 100644 index 0000000..f9ab635 --- /dev/null +++ b/components/l0/_palette_vibrant.splash @@ -0,0 +1,39 @@ +// Mood delta: vibrant — a saturated ground and one loud accent. +// +// 24 corpus cards declare `theme vibrant` and none of them could realize: L0 +// admitted four moods and this was not one, so the card was refused before it +// reached a colour. The name is the whole brief — a card that commits to a hue +// rather than defaulting to neutral dark. +// +// Concatenated after the base and before `_derive`, so a factor moved here +// still propagates. Every value it does not name is inherited from dark. + +// A deep indigo, not black. The point of this mood is that the PAGE carries the +// colour, which is the one thing an accent axis cannot do — accent reaches a +// bar, a highlight and a button, and never a surface. +let l0_base = argb(255, 26, 20, 56) // #1a1438 +let l0_base_2 = argb(255, 12, 9, 30) // #0c091e deepens AWAY from the panel; + // a gradient ending on the card fill + // has separation zero. +let l0_sheet = argb(255, 34, 27, 70) // #221b46 over a map — opaque + +// Panels lift by the same ratio every shipped mood uses — measured at 1.12:1 +// in both dark and light. Stated as an alpha so it self-scales to the ground. +let l0_fill = argb( 30, 255, 255, 255) // #ffffff1e +let l0_hairline = argb( 38, 255, 255, 255) // #ffffff26 +let l0_active = argb( 66, 255, 255, 255) // #ffffff42 + +// The loud part. One hue, used only where direction and emphasis live, so the +// screen reads as committed rather than as a colour scheme. +let l0_bar = argb(255, 255, 122, 182) // #ff7ab6 +let l0_bar_rail = argb( 41, 255, 255, 255) // #ffffff29 +let l0_go = argb(255, 255, 122, 182) // #ff7ab6 +let l0_ondark = argb(255, 22, 10, 30) // #160a1e ink on a lit fill + +// Ink stays near-white: the ground is doing the colour work, and tinting the +// text as well is how a vibrant mood turns into an unreadable one. +let l0_text = argb(255, 255, 252, 255) // #fffcff +let l0_soft = argb(232, 255, 252, 255) // #fffcffe8 +let l0_dim = argb(158, 255, 252, 255) // #fffcff9e + +let radius_factor = 1.2