Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions components/l0/_palette_minimal.splash
Original file line number Diff line number Diff line change
@@ -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
39 changes: 39 additions & 0 deletions components/l0/_palette_vibrant.splash
Original file line number Diff line number Diff line change
@@ -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