Merge palette-darker-teal: deep-teal secondary, an owned spectral mid, and an overlay trace that clears the indicator floor
This commit is contained in:
@@ -416,14 +416,34 @@ against the WCAG tests — §2.1):
|
||||
| Role | Pastel | Starting RGB (hex) | Job |
|
||||
|---|---|---|---|
|
||||
| `accent/primary` | pastel lime green | `~176,224,152` (`#B0E098`) | the live/active/selected signal — the eye-magnet |
|
||||
| `accent/secondary` | pastel teal | `~132,214,208` (`#84D6D0`) | categorical role A (non-active zones, a second cluster) |
|
||||
| `accent/secondary` | pastel teal | `~132,214,208` (`#84D6D0`) *(superseded, see below)* | categorical role A (non-active zones, a second cluster) |
|
||||
| `accent/tertiary` | pastel purple | `~194,170,232` (`#C2AAE8`) | categorical role B (tertiary zones, a distinct affordance class) |
|
||||
| `accent/hot` | brighter primary tint | `~200,236,178` (`#C8ECB2`) | hover / live / drag feedback (a lighter pastel-lime) |
|
||||
|
||||
**Locked values, where they diverge from the starting table (2026-07-31).** `accent/secondary`
|
||||
darkened to `#38A8A0` (same hue ~176°, same saturation, lightness 0.68 → 0.44). Its **binding
|
||||
limiter** — the pair that stops it going darker — is the velocity-curve trace on a
|
||||
*hover-lightened* `bg/cell` at **3.03:1** against a 3:1 floor, tighter than either the AA 4.5:1
|
||||
text-on-fill pair (4.91:1 on `bg/base`) or the indicator floor on rest `bg/cell` (3.94:1). ONE
|
||||
new Role was added past the original three, since "exactly three accents" is no longer a
|
||||
constraint: `overlay/trace` `#816AA6`, a muted violet for marks drawn *over* an accent fill (see
|
||||
§the two-neighbour problem below). The spectral ramp's mid stop also became its own value —
|
||||
the original pastel teal `#84D6D0` — but as a private constant, not a `Role`.
|
||||
|
||||
**The two-neighbour problem** (rule + numbers owned by `src/core/ui/CLAUDE.md`; the design
|
||||
consequence is recorded here). A mark drawn *over* an accent fill has to read against the fill
|
||||
*and* the surface behind it, which caps *any* single value at ≈3.07:1 against both. Two
|
||||
consequences shape the design rather than the palette: such a role is confined to the band it
|
||||
was picked for, and a **state** of that mark cannot be expressed as a hotter color — every
|
||||
value that clears the ceiling sits within 1.05:1 of every other, so the grabbed envelope handle
|
||||
signals by **size and a punched-out core** instead. That deliberately inverts the kit's
|
||||
"brighter = hotter" convention in this one band, because over a light fill a brighter tint is a
|
||||
*lower*-contrast tint (`accent/hot` measures 1.15:1 against the lime).
|
||||
|
||||
These are light-ish, low-saturation tints. On the **REAPER-grey surfaces** (`bg/cell` ≈
|
||||
`#3a3a3a`) they still clear **AA-large (3:1)** and the **state-indicator** floor — but the
|
||||
margin is **much smaller than it was on near-black** (roughly ~6:1–7:1 on grey vs. ~15:1
|
||||
on `#12121x`). This is a real DS-2-revision tension: **the greyer background pulls the
|
||||
margin is **much smaller than it was on near-black** (~7.6:1 primary / ~5.5:1 tertiary /
|
||||
~3.9:1 the darkened secondary on grey, vs. ~15:1 on `#12121x`). This is a real DS-2-revision tension: **the greyer background pulls the
|
||||
pastels toward the floor** at the same time the "keep it soft" rule pulls them away from
|
||||
saturation. Approach from the **soft side** (§2.1) — keep them as pastel as possible while
|
||||
still clearing the floor on **grey, not near-black** — but **if any pastel used as a state
|
||||
@@ -470,9 +490,12 @@ the rest of the UI. Concretely: the ramp runs **pastel-lime (primary, low) → p
|
||||
(secondary, mid) → pastel-purple (tertiary, high)** as a three-stop gradient through the
|
||||
accent constants (or a slightly wider pastel arc that passes *through* those three anchor
|
||||
points), keeping every stop in the pastel band. This ties the spectrum to the palette:
|
||||
the same three hues that mean "live / category A / category B" elsewhere are the endpoints
|
||||
and midpoint of the spectrum here, so the strip reads as an extension of the accent system,
|
||||
not a separate neon flourish. The **active** zone still lifts to `accent/primary` +
|
||||
the same hues that mean "live / category A / category B" elsewhere anchor the spectrum here,
|
||||
so the strip reads as an extension of the accent system, not a separate neon flourish.
|
||||
**The mid stop is its own constant, not an alias of `accent/secondary`** (decoupled
|
||||
2026-07-31): the ramp is a luminance progression while the accents are categorical roles, and
|
||||
darkening secondary for a categorical reason inverted lo→mid→hi. A monotonicity test now guards
|
||||
the ordering. The **active** zone still lifts to `accent/primary` +
|
||||
its bloom, so "which zone is live" stays unambiguous over the categorical spectral bands.
|
||||
|
||||
- **Feel:** premium, almost visualizer-grade — but soft and cohesive, a pastel spectrum
|
||||
|
||||
Reference in New Issue
Block a user