Verdigris & Brass

The Alter & Amulet brand book. Every swatch, face, bell and button on this page is the live system from the shop, not a picture of it.

Tokens live in src/styles.css. The written rules live in DESIGN.md.

One ramp, day to night.

Every neutral leans verdigris, the green old brass turns. Brass itself is the only accent, and it never fills a wall.

Mist 2

#f4faf7

Raised surface on mist: cards, dialogs, fields.

Ink text
15.85 AAA
Moonmilk text
1.05 no

Mist

#eaf4ef

The day page. Every light section starts here.

Ink text
14.91 AAA
Moonmilk text
1.01 no

Seafoam

#bfe3d5

The logo's alcohol-ink wash. Highlights, selected states.

Ink text
12.10 AAA
Moonmilk text
1.25 no

Seafoam 2

#9fd3c1

The deeper wash. Panels that sit on seafoam.

Ink text
10.02 AAA
Moonmilk text
1.51 no

Verdigris

#4f9a86

Patina on old brass. Line art and marks, not day text.

Ink text
5.03 AA
Moonmilk text
3.01 large only

Patina

#2b5f53

Links, focus rings, the hover of every ink tag.

Ink text
2.29 no
Moonmilk text
6.62 AA

Dusk

#1b3a33

Where the scroll starts to turn. The builder lives here.

Ink text
1.36 no
Moonmilk text
11.15 AAA

Cauldron

#0f1b17

Night. Never pure black.

Ink text
1.05 no
Moonmilk text
15.94 AAA

Each swatch shows ink and moonmilk set on it, with the WCAG ratio. The page you are reading walks this ramp from top to bottom.

Ink and moonmilk

Two text colors and their quiet steps. Ink for day, moonmilk for night. Never pure black, never pure white.

#14201c
Moonmilk text
15.13 AAA

Ink

Text on light. Also the default tag button.

#46574f
Ink text
2.18 no
Moonmilk text
6.93 AA

Ink soft

Secondary text on light. 6.83:1 on mist.

#eef5f0
Ink text
15.13 AAA

Moonmilk

Text on dark. Also the light tag button.

#a9bdb4
Ink text
8.48 AAA
Moonmilk text
1.78 no

Moonmilk soft

Secondary text on dark. 8.93:1 on cauldron.

Brass

The bells. Three tonal steps, used like the metal: small, bright, and never as a floor.

#b8893f
Ink text
5.34 AA
Moonmilk text
2.83 no

Brass

The bells themselves. Sparkles, rules, the moon.

#e3c489
Ink text
9.99 AAA
Moonmilk text
1.51 no

Brass light

The brass tag, links at night, selection.

#7c5a22
Ink text
2.67 no
Moonmilk text
5.67 AA

Brass deep

Brass that can be read on day: 5.59:1 on mist.

Pairings that pass.

Eight tested combinations, each with its WCAG ratios worked out. Reach for a pairing, not a loose swatch.

Witch bell crowned with dried pink and yellow strawflowers, with gold chain, beads and yellow ribbons

A little magic for the door.

Dried strawflowers, gold chain and a little sun.

Marigold Crown$38

Day Door

mistinkink-softbrass

  • Ink on mist14.91AAA
  • Ink soft on mist6.83AA
  • Brass on mist, sparkles and rules only2.79Ornament only
  • Brass deep on mist, when brass must be read5.59AA

Use for: The hero, the lore, the shop grid. Any page that is still in daylight.

Not for: Brass type on mist. Set a price or link in brass-deep or ink instead.

The PlanchetteAdd to cart · $42
At rest
The PlanchetteAdd to cart · $42
On hover. It never moves.

Ink Tag

inkmoonmilkpatina

  • Moonmilk on ink15.13AAA
  • Moonmilk on patina, the hover state6.62AA

Use for: The one main action on a day surface: add to cart, shop the bells.

Not for: Two ink tags side by side. One loud action per view.

Hand holding a jute-wrapped witch bell with a silver triple-moon pentacle, green ribbons and brass bells
Triple MoonJute, grapevine and a silver moon.$36

Patina Tag

patinamoonmilkseafoambrass-light

  • Moonmilk on patina6.62AA
  • Seafoam on patina5.29AA
  • Brass light on patina, 24px and up4.37Large text only
  • Moonmilk soft on patina, hairlines only3.71Never as text

Use for: Hotspot tag cards, product tags, the focus and hover tone.

Not for: Whole sections. Patina is a tag, not a floor; dusk does that job.

Selected: Calm, Love

Seafoam is the wash behind the logo, and the fill of a chosen filter.

Seafoam Wash

seafoaminkpatinaseafoam-2

  • Ink on seafoam12.10AAA
  • Ink soft on seafoam5.54AA
  • Patina on seafoam5.29AA
  • Brass on seafoam, not even ornament2.27Never

Use for: Behind the logo, selected filters, a highlight band under one line.

Not for: Brass anything. It turns to mud on seafoam at 2.27:1.

Ring it in at dusk.

Pick a ring, a ribbon and a charm. The builder waits here, between day and night.

Build your own

Dusk Porch

