Skip to content
Site volume
Colourway

Foundations

Shape and depth

Radii, rules and the hard offsets that lift paper off paper. Nothing at rest casts a soft shadow.

  • Experimental
On this page

Overprint's shapes come from print: cut paper, inked keylines and plates lifted off the sheet by a hard offset. There are no hairlines in lists, no glassy blur and no soft shadow at rest; soft shadows only appear on things that float above the page for a moment, like menus and dialogs.

Radii

--mk-radius-none
--mk-radius-mark
--mk-radius-chip
--mk-radius-control
--mk-radius-plate
--mk-radius-pill

Borders

--mk-border-thin
--mk-border
--mk-border-thick
--mk-border-heavy

Elevation

--mk-shadow-key: a key's hard offset, closed by a press
--mk-shadow-plate: a printed plate, 0 to 8 px by volume
--mk-shadow-menu: menus and popovers
--mk-shadow-pop: dialogs

Radii#

none for comic panels and Press bands, mark for swatches, chip for tags, control for keys and inputs, plate for cards and art panels, pill for chips that need it. The display voice scales the corners: wide is rounder, condensed is square.

Rules#

Four weights: thin (1.5 px) for small marks and stickers, the default (2 px) for keylines and inputs, thick (3 px) for comic frames, heavy (4 px) for stamps and Press frames. More contrast makes the default 3 px. Raw widths in CSS fail the mk/rule-width lint.

Elevation#

Keys sit on a hard offset that a press closes. Printed plates and art frames take a hard plate offset that grows with the volume, from none at Quiet to 8 px at Rave. Menus, popovers, toasts and dialogs get the soft shadows, because they float.

Tokens#

Shape and depth tokens
TokenValue in this lookVaries byDescription
--mk-radius-noneradius.none0voiceThe none radius.
--mk-radius-markradius.mark3pxvoiceThe mark radius.
--mk-radius-chipradius.chip8pxvoiceThe chip radius.
--mk-radius-controlradius.control10pxvoiceThe control radius.
--mk-radius-plateradius.plate18pxvoiceThe plate radius.
--mk-radius-pillradius.pill999pxvoiceThe pill radius.
--mk-cornercorner1voiceThe current voice's corner scale.
--mk-borderbordercalc(2px + var(--mk-w-hc) * 1px)contrastThe default rule, 2 px (3 px under more contrast).
--mk-border-thinborder.thin1.5pxcontrastA thin rule, for small marks and stickers.
--mk-border-thickborder.thick3pxcontrastA thick rule, for comic frames.
--mk-border-heavyborder.heavy4pxcontrastA heavy rule, for stamps and Press frames.
--mk-shadow-keyshadow.keyvar(--mk-key-offset, 4px) var(--mk-key-offset, 4px) 0 var(--mk-key-edge, var(--mk-ink))themevolumeA key's hard offset.
--mk-shadow-key-pressedshadow.key.pressednonethemevolumeA pressed key: no offset.
--mk-shadow-plateshadow.platevar(--mk-v-plate-offset) var(--mk-v-plate-offset) 0 var(--mk-ink)themevolumeA printed plate's hard offset, 0 to 8 px by volume.
--mk-shadow-menushadow.menu0 18px 40px -16px color-mix(in srgb, var(--mk-shadow-soft) calc(var(--mk-w-bone) * 50% + var(--mk-w-night) * 80%), transparent)themevolumeThe soft shadow of menus and popovers.
--mk-shadow-toastshadow.toast0 18px 40px -16px color-mix(in srgb, var(--mk-shadow-soft) calc(var(--mk-w-bone) * 60% + var(--mk-w-night) * 85%), transparent)themevolumeThe soft shadow of toasts.
--mk-shadow-popshadow.pop0 40px 90px -30px color-mix(in srgb, var(--mk-shadow-soft) calc(var(--mk-w-bone) * 70% + var(--mk-w-night) * 90%), transparent)themevolumeThe soft shadow of dialogs.
--mk-shadow-softshadow.softcolor-mix(in oklab, var(--mk-ink) calc(var(--mk-w-bone) * 100%), #000000)themevolumeThe soft shadow's colour.
--mk-z-basez.base0nothingStacking order: the base layer.
--mk-z-artz.art0nothingStacking order: the art layer.
--mk-z-platez.plate1nothingStacking order: the plate layer.
--mk-z-raisedz.raised2nothingStacking order: the raised layer.
--mk-z-headerz.header40nothingStacking order: the header layer.
--mk-z-dockz.dock45nothingStacking order: the dock layer.
--mk-z-overlayz.overlay60nothingStacking order: the overlay layer.
--mk-z-popoverz.popover65nothingStacking order: the popover layer.
--mk-z-toastz.toast70nothingStacking order: the toast layer.
--mk-z-tooltipz.tooltip80nothingStacking order: the tooltip layer.
--mk-z-cursorz.cursor90nothingStacking order: the cursor layer.
--mk-z-bootz.boot100nothingStacking order: the boot layer.
--mk-z-skipz.skip110nothingStacking order: the skip layer.