Style guide
How Always & Forever looks and sounds. Values come from packages/ui/src/tokens.css; change them there and this page follows.
Principles
- A private gallery. Paintings on a deep green wall under picture lights, each with a card-stock label beside it.
- Two surfaces only. The wall holds art; catalogue paper holds facts. A dado rail is the only divider.
- Gilt means something. Gold leaf is for frames and rails, not buttons. Most frames are ebony or walnut.
- Everything is square. Art and bands have hard edges; controls are softened by 2 px at most.
- Light comes from above. Walls are lighter at the top and shadows fall down, as under a picture light.
- Plain words. Sentence case, active verbs, specific numbers. A button says what happens.
- Phones first. Design at 375 px, tap targets at least 44 px, one main action per screen.
- Nothing fake. No made-up reviews, ratings, counts or press logos. Sample portraits are labelled as samples.
Color
Salon green
#1f3d35The gallery wall. Background of most pages.
Salon deep
#142a24Shadowed wall: footer and the dado rail.
Salon raised
#29493fPanels sitting on the wall.
Catalogue paper
#f3efe6Information pages, labels, buttons on the wall. Text on the wall.
Card stock
#e6dcc4Label stock and the hover state of paper buttons.
Ink
#1a1f1cText on paper. Fill of the main button on paper.
Antique gilt
#a8873fGold leaf: frames and rails only, never buttons.
Burnished gilt
#e0c88cFrame highlights. Gold text and hairlines on the wall.
Gilt in shadow
#6b5220Frame shading.
Gilt deep
#7a5c1cGold used as text on paper.
Bole
#5e2f1fRed clay under the gold, seen in frame recesses.
Ebony
#1b1815Ebonized frame finish.
Walnut
#5b3b24Walnut frame finish.
Natural oak
#b08a5cPlain natural-oak frame, as a framed print really ships.
Frame white
#ece8dfPlain white frame, as a framed print really ships.
Lichen
#b4c4bcSecondary text on the wall.
Slate
#4e5a54Secondary text on paper.
Verdigris
#8fd1bcFocus ring on the wall.
Verdigris deep
#1d6b57Focus ring on paper.
Ember
#ffab98Error text on the wall.
Ember deep
#a3301fError text on paper.
After dark
#1d2a27Memorial wall: the same room, lights lowered.
After dark, deep
#141e1cMemorial shadowed wall.
After dark, raised
#26352fMemorial panels.
Candle
#d9c393Memorial light and accent.
Contrast, calculated live
Text needs 4.5 to 1. Large text, focus rings and control edges need 3 to 1 (WCAG 2.2 AA).
| Pairing | Used for | Ratio | Result |
|---|---|---|---|
| paper on salon | Body text on the wall | 10.30 : 1 | Pass (4.5) |
| lichen on salon | Secondary text on the wall | 6.51 : 1 | Pass (4.5) |
| lichen on salon-deep | Footer and captions | 8.34 : 1 | Pass (4.5) |
| gilt-light on salon | Gold text and the ampersand on the wall | 7.21 : 1 | Pass (4.5) |
| ink on paper | Body text on paper; button label on the wall | 14.56 : 1 | Pass (4.5) |
| paper on ink | Button label on paper | 14.56 : 1 | Pass (4.5) |
| slate on paper | Secondary text on paper | 6.28 : 1 | Pass (4.5) |
| slate on paper-shade | Secondary text on label stock | 5.28 : 1 | Pass (4.5) |
| gilt-deep on paper | Gold text on paper (step numerals) | 5.42 : 1 | Pass (4.5) |
| ember on salon | Error text on the wall | 6.49 : 1 | Pass (4.5) |
| ember-deep on paper | Error text on paper | 6.10 : 1 | Pass (4.5) |
| verdigris on salon | Focus ring on the wall | 6.76 : 1 | Pass (3) |
| verdigris-deep on paper | Focus ring on paper | 5.56 : 1 | Pass (3) |
| gilt on salon | Gilt rails on the wall | 3.49 : 1 | Pass (3) |
| paper on dusk | Body text, memorial | 12.95 : 1 | Pass (4.5) |
| candle on dusk | Gold text, memorial | 8.62 : 1 | Pass (4.5) |
Type
One family, Newsreader, for everything. Its optical-size axis is picked from the font size, so headlines get the sharp display cut and labels the sturdy text cut. Italic for artwork titles, the memorial heading and dates. Running text uses old-style figures; prices use lining, tabular figures. Headings are fluid between a 375 px phone and a 1280 px desktop.
Display, 40 to 88 px
Painted and framed
Heading 1, 36 to 60 px
A portrait to remember them by
Heading 2, 30 to 46 px
Editions and prices
Heading 3, 24 to 30 px
Choose a style
Heading 4, 20 to 24 px
Approve the painting
Lead, 19 to 22 px
Send a few phone photos and choose one of twelve painting styles.
Body, 18 px
One to ten photos from your phone. We choose the best to paint from.
Small, 16 px
Shipping to the United States only, 2 to 3 business days to print.
Caption, 14 px
Sample portrait of Coco, created from phone photos.
Italic, any px
A King Charles Spaniel, c. 1866
Prices (lining, tabular), any px
From $119, $89, $69 and $24
Wordmark
Paper on the wall, burnished-gilt ampersand
Ink on paper, gilt-deep ampersand
Monogram
- Set in Newsreader with light tracking (+0.01em). The ampersand comes from the italic, in gilt.
- The italic ampersand alone is the house monogram: favicon, seals, the colophon ornament.
- Never stretch, outline, add shadows or put the wordmark on a photo.
- Keep clear space around it equal to the height of the capital A. Smallest size: 20 px.
Frame and placard
The signature. Every frame the site shows is a real Lumaprints frame we sell (gold, black, white, natural oak, and silver floating frames for canvas), drawn from their mockup templates at true moulding width. The carved ebony and walnut finishes below are CSS only and no longer used on the site. The label hangs beside or below the frame, never on it.