duskmoonmilkbrass-lightmoonmilk-soft

  • Moonmilk on dusk11.15AAA
  • Brass light on dusk7.37AAA
  • Moonmilk soft on dusk6.25AA
  • Brass on dusk, bells and big type only3.94Large text only

Use for: The builder and the turn from market to night. Brass-light links.

Not for: Small brass (#b8893f) type. Step up to brass-light.

After dark

Still ringing at midnight.

Moonmilk for words, seafoam for the one lit thing, brass for the bells.

Cauldron

cauldronmoonmilkseafoammoonmilk-soft

  • Moonmilk on cauldron15.94AAA
  • Seafoam on cauldron12.75AAA
  • Moonmilk soft on cauldron8.93AAA
  • Brass on cauldron5.62AA

Use for: The story at night and the footer floor. Seafoam for one lit detail.

Not for: Pure black, or a blue night. Cauldron is green-black on purpose.

Brass Tag

brass-lightinktag-brass-hover

  • Ink on brass light9.99AAA
  • Ink on tag brass hover, the hover state11.84AAA
  • Brass deep on brass light, 24px and up3.75Large text only

Use for: The one main action on dusk or night. Price tags on dark photos.

Not for: Day surfaces. Brass-light on mist is 1.49:1, the tag edge vanishes.

On mist

  • Protection5.82pass
  • Calm2.64ring
  • Growth3.29pass
  • Abundance2.22ring
  • Love2.42ring
  • Shadow12.72pass
  • Clarity1.13ring

On dusk

  • Protection1.89ring
  • Calm4.17pass
  • Growth3.35pass
  • Abundance4.96pass
  • Love4.54pass
  • Shadow1.16ring
  • Clarity9.73pass

Ribbon Row

rib-protectionrib-calmrib-growthrib-abundance+3 more

  • Ribbons are graphics, so the bar is 3:1. On mist, calm, abundance, love, clarity fall short.
  • On dusk, protection, shadow fall short.
  • So every swatch wears a 1px ring (ink 20% by day, moonmilk 30% at night) and its word.

Use for: Swatches, ribbons and the builder. Each one always carries its word.

Not for: Type, backgrounds, or color alone to say which intent is which.

Basteleur sings. Supreme talks.

Basteleur Moonlight carries the big lines, with Bold for names and prices. Supreme carries anything someone has to read twice.

.display-xl

Basteleur Moonlight 400
clamp(2.9rem, 1.2rem + 6.4vw, 6rem)
Leading 0.98 · Tracking -0.012em

Hero only. Once per page.

Hang a little magic.

.display-lg

Basteleur Moonlight 400
clamp(2.3rem, 1.2rem + 4.2vw, 4.25rem)
Leading 1.02 · Tracking -0.008em

Big section statements.

Bells for the front door

.display-md

Basteleur Moonlight 400
clamp(1.75rem, 1.1rem + 2.2vw, 2.75rem)
Leading 1.08 · Tracking 0

Section heads, dialog titles.

Wrapped by hand, rung by the door

.title-bold

Basteleur Bold 700
1.3rem
Leading 1.2 · Tracking 0

Product names and small titles.

Marigold Crown

.lede

Supreme 400
clamp(1.125rem, 1rem + 0.45vw, 1.3rem)
Leading 1.55 · Tracking 0

The one intro line under a head. 38ch max.

Each bell is wrapped by hand in jute and grapevine, then hung with brass.

.body

Supreme 400
1.0625rem (17px)
Leading 1.6 · Tracking 0

Everything a customer reads twice.

The ribbons are picked for intent: green for growth, blue for calm, red for protection. Hang it on the door and let it ring every time someone comes home.

.label

Supreme 560
0.8125rem (13px)
Leading 1.6 · Tracking 0.01em

Sentence case. Never uppercase.

Ribbon color

.spaced-caps

Basteleur Moonlight 400, uppercase
0.9rem
Leading 1.6 · Tracking 0.34em

The logo's lockup line. Once per view at most.

Handmade crafts

.price

Basteleur Bold 700, lining figures
inherits
Leading inherits · Tracking 0

Prices only. Sized by its context.

$38

Why this pair

Basteleur is soft and a little eccentric, with a hand-cut feel at big sizes. The Moonlight cut is light enough to sit beside the traced line art of the logo without shouting over it.

Supreme is a plain, even grotesque with a real italic. It stays out of the way at 17px and still reads at 13px on a label, so Basteleur is the only voice with character.

Off-screen pairings

For print, social posts and packaging only. They never load on the shop. Both keep Basteleur's job: one face with character, one that stays quiet.

Hang a little magic on the door.

Each bell is wrapped by hand in jute and grapevine, then hung with three brass bells. The ribbons are picked for intent.

Mazius Display + Switzer

The market sign and the printed card. Mazius has a true extra-italic, so this is the pairing to use when a line needs to lean. Switzer for the small print.

Ring it in at dusk.

A quiet house, a door that sings when it opens. Brass bells, seafoam ribbon, a little silver at the knot.

Boska + Supreme

Packaging, gift tags and the thank-you note in the box. Boska is finer and more formal than Basteleur, so it keeps Supreme to stay in the family.

Never

  • No italic Basteleur. It has none, and a browser-slanted one looks broken. Emphasis in Basteleur is size or the Bold cut.
  • No uppercase labels everywhere. Labels are sentence case. Spaced caps appear once per view, like the logo's own line.
  • Headlines hold to two lines. If a line wraps to three, cut words before you cut the size.
  • No third face on the site. Basteleur and Supreme, nothing else, not even for numbers.

The logo, traced from hers.

Line art traced from the original logo. One lockup, four parts, and it always takes the color of the surface it sits on.

On mist, in ink #14201c.
On cauldron, in moonmilk #eef5f0.

mark.svg

Favicon, stamps, the seal on a gift tag.

word-alter.svg

Only inside the lockup, never alone.

word-amulet.svg

The script. A flourish on packaging.

word-handmade.svg

The lockup's last line. Spaced caps come from here.

Lockup rules

  • Clear space on every side equals the height of the A in ALTER.
  • Smallest sizes: the full lockup at 120px wide, the mark alone at 24px.
  • Ink on day, moonmilk at night. Never brass, never a ribbon color.
  • Never re-set the wordmark in a live font. Use the traced SVG.
  • On a photo, only where the photo is calm. Put the wash behind it first.

Small magic, on purpose.

The house effects, running live. Each one has a single job, and none of them hides a word behind an animation.

Craft tag buttons.tag-btn

A hand-cut tag: pointed end, punched hole. Hover shifts the fill and slides the arrow; the tag itself never moves. Ink by day, brass or light at night.

Hand holding a small grapevine witch bell with dark teal leaves and seafoam ribbons against a sunny window

Arch frame.arch

The doorway silhouette for every product photo. Hover this one: it swings from the top like a bell on a hook, and settles.

Quiet link.quiet-link

For the second action. A tonal color step and the arrow sliding up and out. No underline that grows.

Without
With grain
Without
With grain

Surface grain.grain

Film grain on the surface, behind the words. Multiply at 16% by day, screen at 7% at night. You should feel it, not see it.

Four-point sparkle

The star from the logo, and the only small mark on the site. Brass on day, brass-light at night. Point at one.

NewFirst quarterFull

Moon phases

New to full. The moon in the bar above is the live meter: it waxes as you read down this page, and is full at the footer.

Every time the door opens, the bells ring and the doorway is cleared. That is the whole idea, and it is a good one.

Ink-in text

Words start at ink-soft, which already reads at 6.83:1, and darken to ink as they cross the screen. They never start invisible.

Alcohol-ink wash and gold fleck

Real scans from the logo, not CSS gradients. The wash sits behind type at full strength. The glitter is one fleck under one corner, never a sprinkle.

This band is the hand-off: mist, seafoam, patina, dusk, with grain across the whole run so it never bands. Sections pass their color on. They never stop at a hard line.

Ring them.

No audio files. Each bell is six sine partials and a click of noise, tuned like small brass. The bigger the bell, the lower the note.

Bells ring only after a tap or a key, never on load.

B5988 Hz

D61175 Hz

E61318 Hz

F#61480 Hz

G61568 Hz

A61760 Hz

B61976 Hz

One strike, six partials

A struck bell is not one note. It is a stack of tones at odd ratios, each fading at its own rate, plus 25ms of filtered noise for the clapper. Height is loudness, the faint tail is how long each one rings.

Jingle strikes three or four bells at random pitches within a quarter second. The chime is two soft bells, 988 Hz then 1480 Hz.

The six partials of one bell strike, at ratios 1, 2, 2.76, 5.4, 8.93 and 13.34 of the fundamental.1×2×2.76×5.4×8.93×13.34

Ribbons carry the intent.

Six intents, one ribbon color each. These colors live on product data only: swatches, ribbons and the builder. Never on type, never as a floor.

  • Protection

    Red & black

    Keeps what should stay out, out.

  • Calm

    Blue

    For a house that needs to breathe out.

  • Growth

    Green

    New starts, gardens, slow good things.

  • Abundance

    Gold & marigold

    Plenty at the table and in the jar.

  • Love

    Rose & pink

    Warmth for whoever walks in.

  • Clarity

    White & linen

    Clears the air after a long week.

Protection hangs two strands, red and the shadow black #2a2a2e. Red and black both drop under 3:1 on dusk, so every strand wears a faint moonmilk edge, and every swatch in the shop carries its word.

Short, warm, a little wry.

Write like she talks at the market table. Say what it is, what it is for, and stop.

Say

Hang it where the door swings.

Not: Elevate your entryway.

Red and black, to keep what should stay out, out.

Not: Curated protective energy for your journey.

Sold out for now.

Not: Hurry! Only 2 left!!

Brass bells, jute, a little silver at the knot.

Not: Seamlessly crafted artisanal luxury.

  • Short sentences. Plain words. The maker's voice, not an agency's.
  • No em dashes, no emojis, no exclamation marks in a row.
  • Never elevate, unleash, seamless, curated or journey.
  • Never invent a fact: no names, dates, reviews, stats or shipping promises. Prices come from the product data.