Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
One-time setup that gathers your project's design context and saves it to CLAUDE.md for future sessions.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
scripts/palette.mjs
1#!/usr/bin/env node2/**3* Brand-seed picker. Returns one OKLCH seed color + the mood it most4* naturally evokes, and teaches the model how to compose a full palette5* around it.6*7* The seed is the brand's anchor color. The 5-role palette (bg, surface,8* ink, accent, muted) is composed by the caller at runtime using their9* judgment + the brief (PRODUCT.md / DESIGN.md / user prompt), NOT picked10* from a frozen 4-color preset.11*12* Why: 4-color frozen palettes drift toward safe defaults (warm-cream bg,13* complementary accent on near-white) regardless of brief. A single seed +14* the model's own composition lets the same seed produce a dark-mode jazz15* club or a light-mode hospitality brand depending on what the brief calls16* for. Tested empirically against curated 4-color palettes; seed approach17* wins on mood-fit in 3 of 5 cases and ties on the rest.18*19* Usage:20* node scripts/palette.mjs # pick at random21* node scripts/palette.mjs --id seed-021 # pick a specific seed22* node scripts/palette.mjs --from <key> # hash <key> to a seed (deterministic)23*24* Env vars:25* IMPECCABLE_PALETTE_SEED — same as --from; useful for the eval harness26* to make runs reproducible.27*/2829import crypto from 'node:crypto';3031// Seeds are inlined (129 entries, hand-curated via a tinder review of32// ~400 candidates from ColorHunt + synthesis + Radix/brand/Pantone anchors).33// Each carries a mood + strategy the judging model produced — surfaced as34// hints, not commands; the brief still drives composition.35const SEEDS = [36{ id: "seed-200", oklch: [0.360, 0.137, 0.0],37mood: "Aesop apothecary shelf — oxblood bottle glass against linen, considered and unhurried",38strategy: "Seed is a deep desaturated red-brown that reads as brand ink itself; I push primary darker toward bottle-glass oxblood, pair with a pure white surface so the red does the work, and use a clear pale-blush accent that can carry dark text in pills." },39{ id: "seed-000", oklch: [0.400, 0.130, 0.0],40mood: "oxblood leather banquette in a 1940s steakhouse — low lamplight on dark wood and burgundy",41strategy: "Near-black bg with the faintest red undertone lets the oxblood primary glow like lamplit leather; warm cream ink and a brass accent complete the chophouse register." },42{ id: "seed-002", oklch: [0.450, 0.150, 0.0],43mood: "darkroom red light — analog photography, blood-warm safelight glow on chemical trays",44strategy: "Near-black surface with a deep oxblood primary lets the seed function like a safelight in a darkroom — the bg disappears so the red becomes the only emotional signal." },45{ id: "seed-003", oklch: [0.500, 0.194, 0.0],46mood: "darkroom safelight — the deep oxblood glow of analog photography, chemical and contemplative",47strategy: "Anchored the seed as primary against pure near-black so the red reads like a single illuminated bulb in a developing room, with cool desaturated ink to evoke silver gelatin print tones." },48{ id: "seed-004", oklch: [0.546, 0.204, 3.4],49mood: "midnight boudoir — velvet rose under low lamplight, perfumed and intimate",50strategy: "Near-black surface lets the rose seed glow like silk in shadow; a warm champagne accent provides the candle-flame counterpoint without breaking the hush." },51{ id: "seed-005", oklch: [0.550, 0.180, 0.0],52mood: "smoldering vermillion at dusk — the last red ember in a blacksmith's forge, iron-rich and quietly violent",53strategy: "Near-black gallery surround lets the seed read as glowing forged metal; ink stays warm-off-white, accent shifts to a hotter ember orange so the primary feels like cooling steel against a fresh strike." },54{ id: "seed-201", oklch: [0.647, 0.262, 0.3],55mood: "Figma plugin marketplace red — confident product-brand crimson, the kind a modern dev tool uses for a 'live' indicator or a primary CTA on a pristine docs page",56strategy: "Pure white surface lets a high-chroma crimson primary do all the brand work, paired with a hue-shifted warm coral accent for hierarchy without competing saturation" },57{ id: "seed-006", oklch: [0.650, 0.160, 0.0],58mood: "1960s Italian cinema — Technicolor lipstick red against a darkened theater",59strategy: "Pure near-black surface lets a saturated cinematic red and its warm peach accent perform like film light projected in a dark room — the brand colors carry the drama, the bg disappears." },60{ id: "seed-008", oklch: [0.520, 0.200, 10.4],61mood: "Negroni hour at a Milanese bar — bittersweet crimson, vermouth and amaro under low tungsten",62strategy: "Seed is a saturated red-crimson with cinematic weight, so I sit it on near-black to let the primary glow like backlit liquor, with a warmer amber accent acting as the citrus twist against the bitter red." },63{ id: "seed-010", oklch: [0.563, 0.223, 11.0],64mood: "Negroni hour on a Milan rooftop — bittersweet crimson, aperitivo light, polished restraint",65strategy: "Seed is a vivid carmine-red with strong chroma, so the surface gets out of the way (pure white) and lets the primary do the aperitivo work, with a cooled garnet accent for tension." },66{ id: "seed-202", oklch: [0.643, 0.247, 7.0],67mood: "Glossier brand pink — modern beauty editorial, confident and current",68strategy: "Pure white bg lets a saturated rose-red primary do all the brand work, paired with a deeper crimson accent for hierarchy — the Stripe/Glossier move where the color carries the mood." },69{ id: "seed-013", oklch: [0.400, 0.130, 20.0],70mood: "Tuscan cellar at dusk — aged terracotta, oxidized iron, the deep red of decanted Sangiovese",71strategy: "Black surface lets the oxblood seed and copper accent glow like firelight on cellar stone; brand colors carry all the warmth while the room recedes." },72{ id: "seed-014", oklch: [0.450, 0.150, 20.0],73mood: "smoldering tannery — oxblood leather, cured under low workshop light",74strategy: "Anchor the deep oxblood seed as primary against a near-black architectural ground, then lift with a single warm ember accent so the leather reads burnished rather than bloody." },75{ id: "seed-016", oklch: [0.550, 0.180, 20.0],76mood: "Negroni hour on a Roman terrace — bitter campari red, vermouth, late golden light spilling on white linen",77strategy: "Pure white surface lets the campari-red primary do all the emotional work, paired with a deeper oxblood accent for bittersweet depth — Italian aperitivo restraint, not warmth-washed." },78{ id: "seed-205", oklch: [0.634, 0.254, 17.6],79mood: "Aesop apothecary bottle — considered red-coral on a clinical white surface, the kind of brand restraint where one saturated object does all the work",80strategy: "Default A pure white surface lets a single coral-red primary carry the entire brand voice; accent shifts to a deeper oxblood for hierarchy without competing chroma." },81{ id: "seed-011", oklch: [0.639, 0.207, 13.5],82mood: "Aperitivo hour in Milan — Campari glow on a white marble bar, crisp and effervescent",83strategy: "Pure white gallery backdrop lets the Campari-red primary ring like a single bitter note; ink is near-black with a whisper of warmth, accent shifts to a deeper oxblood for hierarchy without competing hues." },84{ id: "seed-015", oklch: [0.527, 0.202, 22.7],85mood: "Negroni hour on a Milanese terrace — bittersweet vermillion, aperitivo glassware catching low sun",86strategy: "Seed becomes a saturated aperitivo-red primary against pure white so the color carries the bittersweet warmth alone, paired with a deep oxblood accent for typographic gravitas." },87{ id: "seed-023", oklch: [0.427, 0.175, 29.2],88mood: "blacksmith's forge at dusk — iron heated to ember red, the deep glow of oxidized metal and quenching oil",89strategy: "Pure black bg lets the seed's ember-red glow radiate like hot iron in a dark forge; accent shifts to a copper-amber to suggest scaling metal and sparks, while ink stays near-white for tool-precise legibility." },90{ id: "seed-206", oklch: [0.614, 0.234, 28.2],91mood: "Aesop apothecary bottle — considered red-orange on lab-white, calm utility with a single confident pigment",92strategy: "Pure white surface lets a saturated vermilion primary do all the brand work, paired with a deep oxblood accent for hierarchy without introducing a second hue family" },93{ id: "seed-029", oklch: [0.665, 0.222, 25.7],94mood: "Negroni hour at a Milanese bar — bittersweet orange-red liqueur catching late afternoon light on polished marble",95strategy: "Pure white surface lets the seed's vermilion read like Campari in a glass; a deeper oxblood accent provides the bitter depth, with neutral graphite ink keeping the editorial restraint of Italian design." },96{ id: "seed-022", oklch: [0.418, 0.155, 27.2],97mood: "Pompeiian red fresco — oxidized cinnabar on a museum wall, archaeological gravity",98strategy: "Pure black gallery surface lets the seed's iron-oxide red read as a lit artifact; accent shifts to an aged terracotta amber, so primary and accent form a fired-clay duet against neutral void." },99{ id: "seed-024", oklch: [0.464, 0.169, 26.9],100mood: "Mid-century darkroom under the safelight — developer trays, oxblood leather, the quiet patience of a print emerging",101strategy: "Seed becomes a deep oxblood primary; surface stays pure black so the red glows like a safelight, with a warmer ember accent for hierarchy" },102{ id: "seed-026", oklch: [0.489, 0.190, 28.3],103mood: "smoldering ember in a blacksmith's forge — iron-hot rust, soot, and controlled fire",104strategy: "Near-black soot background lets the seed's red-orange glow like heated metal; ink is bone-white, accent is a cooler tempered-steel orange that creates internal heat gradient with the primary." },105{ id: "seed-027", oklch: [0.568, 0.208, 27.1],106mood: "Sicilian blood orange at golden hour — citrus rind, terracotta, sun on stucco",107strategy: "Seed reads as vivid blood-orange — picked pure white surface so the citrus-red primary and a deep oxblood accent do all the emotional work, like a Loro Piana editorial spread." },108{ id: "seed-028", oklch: [0.591, 0.172, 24.0],109mood: "Sienna-fired ceramic studio at dusk — terracotta cooling on a wheel, hands still dusted with slip",110strategy: "Pure black stage lets the fired-clay primary glow like a kiln ember, with a deeper oxblood accent providing tonal weight rather than hue contrast — a monochrome warm-axis play." },111{ id: "seed-033", oklch: [0.544, 0.169, 31.3],112mood: "1960s Italian terracotta workshop — fired clay, espresso, late-afternoon Mediterranean dust",113strategy: "Pure black ground lets the seed's burnt-sienna primary glow like a lit kiln, with a deeper oxblood accent for restrained warmth tension — the brand carries the heat, the surface stays out." },114{ id: "seed-207", oklch: [0.564, 0.231, 29.1],115mood: "Aesop apothecary bottle — considered red oxide, the calm authority of a well-made object on a white shelf",116strategy: "Seed becomes the singular brand voice against pure white, with a deeper oxblood accent for hierarchy — the surface disappears so the red does all the speaking." },117{ id: "seed-035", oklch: [0.663, 0.153, 32.1],118mood: "Aesop apothecary bottle — clay-fired warmth, considered retail",119strategy: "Pure white surface lets the terracotta primary do the brand work, paired with a deep umber ink and a cooler clay accent for editorial tension." },120{ id: "seed-037", oklch: [0.590, 0.188, 35.8],121mood: "Aesop apothecary bottle — considered terracotta, herbalist restraint, the warmth comes from the glass not the room",122strategy: "Seed becomes a muted terracotta primary against pure white so the brand's warmth carries entirely through the color itself; accent shifts to a deeper umber for quiet hierarchy." },123{ id: "seed-038", oklch: [0.652, 0.229, 34.8],124mood: "blown-glass furnace at dusk — molten orange iron pulled from the kiln, a craftsman's signature heat",125strategy: "Pure black stage so the seed reads as live ember; primary holds the seed's heat, accent shifts to a brass-amber a hue-step away for a 1.7+ contrast pairing without leaving the fire." },126{ id: "seed-039", oklch: [0.653, 0.185, 33.5],127mood: "Aesop apothecary bottle — considered terracotta, quiet retail craft",128strategy: "Seed becomes a grounded clay primary against pure white, paired with a deeper umber accent so the warmth lives entirely in the brand marks, not the surface." },129{ id: "seed-167", oklch: [0.495, 0.134, 36.0],130mood: "Aesop apothecary shelf — burnished terracotta on clinical white, considered craft pharmacy",131strategy: "Treat the seed as a brand-carrying burnt-sienna against a pure paper-white surface so the warmth lives entirely in the primary, with a deep umber accent pulled along the same warm axis for typographic gravity." },132{ id: "seed-147", oklch: [0.500, 0.151, 40.0],133mood: "Aesop apothecary shelf — considered terracotta, pharmacy restraint, the brand color does the work against clinical white",134strategy: "Anchor the seed's burnt-sienna primary against a pure white surface so the rust speaks alone, with a deep umber ink and a cooler clay accent to give the palette product-brand discipline rather than environmental warmth." },135{ id: "seed-040", oklch: [0.660, 0.201, 40.0],136mood: "Aesop apothecary bottle — amber glass on a clean dispensary shelf, considered and clinical-warm",137strategy: "Seed becomes a burnt-amber primary against pure white so the bottle-glass color does the emotional work; accent shifts to a deep olive-bronze for the apothecary-label pairing." },138{ id: "seed-041", oklch: [0.673, 0.217, 38.6],139mood: "Aesop apothecary shelf — considered orange glass, clinical retail restraint",140strategy: "Pure white surface lets the burnt-orange primary do all the brand work, with a deep ink-brown for editorial gravity and a muted clay accent that reads as a sibling, not a contrast." },141{ id: "seed-042", oklch: [0.688, 0.133, 35.8],142mood: "Aesop apothecary shelf — terracotta glass, considered retail",143strategy: "Seed becomes a warm clay primary against pure white so the bottle-on-marble retail feel comes from the brand color alone; a deeper umber accent gives the label-print contrast." },144{ id: "seed-043", oklch: [0.781, 0.119, 38.1],145mood: "Aesop apothecary catalogue — considered terracotta, dermatological restraint, the warm color doing all the work against clinical white",146strategy: "Pure white surface lets the seed's warm clay tone read as the entire brand voice, paired with a deeper umber accent for hierarchy without competing with the primary's warmth." },147{ id: "seed-168", oklch: [0.400, 0.103, 50.0],148mood: "Aesop apothecary bottle — amber glass on a clinical white shelf, considered and pharmaceutical",149strategy: "Pure white surface lets the deep amber primary act like tinted glass against a clean shelf; accent is a muted clay that complements without competing, keeping the brand quiet and product-led." },150{ id: "seed-044", oklch: [0.568, 0.149, 45.9],151mood: "1970s desert highway at golden hour — sun-faded terracotta, denim dust, the warmth of a Polaroid pulled from a glovebox",152strategy: "Seed becomes a burnt-sienna primary against pure white so the terracotta does all the emotional work; a deep indigo accent acts as the denim shadow opposing the sun, creating the era's signature warm/cool tension without tinting the page." },153{ id: "seed-045", oklch: [0.607, 0.163, 47.7],154mood: "Aesop apothecary shelf — considered amber glass, clinical restraint, craft pharmacy",155strategy: "Pure white bg lets the burnt-amber primary do the apothecary work alone, paired with a deeper umber accent and graphite ink for editorial calm." },156{ id: "seed-046", oklch: [0.653, 0.175, 45.0],157mood: "Aesop apothecary shelf — considered amber glass, quiet luxury, restrained craft",158strategy: "Pure black backdrop lets the warm amber primary glow like backlit apothecary glass, with a deeper rust accent providing tonal depth in the same hue family — monochromatic warm against neutral void." },159{ id: "seed-047", oklch: [0.695, 0.205, 43.2],160mood: "Aesop apothecary label — sun-warmed amber glass on a clinical countertop, restrained botanical pharmacy",161strategy: "Pure white surface lets the burnt-amber primary and a deeper sienna accent do all the brand work, like an apothecary bottle photographed under daylight." },162{ id: "seed-051", oklch: [0.704, 0.189, 49.0],163mood: "blacksmith's forge at dusk — glowing iron, hammered copper, ember light against cooling steel",164strategy: "Pure near-black surface lets the seed's molten orange burn like heated metal; accent shifts to a deeper amber-red to suggest the cooling end of the same iron, while ink stays a clean off-white so type reads like chalk on slate." },165{ id: "seed-171", oklch: [0.550, 0.124, 60.0],166mood: "Klim Type Foundry specimen page — considered ochre on paper, design-school-honest",167strategy: "Seed becomes a muted ochre primary on pure white; accent is a deep ink-navy pulled across the wheel for editorial contrast without warmth-pooling in the bg" },168{ id: "seed-148", oklch: [0.650, 0.146, 60.0],169mood: "Klim-style editorial gold — late-afternoon paper light on a serif specimen sheet, considered and dry",170strategy: "Hold the seed's amber as primary on a pure white page so the gold reads as ink rather than atmosphere, and pair with a deep aubergine accent for typographic contrast." },171{ id: "seed-052", oklch: [0.700, 0.130, 60.0],172mood: "late-afternoon terracotta studio — sun-warmed clay, hands-on craft, the hour before dusk",173strategy: "Seed is a saturated amber-ochre with strong environmental association (ceramics, adobe, sunlit plaster), so I lean into Exception (a) with a faintly warm bone surface that reads as lime-washed wall, then deepen the seed slightly for primary and pair it with a fired-clay rust accent for hand-thrown warmth." },174{ id: "seed-053", oklch: [0.773, 0.157, 56.6],175mood: "late-summer apricot orchard at golden hour — sun-warmed fruit, considered Californian craft",176strategy: "Seed is a juicy mid-warm orange at daylight luminance — leaning optimistic/editorial, so pure white surface lets the apricot primary glow without muddying it; a deep wine accent provides the bite." },177{ id: "seed-149", oklch: [0.600, 0.124, 70.0],178mood: "1970s desert highway — late-afternoon amber light on chrome and asphalt",179strategy: "Anchor the amber seed as primary against pure black so the warm hue reads as headlight glow against night; a cooler dusk-mauve accent provides the complementary tension of horizon vs. sun." },180{ id: "seed-054", oklch: [0.740, 0.162, 68.1],181mood: "late-afternoon honey on terracotta — Mediterranean stucco at golden hour, sun-baked amber",182strategy: "Seed is a saturated honey-amber at high lightness; pairing it with pure black lets the warmth read as luminous gold against gravity, like lamplight in a dark room." },183{ id: "seed-055", oklch: [0.774, 0.174, 65.1],184mood: "late-summer honey hour — amber light slanting through a west-facing window, optimistic and golden",185strategy: "Anchor a saturated honey-amber primary on pure white so the warmth radiates from the brand itself, then pair with a deep teak accent for grounded contrast rather than tinting the canvas." },186{ id: "seed-056", oklch: [0.691, 0.146, 74.6],187mood: "Klim-style modern publishing house — late-afternoon paper warmth, considered editorial gold",188strategy: "Pure white surface so the amber seed becomes the brand voice; ink stays near-black neutral and accent shifts to a deep ink-blue to give the gold something structural to lean on." },189{ id: "seed-150", oklch: [0.750, 0.148, 80.0],190mood: "Klim Type Foundry specimen page — late-summer editorial gold, considered and grown-up",191strategy: "Pure white surface lets a single restrained ochre primary do all the brand work, paired with a deep ink-blue accent for typographic contrast in the Klim/Commercial Type tradition." },192{ id: "seed-058", oklch: [0.764, 0.120, 77.1],193mood: "Klim Type Foundry specimen page — late-afternoon ochre, considered editorial typography",194strategy: "Pure white surface lets the ochre primary do the brand work, paired with a deep ink-blue accent for editorial contrast — the type-foundry move where one warm hue carries the whole feeling against neutral paper." },195{ id: "seed-059", oklch: [0.784, 0.144, 79.8],196mood: "late afternoon in a Tuscan limonaia — sun-cured amber on whitewashed plaster",197strategy: "Pure white surface lets the saffron-amber primary and a deep olive accent carry the Mediterranean warmth, with split-complementary tension between gold and a quiet evergreen." },198{ id: "seed-061", oklch: [0.817, 0.161, 75.1],199mood: "late-afternoon honey on Tuscan limestone — golden hour, slow and luminous",200strategy: "Pure white surface lets the amber primary glow like sunlight on a wall, paired with a deep terracotta accent for warm tonal contrast within the same hue family." },201{ id: "seed-063", oklch: [0.842, 0.165, 91.3],202mood: "late-afternoon Tuscan sun on limestone — golden hour, considered, optimistic",203strategy: "Pure white surface lets the amber-gold primary radiate as the mood-carrier, with a deep aubergine accent providing the long shadow that golden light needs to feel three-dimensional." },204{ id: "seed-174", oklch: [0.350, 0.075, 110.0],205mood: "olive grove at late afternoon — sun-cured leaves, dust, and quiet Mediterranean weight",206strategy: "Pure white surface lets a deep, sun-cured olive primary do the emotional work, with a burnt-terracotta accent providing the warm-earth counterpoint olive groves are known for." },207{ id: "seed-117", oklch: [0.650, 0.100, 110.0],208mood: "Klim-style editorial sage — late-summer foundry catalogue, considered olive-yellow on paper",209strategy: "Seed sits at olive-chartreuse; treating it as a quiet typographic primary on pure paper, with a deeper bronze-olive accent for hierarchy — the color does the work, the page disappears." },210{ id: "seed-118", oklch: [0.750, 0.090, 110.0],211mood: "Klim Type Foundry specimen page — late-summer olive light on a working specimen, the honesty of a type designer showing their work",212strategy: "Pure white bg lets a desaturated olive-yellow primary do the editorial work, with a deeper olive-bronze accent providing typographic emphasis the way a specimen uses one heavy weight against the body roman." },213{ id: "seed-065", oklch: [0.797, 0.166, 113.1],214mood: "late-summer olive grove at noon — sun-bleached leaves, dry stone, Mediterranean glare",215strategy: "Hold the seed as a luminous chartreuse-olive primary against pure white so the color reads as sunlit foliage, pairing it with a deep umber accent for the dry-stone contrast." },216{ id: "seed-176", oklch: [0.300, 0.071, 120.0],217mood: "moss-darkened apothecary jar — herbal, shadowed, mid-19th-century botanical study",218strategy: "Seed is a deep desaturated olive-green that reads as preserved botanical pigment; I anchor it on pure white so the dim moss-green primary feels like ink on a herbarium page, with a warm ochre accent supplying the aged-paper counterpoint." },219{ id: "seed-155", oklch: [0.550, 0.142, 130.0],220mood: "moss-bed forest floor at noon — chlorophyll, lichen, sunlit fern",221strategy: "Seed is a confident mid-olive green with strong chroma; mood is daylight botanical, so I let the brand greens do the work on a pure paper-white bg and pair with a warm umber accent for fern-against-bark contrast." },222{ id: "seed-119", oklch: [0.600, 0.154, 130.0],223mood: "moss garden at Saihō-ji — damp stone, filtered green light through old cedar",224strategy: "Pure near-black bg lets the seed's mossy green glow like wet lichen under low light; accent shifts to a pale ochre-gold like sun catching through canopy." },225{ id: "seed-179", oklch: [0.300, 0.096, 140.0],226mood: "moss on wet stone — forest floor at dusk, deep botanical hush",227strategy: "Kept the seed's deep moss green as primary against a near-black surface so the green reads as living shadow, with a pale lichen accent providing the single point of light." },228{ id: "seed-180", oklch: [0.350, 0.110, 140.0],229mood: "moss-darkened apothecary — herbal tinctures in amber glass, pressed botanicals, the deep green of a conservatory at dusk",230strategy: "Near-black bg with a whisper of green undertone lets the seed's deep moss read as luminous foliage; a warm parchment accent provides the apothecary-label counterpoint without breaking the herbal register." },231{ id: "seed-120", oklch: [0.650, 0.100, 140.0],232mood: "moss on weathered stone — quiet botanical garden conservatory at midday",233strategy: "Pure white bg lets the muted sage-green primary read as a considered botanical mark, with a deeper terracotta accent providing earthen counterpoint without breaking the gallery-like restraint." },234{ id: "seed-121", oklch: [0.750, 0.090, 140.0],235mood: "moss garden at Saihō-ji — diffuse green light filtered through wet stone and lichen",236strategy: "Pure near-black bg lets the muted sage-green primary glow like lichen under low light; a warm pale-bone accent acts as the single ray of sun cutting through canopy." },237{ id: "seed-182", oklch: [0.400, 0.106, 150.0],238mood: "moss garden at Saiho-ji — deep cultivated green under wet stone shadow, contemplative and damp",239strategy: "Near-black bg with the faintest cool-green undertone evokes shaded stone; primary holds the seed's moss tone while accent shifts to a lichen-yellow for organic counterpoint without breaking the hush." },240{ id: "seed-157", oklch: [0.550, 0.145, 150.0],241mood: "moss garden at Saiho-ji — damp stone, filtered green light through cedar canopy",242strategy: "Near-black bg with a faint green undertone evokes deep forest shadow; primary holds the seed's verdant register while accent shifts to a pale lichen-cream to mimic light catching moss." },243{ id: "seed-122", oklch: [0.600, 0.158, 150.0],244mood: "forest floor at first light — moss, lichen, and clean morning air",245strategy: "Seed reads as a living, daylight green; surface stays pure white so the green carries the freshness, with a cool teal accent pulling it toward dew rather than earth." },246{ id: "seed-195", oklch: [0.650, 0.150, 145.0],247mood: "Considered horticulture brand — botanical research lab, the green of a healthy stem photographed in clean daylight",248strategy: "Pure white surface lets the seed's vegetal green carry the entire brand voice, paired with a deep forest ink and a warm clay accent for editorial contrast." },249{ id: "seed-183", oklch: [0.350, 0.077, 160.0],250mood: "moss-stained apothecary — deep forest glass, herbal tinctures shelved in low candlelight",251strategy: "Anchored the seed as primary and built a near-black dark surface with whisper-tinted green to evoke aged apothecary glass, letting the green glow rather than shout." },252{ id: "seed-184", oklch: [0.400, 0.087, 160.0],253mood: "deep forest apothecary — moss, bottle glass, and herbal tincture under afternoon light",254strategy: "Seed becomes a botanical-bottle-green primary on pure white, paired with a warm clove-amber accent to evoke herbal pharmacy contrast without tinting the surface." },255{ id: "seed-158", oklch: [0.550, 0.119, 160.0],256mood: "moss on wet stone — forest floor after rain, mineral and quiet",257strategy: "Pure white surface lets the deep mossy green carry the entire mood; accent shifts to a damp slate-teal to sit beside primary like lichen on stone without competing." },258{ id: "seed-159", oklch: [0.600, 0.130, 160.0],259mood: "moss-covered forest apothecary — herbal tinctures in amber glass, eucalyptus shadow",260strategy: "Anchored the green seed in a near-black backdrop so it reads like botanical glassware lit from within, with a warm amber accent pulled across the wheel to evoke tincture bottles against dark wood." },261{ id: "seed-185", oklch: [0.450, 0.086, 170.0],262mood: "weathered copper patina on a Pacific Northwest greenhouse — oxidized teal, glass light, botanical hush",263strategy: "Seed sits as a deep oxidized-teal primary against pure white so the patina reads as pigment, not atmosphere; a rust-copper accent completes the verdigris/oxidation story across the warm-cool axis." },264{ id: "seed-124", oklch: [0.750, 0.080, 170.0],265mood: "sea-glass on a foggy Pacific shoreline — weathered, mineral, quietly oxidized",266strategy: "Seed is a soft desaturated teal-green; pairing it on pure white lets the mineral primary read as patinated copper-glass, with a deeper kelp-toned primary and a rusted coral accent to spark the muted teal against its complement." },267{ id: "seed-160", oklch: [0.550, 0.095, 180.0],268mood: "weathered copper patina on a museum bronze — oxidized teal, conservatorial quiet",269strategy: "Pure near-black gallery surround lets the patina-teal primary glow like a lit artifact, with a warm verdigris-adjacent accent providing the oxidation contrast against the cool seed." },270{ id: "seed-161", oklch: [0.720, 0.100, 188.0],271mood: "climate-tech dashboard — calm verdigris on plain paper, the quiet confidence of an instrument that just works",272strategy: "Seed teal carries the entire mood as a single considered brand color on pure white, with a desaturated copper accent providing warm signal against the cool primary without competing for attention." },273{ id: "seed-186", oklch: [0.450, 0.074, 200.0],274mood: "deep hydrothermal vent — mineral teal under pressure, the cold blue-green of oxidized copper in submerged light",275strategy: "Near-black surface lets the mineral teal glow as if lit from within; accent shifts toward verdigris-copper to suggest patina on submerged metal, while ink stays cool-neutral to keep the register austere rather than aquatic-cute." },276{ id: "seed-125", oklch: [0.650, 0.100, 200.0],277mood: "climate-tech dashboard — calm operational teal, the color of clean water data and atmospheric sensors",278strategy: "Pure white surface lets a single muted-teal primary do all the brand work, with a deeper marine accent providing hierarchy without competing chroma." },279{ id: "seed-126", oklch: [0.750, 0.080, 200.0],280mood: "climate-tech product brand — quiet competence, dashboards for hard infrastructure problems",281strategy: "Hold the seed's muted teal as primary, pair with a sharper cyan-leaning accent for interactive lift, and let a pure white surface do the disappearing act so the brand reads as a tool, not an atmosphere." },282{ id: "seed-162", oklch: [0.550, 0.091, 210.0],283mood: "weathered nautical instrument — patinated brass on oxidized steel, the cool blue-grey of a ship's chronometer at dawn",284strategy: "Pure white surface lets the muted teal-steel primary read as a precise instrument mark, with a warm brass accent providing the single point of patina against clinical white." },285{ id: "seed-163", oklch: [0.450, 0.086, 230.0],286mood: "deep harbor at dusk — weathered nautical instruments, brass dials on oxidized steel",287strategy: "Near-black background with subtle cool tint evokes the marine dusk; primary holds the seed's teal-blue while a warm brass accent creates the instrument-on-steel tension." },288{ id: "seed-164", oklch: [0.550, 0.105, 230.0],289mood: "deep harbor at dawn — cold steel water, fog-muted light, the quiet before the boats leave",290strategy: "Pure near-black bg lets the seed's cold marine blue read as a luminous beacon, while a pale frost-cyan accent evokes diffused dawn light cutting through fog." },291{ id: "seed-127", oklch: [0.650, 0.100, 230.0],292mood: "climate-tech dashboard — atmospheric sensor blue, calm operational clarity",293strategy: "Anchor the seed as a confident mid-blue primary on pure white so the brand color carries all the atmospheric feeling, with a deep navy accent for hierarchy and a soft slate muted for body text." },294{ id: "seed-128", oklch: [0.750, 0.080, 230.0],295mood: "climate-tech dashboard — calm atmospheric data, considered sky-blue",296strategy: "Pure white surface lets the muted sky-blue primary carry the meteorological calm, with a deep-navy accent providing readable weight against the soft primary." },297{ id: "seed-187", oklch: [0.350, 0.078, 240.0],298mood: "deep harbor at blue hour — wet stone, cold steel, the quiet before night fully lands",299strategy: "Near-black architectural bg with a hint of marine chroma lets the seed read as ambient atmosphere rather than UI chrome; a cooler steel accent sits opposite the warmer-shifted primary for navigational clarity." },300{ id: "seed-077", oklch: [0.578, 0.130, 241.7],301mood: "pre-dawn signal tower — cold blue solitude, instruments glowing against the dark",302strategy: "Pure near-black bg lets the seed's cold tower-light blue glow as the sole emotional source, with a frost-cyan accent acting as a secondary indicator light." },303{ id: "seed-188", oklch: [0.400, 0.110, 250.0],304mood: "Linear's considered indigo — the calm authority of a well-built developer tool, blueprint ink on a clean page",305strategy: "Held the seed as a deep indigo primary against pure white so the brand color carries all the gravity; accent shifts to a cooler, brighter cyan-blue to create a crisp hierarchy pair without warming the surface." },306{ id: "seed-165", oklch: [0.450, 0.123, 250.0],307mood: "blueprint room at dusk — drafting table, graphite, civic-engineering blue",308strategy: "Seed is a mid-deep architectural blue with real chroma and no environmental cue, so I stay out of the way with a pure white surface and let the primary do all the talking, pairing it with a burnt-ochre accent for drafting-pencil contrast." },309{ id: "seed-079", oklch: [0.478, 0.136, 251.8],310mood: "twilight cartography — the blue of deep dusk over open water, precise and navigational",311strategy: "Pure white surface lets the seed's oceanic blue act as a single navigational anchor, with a warm amber accent struck across it like a lighthouse beam at dusk." },312{ id: "seed-080", oklch: [0.541, 0.122, 248.2],313mood: "Linear-style considered tool blue — the calm, exact register of a modern engineering app where every pixel is intentional",314strategy: "Pure white surface lets the considered indigo-blue primary carry the entire brand; a deeper navy accent provides hierarchy without warmth, keeping the palette in a single cool family for that focused-software feel" },315{ id: "seed-166", oklch: [0.550, 0.149, 250.0],316mood: "pre-dawn flight deck — instrument glow against deep cobalt sky, precise and quietly intense",317strategy: "Near-black bg with the faintest cool tint reads like a darkened cockpit; the seed becomes a luminous instrument-blue primary, paired with a warm amber accent that mimics avionics readouts for unmistakable signal contrast." },318{ id: "seed-081", oklch: [0.650, 0.160, 250.0],319mood: "deep-sea research vessel at dawn — instrument glow against cold steel light",320strategy: "Pure near-white bg keeps the palette technical and instrument-like; the seed blue holds as primary while a desaturated steel-cyan accent reads like signal readouts on glass." },321{ id: "seed-082", oklch: [0.742, 0.140, 247.4],322mood: "high-altitude flight deck at dawn — cold cabin instruments glowing against a sky still holding night",323strategy: "Near-black cockpit ground with a faint blue cast lets the seed read as an illuminated instrument; primary holds the seed, accent shifts to cyan for signal/indicator contrast." },324{ id: "seed-210", oklch: [0.360, 0.140, 260.0],325mood: "Linear-style considered tool indigo — late-night focused work, the deep blue of a code editor at 2am where everything else falls away",326strategy: "Pure black bg lets the indigo primary carry all the cognitive-focus weight, with a slightly brighter periwinkle accent for interactive lift — the surface disappears so the tool feels weightless." },327{ id: "seed-189", oklch: [0.400, 0.130, 260.0],328mood: "pre-dawn observatory — cold instrument blue, star-chart precision",329strategy: "Seed becomes the primary on pure black so the deep instrument-blue glows like a calibration light, with a faint cyan accent reading as starlight against the void." },330{ id: "seed-211", oklch: [0.420, 0.161, 260.0],331mood: "Linear's considered indigo — the tool-for-thought blue of focused product work, calm authority without coldness",332strategy: "Hold the seed as a deep indigo primary against pure white, then pair with a slightly warmer, lighter periwinkle accent to create gentle hue separation without breaking the disciplined tool-brand register." },333{ id: "seed-129", oklch: [0.450, 0.150, 260.0],334mood: "pre-dawn observatory — deep cobalt sky just before astronomical twilight, instruments cool to the touch",335strategy: "Near-black surface lets the cobalt seed read as luminous starlight; a single warm amber accent acts as the calibration lamp against the cold blue field." },336{ id: "seed-084", oklch: [0.476, 0.207, 261.2],337mood: "pre-dawn flight deck — instrument glow against deep cobalt sky, precise and awake",338strategy: "Default B black bg lets the cobalt primary read as a luminous instrument signal, with a cyan accent striking the analogous 'cockpit display' relationship." },339{ id: "seed-085", oklch: [0.681, 0.132, 258.4],340mood: "pre-dawn flight deck — instrument glow against deep cobalt sky",341strategy: "Anchored the seed as a luminous primary against a near-black architectural ground, with a warm amber accent acting as the single instrument light cutting through cold blue." },342{ id: "seed-086", oklch: [0.767, 0.106, 255.9],343mood: "Scandinavian winter morning — quiet light through frost, pale sky over snow",344strategy: "Anchored a pure white editorial stage so the seed's cool sky-blue reads as crisp polar light, with a deeper navy primary providing the only saturated weight — like a single dark pine against snow." },345{ id: "seed-083", oklch: [0.340, 0.159, 262.4],346mood: "deep cobalt twilight — the moment after sunset when the sky goes electric blue and city windows start to glow",347strategy: "Pure black stage lets the cobalt seed act as a luminous neon-window glow, with a warm amber accent across the wheel for the lit-window contrast." },348{ id: "seed-212", oklch: [0.360, 0.219, 270.0],349mood: "Linear-grade tooling indigo — considered software for people who care about craft",350strategy: "Anchored the deep indigo seed as primary on a pure white surface so the brand color carries all the weight, with a slightly cooler violet-blue accent for hierarchy without competing chroma." },351{ id: "seed-130", oklch: [0.400, 0.150, 270.0],352mood: "Linear-grade indigo — considered productivity tool, ink on paper, no theatrics",353strategy: "Pure white surface lets a deep cool indigo carry all the brand weight, paired with a slightly warmer violet-blue accent for hierarchy without acid." },354{ id: "seed-213", oklch: [0.411, 0.241, 267.9],355mood: "Linear-style indigo — considered tool surface, the kind of blue-violet that sits behind a developer's keyboard at 11pm without shouting",356strategy: "Pure black canvas lets a saturated indigo primary do all the brand work, with a cooler cyan-violet accent providing UI signal without competing." },357{ id: "seed-131", oklch: [0.450, 0.180, 270.0],358mood: "monastic indigo dusk — vespers light through stained glass, contemplative and severe",359strategy: "Seed becomes a deep indigo primary against pure near-black so the violet reads as luminous stained-glass against architectural shadow, with a cooler iris accent for tonal lift." },360{ id: "seed-088", oklch: [0.476, 0.158, 268.5],361mood: "pre-dawn astronomer's notebook — deep indigo sky just before the stars fade, ink and graphite",362strategy: "Near-black bg with the faintest cool tint to evoke night sky without theatrics; primary holds the seed's indigo, accent shifts to a paler periwinkle for stellar contrast, keeping the palette monochromatic-cool and observational." },363{ id: "seed-196", oklch: [0.530, 0.130, 268.0],364mood: "Linear-style considered tool indigo — the deep-focus blue-violet of a thoughtfully built productivity surface, the color of a well-typeset keyboard shortcut",365strategy: "Pure white bg lets the indigo seed do all the brand work as primary, with a slightly darker, more saturated violet-shifted accent for hierarchy and interactive states — the surface disappears so the brand color reads as the entire identity." },366{ id: "seed-132", oklch: [0.700, 0.120, 270.0],367mood: "Linear-style considered tool indigo — the quiet violet of a focused product workspace, late-afternoon thinking",368strategy: "Pure white surface lets a muted indigo-violet primary and a slightly cooler accent do all the brand work, keeping the register calm and software-like rather than theatrical." },369{ id: "seed-090", oklch: [0.445, 0.206, 279.1],370mood: "Linear-style considered tool indigo — the violet of a focused product surface, not a nightclub",371strategy: "Anchor the seed as a confident product primary on pure white, with a cooler indigo-shift accent that reads as a sibling tool color, so the brand violet does all the emotional work." },372{ id: "seed-133", oklch: [0.500, 0.160, 280.0],373mood: "Linear-adjacent indigo — considered productivity tool, the violet of a thinking workspace",374strategy: "Seed becomes a measured indigo primary on pure white; accent shifts to a cooler blue-violet to create hierarchy without nightclub saturation, letting the brand color do all the emotional work." },375{ id: "seed-094", oklch: [0.533, 0.125, 294.3],376mood: "Linear-style considered tool indigo — the violet of a focused product surface, calm authority for a creative workspace",377strategy: "Pure white canvas lets the indigo-violet primary carry the entire brand voice; accent shifts hue slightly toward blue for a cool, tool-like duotone rather than warm decorative pairing." },378{ id: "seed-137", oklch: [0.700, 0.120, 290.0],379mood: "Linear-adjacent indigo — the considered tool, late-evening focus mode, software made for people who care about craft",380strategy: "Pure black surface lets a single restrained indigo-violet carry the brand, with a cooler periwinkle accent providing UI hierarchy without competing — Vercel/Linear dark-mode discipline." },381{ id: "seed-100", oklch: [0.450, 0.150, 330.0],382mood: "velvet boudoir at last call — bruised orchid and lipstick traces under low lamplight",383strategy: "Pure near-black surface lets a deep magenta-rose primary smolder while a warm peach accent acts like skin-lit lamplight — drama lives in the brand pair, not the room." },384{ id: "seed-103", oklch: [0.650, 0.160, 330.0],385mood: "1980s Memphis boudoir — powder-pink neon humming against lacquered black, lipstick and lacquer",386strategy: "Near-black gallery surface lets the magenta-pink seed read as lit neon; accent shifts to warm coral to create cinematic dichromatic tension without competing chroma." },387{ id: "seed-228", oklch: [0.360, 0.147, 340.0],388mood: "Figma-era creative tool plum — considered productivity software for designers, the inky violet of a serif wordmark on a marketing site",389strategy: "Held the seed as a deep plum primary against pure white so the brand color does the emotional work; paired with a muted rose accent for warmth without breaking the productivity-tool restraint." },390{ id: "seed-107", oklch: [0.500, 0.200, 340.0],391mood: "Figma plum — creative-tool confidence, considered magenta for a modern design product",392strategy: "Pure white surface lets a saturated magenta-plum primary carry all the brand voice, paired with a cooler violet-leaning accent for hierarchy without competing." },393{ id: "seed-198", oklch: [0.600, 0.210, 340.0],394mood: "Figma-era creative tool plum — confident, considered, made for makers",395strategy: "Anchor a saturated plum primary against pure white so the brand color does all the emotional work, with a deeper magenta-rose accent for hierarchy." },396{ id: "seed-112", oklch: [0.754, 0.193, 343.4],397mood: "Figma-era creative tool — confident pink primary doing the brand work on a clean canvas, the way Linear uses indigo or Stripe uses violet",398strategy: "Anchor the seed pink as a saturated brand primary on pure white so the color carries all the personality; pair with a cooler plum accent to give the pink something to push against without competing." },399{ id: "seed-229", oklch: [0.420, 0.163, 350.0],400mood: "considered fintech rose — the deep magenta of a modern product brand (think Stripe-adjacent, but rotated toward berry), confident and current",401strategy: "pure white surface lets a single deep berry-rose primary do all the brand work, paired with a cooler indigo accent for the contrast move you see in modern product marketing" },402{ id: "seed-113", oklch: [0.470, 0.173, 354.8],403mood: "1960s velvet rope nightclub — crushed magenta, low light, cigarette smoke catching a spotlight",404strategy: "Pure black stage so the seed's smoky magenta reads as a single hot spotlight, paired with a cooler violet accent for the second light cue." },405{ id: "seed-114", oklch: [0.570, 0.158, 353.3],406mood: "fin-de-siècle Parisian rose — velvet curtain, theatre program, lipstick blotted on linen",407strategy: "Drop bg to true black so the dusty-rose primary reads as stage-lit silk; accent shifts to a warmer coral-mauve at higher lightness to create gentle hue rotation without breaking the romance." },408{ id: "seed-199", oklch: [0.650, 0.180, 350.0],409mood: "modern fintech rose — the considered pink of a Series B brand mark, confident and current without nostalgia",410strategy: "Pure white surface lets a saturated rose primary do the brand work, paired with a deep plum accent for hierarchy — the Stripe move applied to a pink hue." },411{ id: "seed-115", oklch: [0.636, 0.218, 355.3],412mood: "backstage at a cabaret — velvet rope, lipstick mark on a champagne glass",413strategy: "Seed reads as a saturated stage-light magenta-red; I push it into pure black so the primary glows like a neon sign and the accent (a cold pearl-pink) acts as the spotlight rim — the room is dark, the color does the singing." },414{ id: "seed-230", oklch: [0.650, 0.249, 354.5],415mood: "Modern fintech rose — the considered pink of a contemporary payments brand: confident, alive, and clear-headed",416strategy: "Pure white bg lets a saturated rose-magenta primary carry all the brand energy, paired with a cooler indigo accent for trustworthy contrast — the Stripe move applied to a pink hue." },417{ id: "seed-231", oklch: [0.682, 0.241, 353.2],418mood: "Figma-era creative tool — a confident pink-magenta product brand, the kind a modern design platform uses to feel alive without shouting",419strategy: "Default A pure white bg lets the saturated pink-magenta primary do all the brand work, with a near-complementary cool teal accent for tool-like clarity and a neutral ink for editorial calm" },420{ id: "seed-116", oklch: [0.734, 0.183, 356.8],421mood: "modern beauty brand DTC — Glossier-adjacent pink, confident and current without being saccharine",422strategy: "Pure white surface so the rose-pink primary carries all the brand warmth, paired with a near-black ink and a desaturated mauve accent for editorial restraint." },423];424425function parseArgs(argv) {426const args = { id: null, from: null };427for (let i = 0; i < argv.length; i++) {428const a = argv[i];429if (a === '--id' && argv[i + 1]) { args.id = argv[++i]; }430else if (a === '--from' && argv[i + 1]) { args.from = argv[++i]; }431}432return args;433}434435// Hash a key into a stable float in [0, 1) for deterministic weighted picks.436function hashUnit(key) {437const h = crypto.createHash('sha256').update(key).digest();438return h.readUInt32BE(0) / 0x100000000;439}440441// The curated library is hue-skewed (more reds/oranges than teals/magentas)442// because that's where the source material + taste landed. Left uniform, a443// random pick would land on red ~1/3 of the time. Inverse-frequency weighting444// gives each seed a weight of 1/(count in its 30° hue bucket), so each hue445// ZONE is roughly equally likely to be chosen regardless of how many seeds it446// holds — fair rainbow exposure across runs without pruning the library.447function buildWeights(seeds) {448const bucketCount = {};449const bucketOf = (s) => Math.floor(((s.oklch[2] % 360) + 360) % 360 / 30);450for (const s of seeds) { const b = bucketOf(s); bucketCount[b] = (bucketCount[b] || 0) + 1; }451const weights = seeds.map((s) => 1 / bucketCount[bucketOf(s)]);452const total = weights.reduce((a, b) => a + b, 0);453return { weights, total };454}455456function weightedPick(seeds, unit) {457const { weights, total } = buildWeights(seeds);458let target = unit * total;459for (let i = 0; i < seeds.length; i++) {460target -= weights[i];461if (target < 0) return seeds[i];462}463return seeds[seeds.length - 1];464}465466function pickSeed(seeds, { id, from }) {467if (id) {468const found = seeds.find(s => s.id === id);469if (!found) { console.error(`no seed with id "${id}"`); process.exit(2); }470return found;471}472const envFrom = process.env.IMPECCABLE_PALETTE_SEED;473const key = from || envFrom;474const unit = key ? hashUnit(key) : Math.random();475return weightedPick(seeds, unit);476}477478function fmtOklch([L, C, H]) {479return `oklch(${L.toFixed(3)} ${C.toFixed(3)} ${H.toFixed(1)})`;480}481482function hueWord(H) {483if (H < 15 || H >= 345) return 'pure red';484if (H < 35) return 'warm red / crimson';485if (H < 55) return 'warm coral / burnt orange';486if (H < 80) return 'orange / honey';487if (H < 105) return 'warm amber / honey-gold';488if (H < 135) return 'yellow-green / olive';489if (H < 170) return 'green';490if (H < 200) return 'teal';491if (H < 230) return 'sky blue';492if (H < 265) return 'cobalt / indigo';493if (H < 295) return 'violet / purple';494if (H < 330) return 'magenta / pink';495return 'deep pink / rose';496}497498// ---------------------------------------------------------------499500const args = parseArgs(process.argv.slice(2));501const seed = pickSeed(SEEDS, args);502const [L, C, H] = seed.oklch;503504// The mood + strategy on each seed were derived by the model that505// originally judged it. We surface them as *hints*, not commands —506// the brief should still drive what the seed becomes.507const moodHint = seed.mood ? ` (one read: "${seed.mood}")` : '';508const strategyHint = seed.strategy ? `\n - one example strategy: ${seed.strategy}` : '';509510// ---------------------------------------------------------------511// Fat tool-exit response — what the model sees on stdout.512// ---------------------------------------------------------------513514process.stdout.write(`BRAND SEED · ${seed.id}515516Seed color (anchor for your primary brand color):517${fmtOklch(seed.oklch)} — ${hueWord(H)}${moodHint}518519This is the brand's anchor — a single beautiful color. Compose the rest of520the palette around it using YOUR judgment, the brief (PRODUCT.md /521DESIGN.md / the user's prompt), and the color-strategy guidance already in522SKILL.md.523524How to use:5255261. Read the brief. Write one specific phrase describing the mood this527product calls for. Be granular. Good: "1970s travel poster — sun-baked528warmth, considered", "midnight jazz club — smoky brass, saxophone529light", "Scandinavian winter morning — quiet light through frost". Bad:530"modern and clean", "warm and inviting". The first lets you compose; the531second is generic and will produce generic palettes.5325332. The seed's hue (${H.toFixed(0)}°) anchors your primary brand color. You534choose L and C to match the mood. The same hue can be deep-and-velvet,535bright-and-confident, or pale-and-faded — pick the one the mood demands.536Primary's hue should stay within ±10° of the seed.${strategyHint}5375383. Now compose the full palette in OKLCH (5 more roles):539• bg — the most important architectural choice.540CORE PRINCIPLE: the mood lives in the BRAND COLORS541(primary + accent) and typography, NOT in the surface.542Stripe is warm — its purple does that, bg is pure543white. Linear is cool — its blue does that, bg is544pure. Notion is warm — its accents do that, bg is545near-pure-white. Putting warmth in BOTH primary AND546bg is the AI cliché.547548DEFAULT A — PURE white: exactly oklch(1.000 0.000 0).549Not 0.99, not chroma 0.002. Stripe / Notion / Apple550use literal #ffffff. Don't add hidden warmth.551Refs: Stripe, Notion, Linear (light), Apple.com,552Vercel docs, Figma marketing, Loom, Substack.553554DEFAULT B — PURE black/near-black: L 0.04-0.12,555chroma exactly 0.000. No hue tint. Vercel is556roughly oklch(0.08 0 0). Pick L for mood; C is 0.557Refs: Vercel, A24, Acne, Apple dark, MUBI.558559ALT 2 — TINTED: chroma 0.015-0.05.560Use ONLY when:561(a) the mood is EXPLICITLY environmental — the surface562IS part of the brand (1920s lacquered interior,563leather library, ceramic studio, hotel lobby), or564(b) the seed itself is desaturated (chroma < 0.10) and565needs a tinted surface to read as a brand.566NOT for "feels warm" / "modern + warm" / "moody". If567your mood says "warm" but doesn't name a specific568environment, use PURE white and let primary carry569the warmth.570571HEURISTIC: if seed chroma > 0.10 AND mood is product-572focused (not environment-focused), it's almost always573PURE white. Target distribution across many palettes:574~50% pure white, ~25% pure black, ~25% tinted.575• surface — bg pulled slightly toward ink (10-15% mix). Same hue576family as bg. Used for cards, panels, sections.577• ink — body text color. Must reach ≥7:1 contrast vs bg.578Can carry the brand hue at low chroma in light mode579(slight warmth or coolness toward the brand).580• accent — a SECOND brand color, distinct from primary in BOTH581hue AND lightness. Picked to complement the mood (not582default-complementary across the wheel). Used for583badges, status pills, links, accent rules.584• muted — secondary text. Ink pulled 40% toward bg, keeping ink's585hue. Must reach ≥3.5:1 contrast vs bg.5865874. Pick a color STRATEGY (the four steps from SKILL.md):588• Restrained: tinted neutrals + accent ≤10% — product default589• Committed: one saturated color carries 30-60% — identity-driven590• Full palette: 3-4 named roles each used deliberately — brand work591• Drenched: the surface IS the color — campaign, hero, statement592The brief picks the strategy. A startup dashboard ≠ a perfume brand.593594Hard rules (already in SKILL.md, recapped because the seed step is where595they actually bite):596597- OKLCH only — never hex. Never #RRGGBB.598- ink-vs-bg WCAG contrast ≥ 7 (body text must be readable)599- primary chroma ≤ 0.23 (above this, primary glows perceptually and600no text on it is readable — acid-bright is a UI failure)601- if primary L > 0.78, primary chroma ≤ 0.18 (the fluorescent zone)602- primary-vs-accent contrast ≥ 1.7 (they must be visually distinct,603not two variants of the same hue at similar lightness)604- accent must carry readable text on a filled badge/pill: EITHER605saturated (chroma ≥ 0.10) OR clearly light (L ≥ 0.85) OR clearly606dark (L ≤ 0.30). Never a muddy mid-tone (L 0.45-0.72 + chroma < 0.10)607— taupe/mushroom/dusty-grey accents read as weak and can't hold text608either way. Saturate it or push its lightness to a clear light/dark.609- avoid the saturated AI attractor zones: claude-beige (warm-cream bg610+ dusty brown primary), forest-green-on-cream, AI-purple-on-white,611navy-cream-with-orange-accent612613TEXT-ON-COLOR FILLS — pick by perceptual contrast, not just WCAG. The614rule applies to ANY element where text sits on a saturated color fill:615primary buttons, accent buttons, badges, status pills, tag highlights,616filled callouts. Don't only think "primary button" — apply consistently.617618For any saturated mid-luminance color (L between 0.42 and 0.78, chroma ≥6190.08), use WHITE text (or near-white from your bg), not dark text — even620if WCAG says dark technically passes. The Helmholtz-Kohlrausch effect621makes saturated colors appear brighter than their luminance suggests,622and dark text on a warm-or-cool-saturated fill reads as muddy.623624Convention: Stripe orange CTAs, McDonald's red, every fintech orange625button, Vercel's filled badges, Linear's status pills — all use white626text on saturated bg fills.627628Dark text is correct only on PALE fills (L > 0.85) or PURE-NEUTRAL fills629(chroma near 0). Everything else: white text.630631Return your composed palette in CSS custom properties using OKLCH, then632build with it. The seed is the start, not the recipe.633`);634