finish="gilt"
finish="ebony" slip
finish="walnut" mat="mat"
finish="black" profile="slim" mat="mat"
finish="white" profile="slim" mat="mat"
finish="oak" profile="slim"
Coco
Papillon
Classic Oil
Sample portrait
Maple
Golden Retriever
Classic Oil
16 × 20 in
Left: the picture light (the page's one load animation). Right: the label for one of our sample portraits, and the same label set for a customer's portrait.
Buttons, links and focus
Buttons are 52 px tall with a 2 px radius, set in the serif. One primary button per screen: a paper card on the wall, an ink fill on paper. Keyboard focus draws a 3 px verdigris ring: light on the wall, deep on paper. Press Tab to see it.
Form inputs
As you want it on the placard.
Enter an email address like name@example.com.
Sticky action bar
On phones the main action floats at the bottom as a single ink button, inside the safe area, with no bar behind it. It appears once the first button scrolls away and hides near the memorial room and the closing button. From the lg breakpoint it disappears on the landing page. Shown here in flow.
Memorial palette
The memorial path is the same room after dark: a deeper wall and candle-warm light, set with a single attribute, data-mode="memorial". Copy gets gentler and there is no promotion anywhere inside it.

Your pet, painted and framed
Green wall, warm picture light, gilt frame.
Biscuit
Beagle
Watercolor
11 × 14 in
Voice and tone
Do
- Say:
Start your portrait
- Say:
You get two versions and two more attempts, free.
- Say:
Payment comes first, because every portrait is painted to order.
- Say:
Created from your photos, and checked by our team before printing.
- Say:
Take all the time you need. (memorial)
Don't
- Avoid:
Unleash the magic!
- Avoid:
Amazing AI-powered artwork, try it now!!
- Avoid:
Try it free (we do not offer free previews)
- Avoid:
Don't miss out on 20% off! (never for a memorial portrait)
Imagery
- The pet is always the subject. Show the portrait large, in its frame, on the wall.
- Never crop a painting to a circle or round its corners. Frames are rectangles.
- Show real products and real sample portraits, made by our own pipeline and captioned as samples created from phone photos. Never present a sample as a customer's order.
- No stock photos of smiling people holding pets. No made-up customers.
- Every image has alt text that says what it shows. Decorative images have empty alt text.
- Memorial imagery is calm: soft light, no confetti, no sales badges.
