Calendar 2025
A card that doesn't link can hold its own actions.
Primary
Primary variant
Secondary
Secondary variant
Background
Surface
Error
Heading 1 - Serif - 150px
Arthur
Heading 2 - Serif - 100px
Kaamelott
Heading 3 - Serif - 56px
Merlin & Élias
Heading 4 - Serif - 32px
Perceval & Karadoc
Heading 5 - 28px - 4.75 Character Space
Yvain, chevalier au Lion ou l'orphelin de Carmélide
Subheading 1 - Serif - 28px
384,400 pintes de bière
Subheading 2 - Condensed Sans-serif - 14px - 2.35 Character Space
Gauvain, chevalier au Pancréas
Nav Text - Condensed Sans-serif - 16px - 2.7 Character Space
Kadoc
Body Text
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus hendrerit. Pellentesque aliquet nibh nec urna. In nisi neque, aliquet vel, dapibus id, mattis vel, nisi. Sed pretium, ligula sollicitudin laoreet viverra, tortor libero sodales leo, eget blandit nunc tortor eu nibh. Nullam mollis. Ut justo. Suspendisse potenti.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus hendrerit. Pellentesque aliquet nibh nec urna. In nisi neque, aliquet vel, dapibus id, mattis vel, nisi. Sed pretium, ligula sollicitudin laoreet viverra, tortor libero sodales leo, eget blandit nunc tortor eu nibh. Nullam mollis. Ut justo. Suspendisse potenti.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus hendrerit. Pellentesque aliquet nibh nec urna. In nisi neque, aliquet vel, dapibus id, mattis vel, nisi.
With an href, a Button is a link that looks like a button, with every variant.

center
Text sits in the middle of the taller image beside it, on both axes.
A Row stacks to one column when the Row itself is narrower than 40rem, whatever the viewport.









Every control wraps a native element, so submission and validation work without JavaScript. Tab through the fields to see the focus ring.
An Input, a Select and a Button of the same size are the same height.
We only use it to answer you.
Enter a postal code such as H2X 1Y4.
A few words about the print you want.
The message can't be empty.
Pick a format.
A native select has no read-only state; use a read-only Input instead.
One email a month.
You must accept the terms.
Framing is quoted separately.
Pick a print size.
Checkbox semantics, toggle look.
Turn this on to continue.
A contact form built from FormFields. Submitting it empty shows the browser's own validation.
FormField's error is set when the page renders. Validation in the browser calls setFieldError instead: leave this field with an invalid email, then fix it.
We only use it to answer you.
A card that doesn't link can hold its own actions.
Only the body is given, so only the body renders.
Heron at dawn New Sold out




Decorative (role="none"), the default:
Semantic (role="separator"), when the division matters to screen-reader users:
| Size | Paper | Edition | Price |
|---|---|---|---|
| 20 × 30 cm | Matte | Open | 45 $ |
| 30 × 45 cm | Lustre | Open | 75 $ |
| 40 × 60 cm | Fine art | 25 | 120 $ |
| 60 × 90 cm | Fine art | 10 | 240 $ |
| Size | Paper | Edition | Price |
|---|---|---|---|
| 20 × 30 cm | Matte | Open | 45 $ |
| 30 × 45 cm | Lustre | Open | 75 $ |
| 40 × 60 cm | Fine art | 25 | 120 $ |
| 60 × 90 cm | Fine art | 10 | 240 $ |
Shipping
Order received
Limited edition
Payment declined
One Toast region sits in the layout. Any script queues a message in it with toast(message, { variant, duration }).
Without JavaScript every panel shows under its heading.
20 × 30 cm, printed on matte paper.
40 × 60 cm, printed on fine-art paper.
60 × 90 cm, mounted on aluminium.
A native modal dialog: Escape or a click outside closes it, and focus returns to the Button that opened it.
Asks for an explicit choice: no close button, and a click outside doesn't close it. Escape cancels.
Last choice:
One Lightbox on the page opens every Gallery image at full size, with its credit. The arrow keys move to the previous or next photo, which it loads ahead of time so that it shows at once.
A site gallery with its own layout opens in the same Lightbox through the gallery-open contract. Its links can also carry a srcset and sizes for the full-size photo, and a caption that shows under it. A caption longer than three lines scrolls, and Tab reaches it to scroll it with the keyboard.
A small panel anchored to its trigger. Escape or a click outside closes it.
Fine-art print
Pigment ink on 310 g cotton rag, signed and numbered on the back.
Shows on hover and on keyboard focus, and describes its trigger. It sits above, or below when there is no room above.