Wine Chips — print document. File → Print, or download the PDF.

Back to the guide

Wine Chips


The Wine Chips Style Guide

PROVISIONAL, v1.0.0 — a DESCRIPTIVE extraction dated 2026-09-07, not ratified brand law. It documents what the live Shopify storefront, the committed Rally artwork and the wc-gorgias design system ship today. Eleven decisions (W-1..W-11) are open, the palette and the vector logo masters are unresolved, and this brand is published to the `next` channel only.

Distilled from

    Contents

    01Identity
    02Assets
    03Voice
    04Colour
    05Typography
    06Iconography
    07Layout
    08Motion
    09Components
    10Hard rules

    Identity

    What the brand is

    Wine Chips is a premium lattice-cut potato chip engineered for one job: to be eaten with wine. Invented in 2017 in Paw Paw, Michigan by people who wanted cheese and wine in the same hand, it is sold direct on winechips.com, through the Private Reserve Club subscription, through the Rally fundraising programme, and through wholesale and partner channels.

    The emotion

    Simply delicious, paired perfection.

    The tension

    Vinous

    premium · considered · cellar-dark · grown-up

    Snackable

    bold · cheesy · loud · unserious

    Personality

    • Warm and unpretentious — a wine brand that refuses to be precious about wine
    • Bold in flavour language: boldest, cheesiest, most satisfying
    • Founder-voiced — the story is told in the first person plural, with the joke left in
    • Appetite-first: the product is food before it is a lifestyle
    • Generous — clubs, fundraisers and partners are all invitations, not funnels
    • Confident about craft (lattice-cut, small batch) without a tasting-note vocabulary

    It feels

    • Appetising
    • Warm
    • Convivial
    • Premium but relaxed
    • Handmade
    • Bold
    • Celebratory
    • Midwestern-direct

    It never feels

    • Clinical
    • Corporate-beige
    • Sommelier-snobbish
    • Cold or minimal for its own sake
    • Diet-food
    • Like a generic Shopify theme with a logo dropped in

    The customer

    Wine drinkers who entertain — home hosts, club members, tasting rooms, gift buyers, and the fundraising organisers and sellers who move the product through Rally. They are buying a moment with a bottle open, not a nutrition panel.

    Visual references

    • The plum wordmark on white — a single-ink lettering mark, never recoloured outside the two shipped cuts
    • A white page with a plum-tinted wash and one cream band, punctuated by a wine-red announcement rail
    • The wine → plum horizontal gradient behind a testimonial or club band
    • Arvo slab headings in caps over Montserrat body copy — the storefront's own pairing
    • Product photography of tubes and lattice chips against warm neutral grounds

    Signatures — the moves only this brand makes

    The wine rail

    A full-bleed wine-red (#A6192E) announcement bar at the top of every page, white 16px Arvo, that carries the current flavour or offer. It is the only place the brand shouts.

    The wine-to-plum gradient

    linear-gradient(90deg, rgba(166,25,46,1) 0%, rgba(81,42,68,1) 100%) — the horizontal band behind a club, testimonial or partner section. Wine on the left, plum on the right, always 90deg, never reversed.

    The cream band

    A #FBF3DA section ground used for logo lists, press strips and 'as seen on' rails — the only warm ground in the system and the only alternative to white.

    Caps with air

    Section headings are Arvo 400 in uppercase at 0.1em tracking; nav and buttons are Montserrat with 1px letter-spacing. Nothing in the brand is set in sentence case above body size.

    The plum ink

    Body copy, links, footer text and the wordmark are all one colour — plum #512A44. The brand reads as a single ink, not as a grey ramp.

    The 2px corner

    Buttons, inputs and cards carry a 2px radius — almost square. Roundness in this brand is a 25px pill or a full circle, never a soft 8px corner.

    Assets

    Served from the live bundle

    Every mark is content-addressed: the file behind it cannot change without changing its address, so what is printed here is exactly what the estate was serving on the day this document was made.

    Wine Chips wordmark

    Logo · Locked

    logo.wordmark

    RoleCutThemeFormatSizeAs served
    inverseinversedarkpng2489 × 267Wine Chips wordmark knocked out in white

    White knockout — for a plum block, the wine rail, a photograph or a dark email · inverse · on --wc-plum · web

    wordmarkone-colorlightpng2489 × 267Wine Chips wordmark in plum

    Plum on light — the highest-resolution cut in the fleet · one-color · on --wc-surface · web

    wordmarkone-colorlightpng313 × 72Wine Chips wordmark in plum, storefront cut

    Plum on light, 313 px — the exact file the storefront header serves today · one-color · on --wc-surface · web

    Licence — Wine Chips, Inc. · All rights reserved. Used inside the Wine Chips fleet only. · redistributable yes

    Minimum width — 120px on screen. The lockup is a raster, so it is never scaled above its natural width — 2489px for the Rally cut, 313px for the storefront cut.

    Never

    • Never recolour. Plum on light and white on dark are the only two cuts that exist.
    • Never outline, emboss, add a shadow or place it on a busy photograph without a plum scrim.
    • Never stretch, condense, rotate or set at an angle.
    • Never rebuild it in live type — it is custom lettering, and no font in this guide draws it.
    • Never scale a raster above its natural width; ask for the vector master instead (D-WC1).

    Favicon

    App icon · Locked

    appicon.favicon

    RoleCutThemeFormatSizeAs served
    faviconone-coloranypng32 × 32Wine Chips favicon

    32 x 32 — the only icon the live site serves · one-color · on --wc-white · web

    Licence — Wine Chips, Inc. · All rights reserved. · redistributable yes

    Never

    • Never the only icon a platform is given: 32px is below every modern requirement.
    • Never upscaled to fill a 180px or 512px slot.

    Social share image

    Share image · Tunable

    og.social

    RoleCutThemeFormatSizeAs served
    oganyjpg1707 × 1028Wine Chips tubes, spring range

    The og:image and twitter:image the storefront serves — a seasonal product photograph, not a designed card · social

    Licence — Wine Chips, Inc. · All rights reserved. · redistributable yes

    Never

    • Never treated as a designed social card: it carries no wordmark and its 1.66:1 ratio crops unpredictably at 1.91:1.

    Arvo

    Font · Locked

    font.display

    RoleCutThemeFormatSizeAs served
    fontanywoff2

    Arvo Regular 400 — the exact WOFF2 the storefront serves (arvo_n4) · web

    Licence — Anton Koovit · The binary's own name table records 'Copyright (c) 2010 Anton Koovit.' and a licence URL of http://www.korkork.com/license/arvo/; the upstream Google Fonts distribution of Arvo is SIL Open Font License 1.1, and OS/2 fsType is 0 (installable embedding, no restriction). Confirm the licence line with the owner — D-WC1, item 5. · redistributable yes

    Montserrat

    Font · Locked

    font.sans

    RoleCutThemeFormatSizeAs served
    fontanywoff2

    Montserrat Regular 400 — the exact WOFF2 the storefront serves (montserrat_n4) · web

    Licence — The Montserrat Project Authors · SIL Open Font License 1.1, declared in the binary's own name table; OS/2 fsType is 0. Free to use, embed and redistribute with the licence. · redistributable yes

    Montserrat Bold

    Font · Locked

    font.sans-bold

    RoleCutThemeFormatSizeAs served
    fontanywoff2

    Montserrat Bold 700 (montserrat_n7). Declared under its own family name because the master's emitter writes one weightless @font-face per font asset — see drift. · web

    Licence — The Montserrat Project Authors · SIL Open Font License 1.1, declared in the binary's own name table; OS/2 fsType is 0. · redistributable yes

    Montserrat Italic

    Font · Locked

    font.sans-italic

    RoleCutThemeFormatSizeAs served
    fontanywoff2

    Montserrat Italic 400 (montserrat_i4), italic angle -11.3 degrees · web

    Licence — The Montserrat Project Authors · SIL Open Font License 1.1, declared in the binary's own name table; OS/2 fsType is 0. · redistributable yes

    Montserrat Bold Italic

    Font · Locked

    font.sans-bold-italic

    RoleCutThemeFormatSizeAs served
    fontanywoff2

    Montserrat Bold Italic 700 (montserrat_i7) · web

    Licence — The Montserrat Project Authors · SIL Open Font License 1.1, declared in the binary's own name table; OS/2 fsType is 0. · redistributable yes

    Voice

    How the brand speaks

    Principles

    • Lead with appetite. Flavour and occasion come before provenance, and provenance before process.
    • Favour: bold · cheesy · satisfying · lattice-cut · paired · snackable · dip-able · designed exclusively for wine · try every bold flavour.
    • Avoid: tasting-note vocabulary, sommelier register, diet and wellness claims, and any health or nutrition claim the label does not carry.
    • Keep the joke in. The founder story is funny on purpose and the copy does not edit the humour out.
    • Second person for the shopper, first person plural for the company. 'We made Wine Chips because we love wine and we love cheese.'
    • Never imply an award, rating or press mention the brand does not hold; the press strip names only real placements.
    • American spelling throughout — the storefront, the labels and the fundraising platform are all US.

    Microcopy, as shipped

    ContextWhat it says
    Home hero headlineTHE BOLDEST, CHEESIEST, EASIEST, MOST SATISFYING WINE SNACK YOU'LL EVER HAVE
    Meta description / search snippetThe Boldest, Easiest, Most Satisfying Potato Chip You'll Ever Have. Wine Chips are the Only Chip Designed Exclusively for Wine. Try Every Bold Flavor!
    Announcement rail⏰ OUR NEW FLAVOR: HAWAIIAN LUAU 🏝️
    Product category headingPREMIUM LATTICE-CUT CHIPS
    Merchandising headingTODAY'S POPULAR ITEMS & GIFTABLES
    Collections headingCOLLECTIONS
    Press / event bandTHE ASPEN FOOD & WINE CLASSIC
    Our Story eyebrowSIMPLY DELICIOUS, PAIRED PERFECTION.
    Our Story headingMADE WITH LOVE, WHILE DRINKING WINE
    Our Story heading (second)BOLD, CHEESY & SATISFYING!
    Founder story, openingWe made Wine Chips because we love wine and we love cheese (who doesn't?) but realized that putting the cheese IN the wine was a bad idea for both.
    Founder story, the wishSo one evening in 2017, over a glass of wine (ok maybe two), we wished for something simple, portable, dip-able, endlessly snack-able, cheese-ladened and delicious.
    Founder story, the payoffAnd just like that (ok, it took a lot of work, a lot of samples, a lot of wine and the dedication of more than a few passionate oenophiles, exuberant chip connoisseurs and mildly lazy party guests) the wine chip was born.
    Primary CTASHOP NOW
    Secondary CTAOUR STORY
    Newsletter headingJOIN THE COMMUNITY
    Newsletter submitSubscribe
    Primary navigationOUR STORY · PARTNERS · SHOP · PRIVATE RESERVE CLUB
    Cart drawer headingJust added to your cart
    Cart drawer actionsView cart · Continue shopping
    Support addresshello@winechips.com
    Registered addressWine Chips, Inc. · 61675 M 40 · Paw Paw, MI 49079
    Rally fundraising tagline (wc-fundraiser-platform email templates)Premium snacks. Real fundraising.
    Slideshow assistive textUse left/right arrows to navigate the slideshow or swipe left/right if using a mobile device
    Variant select assistive textChoosing a selection results in a full page refresh. Press the space key then arrow keys to make a selection.

    Capitalization

    • Section headings (h2–h6) are UPPERCASE with 0.1em tracking — that is a type rule, not a copy rule, and the copy is written in sentence case in the CMS.
    • The hero headline is typed in caps in the source and stays that way.
    • Buttons and navigation are uppercase with 1px letter-spacing.
    • Product and flavour names are Title Case: Hawaiian Luau, Private Reserve Club.
    • The brand is two words with a capital C: Wine Chips. Never WineChips outside a file name, a handle (@winechips) or a domain.
    • Body copy is sentence case. h1 is the one heading level that is NOT transformed to uppercase by the stylesheet.

    Colour

    The palette, as declared

    Every value is documented in every mode the brand declares. Each swatch is painted over its own surface’s ground, so an alpha value prints as what it is rather than as a flat tint.

    Storefront

    The white page the shop, the story, the club and the campaign pages are built on: one plum ink, one wine-red signal, a plum-tinted wash and a cream band.

    • Storefront declared at :root

    Brand identity

    TokenRoleStorefront
    --wc-plum

    The brand ink and the wordmark colour

    The single most-attested Wine Chips value: it is --color-text and --color-body-text on the storefront, the one colour in the wordmark PNG the storefront serves, the one colour in both Rally logo cuts (there rounded to #522A44), and the anti-aliasing hue of the favicon. Provenance: https://winechips.com/ inline :root.

    #512A44
    --wc-wine

    The single signal accent

    The announcement rail, the primary button fill, the newsletter submit, the active nav item and the left stop of the signature gradient. 13 occurrences in the storefront's theme.css, every one a signal. Provenance: https://winechips.com/cdn/shop/t/1/assets/theme.css.

    #A6192E
    --wc-wine-bright

    The wine at hover

    The announcement rail's hover ground. Provenance: storefront section settings, .announcement-bar__link:hover.

    #DA213C
    --wc-plum-light

    Plum at focus

    --color-text-focus on the storefront: the colour a plum link takes on focus/hover. Provenance: storefront inline :root.

    #83446E
    --wc-cream

    The warm ground

    The section band behind logo lists, press strips and 'as seen on' rails. Provenance: storefront theme.css, four section rules.

    #FBF3DA
    --wc-white

    Paper

    --color-body / --color-bg. Provenance: storefront inline :root.

    #FFFFFF
    --wc-graphite

    The shipped neutral action fill

    --color-btn-primary, and the value of the storefront's own <meta name="theme-color">. A neutral, not a brand colour — see decision W-8 and drift.

    #3A3A3A
    --wc-graphite-deep

    Graphite pressed

    --color-btn-primary-darker. Provenance: storefront inline :root.

    #212121

    Grounds

    TokenRoleStorefront
    --wc-surface

    The page

    --color-bg / --color-body.

    #FFFFFF
    --wc-surface-alt

    The wash — feature rows, the footer, alternating sections

    A plum-tinted near-white (hue 330). Provenance: storefront theme.css .site-footer and four #shopify-section rules.

    #F6F4F5
    --wc-surface-warm

    The cream band — logo lists, press strips, 'as seen on'

    On the inverted surface this role becomes the wine band, because a plum block's warm ground is wine, not cream.

    #FBF3DA

    Ink

    TokenRoleStorefront
    --wc-ink

    Body copy, headings, links, the wordmark

    --color-text / --color-body-text.

    #512A44
    --wc-ink-muted

    The footer's secondary ink

    Shipped as the footer's default colour. It is a warm-neutral graphite rather than a plum, which is the one place the brand's single-ink rule is broken on the live site — see drift.

    #333232
    --wc-ink-dim

    Footer link hover, meta text

    Shipped as .site-footer a:hover.

    #5A5858
    --wc-on-ink

    Ink on a plum or graphite fill

    #FFFFFF

    Accent and action

    TokenRoleStorefront
    --wc-accent

    The signal — announcement rail, primary button, active nav

    On the inverted surface this resolves to the cream, because wine on plum is 1.9:1 and cannot carry a signal.

    #A6192E
    --wc-accent-hover

    The signal at hover

    #DA213C
    --wc-on-accent

    Label on the signal

    #FFFFFF
    --wc-link

    A link at rest — the same plum as body copy

    The storefront sets a { color: var(--color-text) }: links are not a different colour, they are the same ink.

    #512A44
    --wc-link-hover

    A link at hover and focus

    #83446E
    --wc-action

    The neutral button fill the theme still ships

    --color-btn-primary. theme.css overrides a.btn to the wine, so the graphite survives mainly on secondary and tertiary buttons — recorded as drift.

    #3A3A3A
    --wc-action-hover

    The neutral button at hover

    --color-btn-primary-focus.

    #606060
    --wc-on-action

    Label on the neutral fill

    #FFFFFF

    Lines and fills

    TokenRoleStorefront
    --wc-border

    The default hairline

    --color-border.

    #EBEBEB
    --wc-border-form

    A control edge

    --color-border-form.

    #CCCCCC
    --wc-border-strong

    A control edge, emphasised

    --color-border-form-darker.

    #B3B3B3
    --wc-hairline-footer

    The footer rule

    A plum-tinted hairline. Provenance: storefront footer section settings.

    #DFD8DC
    --wc-fill-subtle

    The lightest plum wash

    --color-bg-alt.

    rgba(81, 42, 68, 0.05)
    --wc-fill-soft

    A plum wash — empty states, chips

    --color-blankstate-background.

    rgba(81, 42, 68, 0.10)
    --wc-fill-strong

    A plum wash, emphasised

    --color-bg-currency-selector / --color-blankstate-border.

    rgba(81, 42, 68, 0.20)
    --wc-focus-ring

    The focus halo

    The storefront spends it as box-shadow: 0 0 0 4px rgba(var(--color-text-rgb), 0.25) (3px on dense controls).

    rgba(81, 42, 68, 0.25)

    Status

    TokenRoleStorefront
    --wc-positive

    Success fill and rule

    Shipped as .form-message--success border and ink.

    #1F873D
    --wc-positive-ink

    Success as small text

    #1D7E39
    --wc-positive-bg

    Success message ground

    Shipped as .form-message--success background.

    #F8FFF9
    --wc-negative

    Error fill, rule and ink

    Shipped as .input--error / .form-message--error. Measures 5.61 / 5.13 / 5.06 : 1 — it needs no accessible variant.

    #D20000
    --wc-negative-ink

    Error message body copy

    Shipped as .form-message--error colour: a deep wine-brown, 11.80:1 on the error ground.

    #651818
    --wc-negative-bg

    Error message ground

    Shipped as .input--error / .form-message--error background.

    #FFF8F8
    --wc-sale

    The sale price

    --color-sale-text.

    #EA0606
    --wc-sale-ink

    The sale price as small text

    #DD0606
    --wc-in-stock

    The in-stock mark

    Shipped as .icon-in-stock fill.

    #00730B

    Type roles (root-scoped)

    TokenRoleStorefront
    --font-display

    The heading face — Arvo

    The emitter writes this into :root, so a consumer sets font-family: var(--font-display) on a heading and needs nothing else; the bundled @font-face supplies Arvo from the content-addressed store. The storefront's own --font-stack-header alias is untouched.

    Arvo, Rockwell, 'Roboto Slab', Georgia, serif
    --font-sans

    The UI and body face — Montserrat

    The grammar-legal equivalent of the storefront's --font-stack-body.

    Montserrat, 'Helvetica Neue', Helvetica, Arial, sans-serif

    Plum block

    A section that deliberately runs dark on a light site: the plum ground, the wine band and the wine-to-plum gradient the club, testimonial and partner sections are built on. Mount .wc-on-plum and every role token remaps; no component is recoloured by hand.

    • Plum block declared at .wc-on-plum
    • Inherits from editorial

    Grounds

    TokenRolePlum block
    --wc-surface

    The plum block

    #512A44
    --wc-surface-alt

    One step out of the block

    Same hue and saturation as the plum (320 deg, 0.32), lightness 0.24 -> 0.28.

    #5E314F
    --wc-surface-warm

    The wine band — the right-hand stop of the signature gradient

    In the editorial register this role is the cream; on a plum block the warm ground IS the wine. Provenance: storefront #shopify-section-lander-testimonial-1 and the 90deg wine-to-plum gradient.

    #A6192E

    Ink

    TokenRolePlum block
    --wc-ink

    Body copy and headings on a plum block

    A plum-tinted near-white rather than pure white: 11.12 / 9.67 / 7.01 : 1 across the three inverted grounds.

    #FAF6F9
    --wc-ink-muted

    Secondary ink on a plum block

    8.33 / 7.25 / 5.25 : 1 across the plum, the plum step and the wine band — the wine band is the binding ground for every ink on this surface.

    #E2D4DE
    --wc-ink-dim

    Meta ink on a plum block

    7.48 / 6.51 / 4.71 : 1.

    #DAC8D4
    --wc-on-ink

    Ink on a light fill inside a plum block

    #512A44

    Accent and action

    TokenRolePlum block
    --wc-accent

    The signal on a plum block — the cream, not the wine

    Wine on plum measures 1.90:1 and cannot carry meaning. The brand's own warm light does: 10.73 / 9.34 / 6.76 : 1. This is the inverted register's single most important remap (decision W-3).

    #FBF3DA
    --wc-accent-hover

    The signal at hover

    #FFFFFF
    --wc-on-accent

    Label on the cream signal

    #512A44
    --wc-link

    A link on a plum block

    #FAF6F9
    --wc-link-hover

    A link at hover on a plum block

    #FBF3DA
    --wc-action

    The outline button the storefront ships on dark art

    On a hero or a plum block the storefront's button is background: 0 0; color: #fff; border: 2px solid #fff — a knockout outline, not a fill.

    #FFFFFF
    --wc-action-hover

    That outline at hover

    #FBF3DA
    --wc-on-action

    Ink inside a knocked-out button once it fills

    #512A44

    Lines and fills

    TokenRolePlum block
    --wc-border

    Hairline on a plum block

    rgba(250, 246, 249, 0.16)
    --wc-border-form

    Control edge on a plum block

    rgba(250, 246, 249, 0.32)
    --wc-border-strong

    Emphasised edge on a plum block

    rgba(250, 246, 249, 0.55)
    --wc-hairline-footer

    Rule on a plum block

    rgba(250, 246, 249, 0.20)
    --wc-fill-subtle

    Lightest wash on a plum block

    rgba(250, 246, 249, 0.05)
    --wc-fill-soft

    Wash on a plum block

    rgba(250, 246, 249, 0.10)
    --wc-fill-strong

    Emphasised wash on a plum block

    rgba(250, 246, 249, 0.20)
    --wc-focus-ring

    The focus halo on a plum block

    Cream at 55%: the plum halo is invisible against a plum ground.

    rgba(251, 243, 218, 0.55)

    Status

    TokenRolePlum block
    --wc-positive-ink

    Success as text on a plum block

    #8FE6A8
    --wc-negative

    Error on a plum block

    #FFBDBD
    --wc-negative-ink

    Error body copy on a plum block

    #FFE1E1
    --wc-negative-bg

    Error ground on a plum block

    Opaque rather than a translucent red: an alpha ground over a plum block cannot be measured for contrast without knowing what is behind it, and an error message is the last place to guess.

    #531313
    --wc-sale-ink

    The sale price on a plum block

    #FFBEBE
    --wc-in-stock

    The in-stock mark on a plum block

    #8FE6A8

    Typography

    Set in the real faces, at true size

    The faces

    Arvo

    --font-display 400 only on the storefront (arvo_n4). The packaging toolchain also loads a 700 cut, which the web does not. · upright only

    Every heading level, the announcement rail, and nothing else. Arvo is the brand's voice at size; it never sets body copy, UI labels or a data value.

    Served by the Shopify font CDN at //winechips.com/cdn/fonts/arvo/arvo_n4.cf5897c91bef7f76bce9d45a5025155aa004d2c7.woff2 and declared in the storefront's inline @font-face block. The binary's own name table records 'Copyright (c) 2010 Anton Koovit.' and a licence URL of http://www.korkork.com/license/arvo/; the upstream Google Fonts distribution of Arvo is SIL Open Font License 1.1, and the file's OS/2 fsType is 0 (installable, no embedding restriction). Independently corroborated as the brand's display face by the packaging toolchain, which loads Arvo Regular and Bold alongside the label artwork.

    Arvo, Rockwell, 'Roboto Slab', Georgia, serif

    • h1 is Arvo 400 at 48px desktop / 45px mobile, line-height 1.2, letter-spacing 0, case untransformed.
    • h2–h6 are Arvo 400 UPPERCASE at 0.1em tracking, line-height 1.2.
    • Never below 17px — the smallest heading the storefront sets is h6 mobile at 17px, and the slab serifs close up below that.
    • Never italic: no italic cut is licensed, loaded or drawn, so an italic Arvo on screen is a synthesised oblique.
    • The operator register carries no Arvo at all — a dense tool is Montserrat throughout (decision W-6).

    Montserrat

    --font-sans 400 and 700. --font-weight-body is 400; --font-weight-body--bold and --font-weight-body--bolder are both 700, so the storefront has no 500 or 600 cut loaded and the nav's font-weight: 600 renders as a synthesised weight. · roman + italic

    Body copy, product copy, buttons, navigation, form fields, prices, legal text, and every word of the operator register.

    Served by the Shopify font CDN at //winechips.com/cdn/fonts/montserrat/ in five cuts (n4, n7, i4, i7 and a duplicate n7) and declared in the storefront's inline @font-face block. Each binary's own name table records 'Copyright 2011 The Montserrat Project Authors' and 'This Font Software is licensed under the SIL Open Font License, Version 1.1'; OS/2 fsType is 0.

    Montserrat, 'Helvetica Neue', Helvetica, Arial, sans-serif

    • Base size 14px at line-height 1.5. Rich text runs 16px large / 12px small.
    • Buttons and navigation are 700 uppercase with 1px letter-spacing.
    • Type floor is 12px in both registers.
    • Only two weights are loaded. A 500 or 600 declaration is a synthesised weight, not a cut — see drift.
    • Italic is available in both weights and is used for a transcript or an aside, never for emphasis inside a heading.

    The scale

    TokenValueSpent by
    --wc-text-base14pxbody, button, input, select, textarea — the storefront's --font-size-base, at line-height 1.5
    --wc-text-h148px / 45pxh1 and .h1 — desktop / below 750px. Arvo 400, line-height 1.2, letter-spacing 0, case untransformed
    --wc-text-h228px / 25pxh2 and .h2 — the section heading. Arvo 400 UPPERCASE, 0.1em tracking, line-height 1.2
    --wc-text-h336px / 28pxh3 — --font-size-header desktop, --font-h3-mobile below 750px
    --wc-text-h424px / 22pxh4 — the newsletter and footer column headings
    --wc-text-h520px / 18pxh5
    --wc-text-h619px / 17pxh6 — the smallest heading in the system, and the type floor for Arvo
    --wc-text-mega90px--font-mega-title-large-desktop — the slideshow's largest headline cut, desktop only
    --wc-text-lead16px--font-rich-text-large, and the announcement rail message
    --wc-text-small12px--font-rich-text-small, legal and meta copy — the type floor
    --wc-text-pagination15px.pagination
    --wc-tracking-heading0.1emh2–h6 uppercase headings
    --wc-tracking-ui1px.btn, #SiteNav — uppercase buttons and navigation
    --wc-leading-body1.5body, input, textarea, select
    --wc-leading-heading1.2h1–h6
    --wc-space-heading17.5pxthe bottom margin of every heading
    --wc-space-paragraph19.444pxthe bottom margin of a paragraph

    Specimens

    Hero headline

    THE BOLDEST, CHEESIEST, EASIEST, MOST SATISFYING WINE SNACK YOU'LL EVER HAVE

    Arvo 400 · 48px desktop / 45px mobile · line-height 1.2 · tracking 0 · case untransformed (the copy is typed in caps)

    Mega slideshow headline

    SIMPLY DELICIOUS

    Arvo 400 · 90px · desktop only · the slideshow's largest cut

    Section heading

    PREMIUM LATTICE-CUT CHIPS

    Arvo 400 · 28px desktop / 25px mobile · UPPERCASE · tracking 0.1em · line-height 1.2

    Sub-section heading

    MADE WITH LOVE, WHILE DRINKING WINE

    Arvo 400 · 36px desktop / 28px mobile · UPPERCASE · tracking 0.1em

    Column heading

    JOIN THE COMMUNITY

    Arvo 400 · 24px desktop / 22px mobile · UPPERCASE · tracking 0.1em

    Smallest heading

    COLLECTIONS

    Arvo 400 · 19px desktop / 17px mobile · UPPERCASE · tracking 0.1em — the heading floor

    Announcement rail

    OUR NEW FLAVOR: HAWAIIAN LUAU

    Arvo 400 · 16px · white on wine · padding 11px 22px (55px inline above 750px)

    Body copy

    We made Wine Chips because we love wine and we love cheese (who doesn't?) but realized that putting the cheese IN the wine was a bad idea for both.

    Montserrat 400 · 14px · line-height 1.5 · plum · 19.444px bottom margin

    Lead / rich text large

    So one evening in 2017, over a glass of wine (ok maybe two), we wished for something simple, portable, dip-able, endlessly snack-able, cheese-ladened and delicious.

    Montserrat 400 · 16px · line-height 1.5

    Button label

    SHOP NOW

    Montserrat 700 · 14px · UPPERCASE · tracking 1px · padding 10px 18px · radius 2px

    Navigation

    OUR STORY · PARTNERS · SHOP · PRIVATE RESERVE CLUB

    Montserrat · 14px · UPPERCASE · tracking 1px · padding 4px 15px 5px. The theme asks for weight 600, which is not a loaded cut — see drift.

    Price

    $14.00

    Montserrat 400 · 14px · plum; a sale price is --wc-sale-ink and the regular price is struck through

    Meta and legal

    Wine Chips, Inc. · 61675 M 40 · Paw Paw, MI 49079

    Montserrat 400 · 12px · --wc-ink-dim — the type floor

    Form message

    Please enter a valid email address.

    Montserrat 400 · 14px · --wc-negative-ink on --wc-negative-bg inside a 1px --wc-negative rule, padding 1rem 1.3rem

    Rules

    • Two families, two jobs. Arvo sets every heading; Montserrat sets every other word. There is no third face and no display alternate.
    • Type floor is 12px in both registers; the heading floor is 17px.
    • Uppercase is the default for headings h2–h6, for buttons and for navigation — with tracking (0.1em on headings, 1px on buttons and nav). Uppercase without tracking is never correct.
    • h1 is the only heading the stylesheet leaves untransformed; the hero copy is typed in caps instead.
    • Body copy is Montserrat 400 at 14px / 1.5 in plum; a paragraph's bottom margin is 19.444px and a heading's is 17.5px.
    • Numerals in the operator register are tabular; a price in the editorial register is not.
    • Never set an order number, a SKU, an email address or a customer name in uppercase.

    Iconography

    A system, not a folder

    The system

    PropertySpecification
    LibraryEditorial: the Shopify Debut icon sprite (a small closed set drawn to a 20 × 20 box, filled with currentColor). Operator: Lucide, the icon set the wc-gorgias design system installs alongside shadcn/ui.
    StyleOne weight, one metaphor per concept, no duotone and no filled-and-outlined pairs of the same glyph. An icon carries a label unless the control is one of the six the whole web already knows (search, cart, account, close, back, menu); an icon alone is never the only carrier of an action's meaning.
    GridEditorial 20 × 20 (.icon is width: 20px; height: 20px). Operator 24 × 24 on a 2px keyline, rendered at 16px in a table row and 20px in a toolbar.
    StrokeEditorial icons are FILLED (fill: currentColor) and carry no stroke. Operator icons are stroked at 1.5px with round caps and joins, and are never filled.
    Corner2px on a stroked terminal in the operator set, matching the brand's 2px corner; nothing in either set is drawn with a radius above 2px except a true circle.

    Sizes, drawn at the declared value

    TokenValueUseAt size
    20pxEditorial — the storefront default (.icon)
    16pxOperator — inside a table row, a chip or a dense button
    20pxOperator — toolbar, sidebar rail and empty-state
    24pxOperator — the drawing grid, and an empty-state or error illustration

    Rules

    Not a matter of taste

    • Colour comes from currentColor. An icon is never given a colour of its own; it inherits the ink of the thing it labels.
    • The two sets are never mixed on one surface: a storefront page uses the Debut sprite, an operator screen uses Lucide.
    • A social platform's own mark keeps that platform's colour and is exempt from currentColor (.icon--full-color).
    • No brand mark is ever redrawn as an icon; the wordmark is an asset, not a glyph.
    • An icon-only control carries a visually-hidden label (.icon__fallback-text) — the storefront already ships the pattern.

    Layout

    Three breakpoints, everything else fluid

    Spacing, drawn at the declared value

    TokenDeclaredAt this measure
    --wc-space-gutter

    The page's inline padding above 750px, and the vertical rhythm between sections

    55px
    --wc-space-gutter-sm

    The page's inline padding below 750px

    22px
    --wc-space-grid

    The grid gutter above 750px (.grid margin-left: -30px)

    30px
    --wc-space-grid-sm

    The grid gutter below 750px

    22px
    --wc-space-block

    Feature-row inner padding, and the bottom margin of a product card

    35px
    --wc-space-control

    Button padding above 750px (8px 15px below)

    10px 18px
    --wc-space-field

    Input and textarea padding

    8px 15px

    Structure

    TokenValueRole
    --wc-page-max1200px.page-width — the only content measure in the system
    --wc-header-logo-max250px.site-header__logo-image, the shop's own setting
    --wc-header-pad0 55px.site-header above 750px
    --wc-announce-pad11px 22px.announcement-bar__message (55px inline above 750px)
    --wc-field-min-height42px / 46px.input-group__field — below / above 750px
    --wc-footer-pad45px 0 55px.site-footer (35px bottom below 750px)
    --wc-radius2pxButtons, inputs, cards, the input group's outer corners
    --wc-radius-pill25pxThe one pill in the system
    --wc-radius-circle50%Avatars, dots, the cart count, the scroll-to-top control
    --wc-border-width1pxEvery hairline; a knockout button on dark art is 2px
    --wc-focus-width4pxThe focus halo (3px on dense controls)

    The breakpoint canon

    WidthMeaningNote
    749pxSmall — the single-column phone layout@media only screen and (max-width: 749px) — 90 rules
    750pxMedium — the page opens to 55px gutters and the 30px grid@media only screen and (min-width: 750px) — 133 rules, the system's real hinge
    990pxLarge — the desktop navigation and multi-column feature rows@media only screen and (min-width: 990px) — 11 rules
    1400pxWidescreen — one slideshow refinement only@media only screen and (min-width: 1400px) — 1 rule

    Container queries — the other axis

    ContainerDeclared onArms

    Max widths

    WidthUsed by
    1200px.page-width — every page
    500pxA feature-row image
    400pxThe cart popup and the predictive-search panel
    300pxA drawer column
    160pxA payment-icon row

    The z stack

    z-indexUsed by
    1–5In-flow content: slideshow layers, product media, overlay captions
    8Drawer contents
    9The drawer itself
    10The announcement bar
    11The sticky site header
    999–1000The cart popup and the predictive-search overlay
    9999–10000Third-party app layers (scroll-to-top, review widgets). Not the brand's own scale — see drift.

    Policies

    • One measure: 1200px. There is no second container width and no full-bleed exception except a slideshow, a feature row's image and the announcement rail.
    • The gutter is 55px above 750px and 22px below. The grid gutter is 30px / 22px on the same hinge.
    • 750px is the layout's only real hinge; 990px and 1400px are refinements, not layouts.
    • Sections stack at a 55px rhythm. A section never sets its own top and bottom margin independently.
    • The brand's own z-index scale ends at 11. Anything above 999 is a third-party layer the brand does not own.
    • Nothing is sticky except the header. There is no sticky CTA, no sticky filter bar and no sticky footer.

    Motion

    Curves, durations, and what is banned

    Easings

    CurveTokenValueSpent on
    --wc-easecubic-bezier(0.29, 0.63, 0.44, 1)The storefront's default — every hover, reveal and slideshow transition
    --wc-ease-quickcubic-bezier(0.44, 0.13, 0.48, 0.87)A dense control: the quantity stepper, a disclosure toggle
    --wc-ease-inoutease-in-outA background-colour change on a button or a rail
    --wc-ease-linearlinearThe loading spinner only

    Durations

    TokenValueSpent on
    --wc-duration-instant100msA background-colour change (button, announcement rail)
    --wc-duration-quick200msA small hover: icon, chip, nav item
    --wc-duration-base450msThe default — image reveals, slideshow slides, drawer open
    --wc-duration-spin500msOne rotation of the loading spinner

    Keyframes

    NameDefinitionUse
    spin0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }The button spinner while a form or an add-to-cart is in flight. 500ms infinite linear, and the ONLY looping animation in the editorial register.
    image-loader0% { background-color: var(--wc-fill-subtle); } 50% { background-color: var(--wc-fill-soft); } 100% { background-color: var(--wc-fill-subtle); }The plum-tinted placeholder wash behind a lazy-loading product image. The shipped keyframe holds one colour at all three stops, so it does not actually animate — see drift.

    Choreography

    Reveal

    An image or a section fades and lifts into place once, over 450ms on --wc-ease. It never replays on scroll-back.

    Hover lift

    A product card raises its border to --wc-border-strong and its image scales to at most 1.04 over 450ms. It never translates more than 2px and it never adds a shadow.

    Rail hover

    The announcement rail crossfades wine to --wc-accent-hover over 100ms. Nothing moves.

    Drawer

    The cart and mobile-nav drawers slide in over 450ms on --wc-ease, dimming the page behind them. Focus moves into the drawer and returns to the trigger on close.

    Banned

    • Bounce and elastic easing
    • Spring overshoot
    • Parallax on a product image
    • Auto-playing video with sound
    • Carousels that advance without the reader asking
    • Blinking or flashing text
    • Motion that is the only carrier of a state change
    • Decorative loops inside a cart, a checkout, a form or an operator table

    Reduced motion

    • Under prefers-reduced-motion: reduce, the image-loader pulse and the button spinner stop; the slideshow does not auto-advance and exposes its arrows and dots; hover lifts do not translate and keep only their colour and border transitions; the cart drawer and the search overlay appear at their final position rather than sliding. Nothing in either register is communicated by motion alone (decision W-7).

    Components

    Printed from the live stylesheet

    Chrome

    Announcement rail

    The full-bleed wine rail at the very top of every page. One line, Arvo 400 at 16px, white on --wc-accent, optionally a link.

    .announcement-bar.announcement-bar__message.announcement-bar__link

    StateSpecification
    Rest--wc-accent ground, --wc-on-accent ink, padding 11px 22px (55px inline above 750px), 1px transparent bottom border, z-index 10
    Hover (link)ground crossfades to --wc-accent-hover over 100ms ease-in-out; the ink does not change
    Dismissedthe rail is removed from flow; nothing collapses under it
    • One message at a time. The rail never stacks and never scrolls its content.
    • It is the only element in the system allowed to be a full-bleed field of --wc-accent.
    • Never set below 16px and never in Montserrat — this is Arvo's one non-heading job.

    Site header

    A white header with the wordmark centred, 250px maximum, over a navigation row.

    .site-header.site-header__logo.site-header__logo-image.logo-align--center

    StateSpecification
    Rest--wc-surface ground, padding 0 55px above 750px, logo margin 15px 0, z-index 11
    Smallbelow 750px a 1px --wc-border bottom rule appears and the padding drops to the 22px gutter
    • The wordmark is an image asset, never live type.
    • The header carries no shadow — a hairline is the whole separation.
    • The logo never exceeds 250px wide on the storefront, and never scales above the shipped asset's natural width.

    Primary navigation

    Four uppercase Montserrat items with 1px tracking; the third (Private Reserve Club) carries a wine ground as a permanent highlight.

    #SiteNav.site-nav__link

    StateSpecification
    Rest--wc-ink, padding 4px 15px 5px, uppercase, tracking 1px
    Hover / focus--wc-link-hover with a 1px underline
    Highlighted item--wc-accent ground with --wc-on-accent ink — the club item only
    Focus-visiblea 4px --wc-focus-ring halo
    • At most one highlighted item. A second wine ground in the nav is a second accent.
    • The theme asks for font-weight 600, which is not a loaded Montserrat cut; use 700 (drift).

    Site footer

    A --wc-surface-alt block with link columns, a newsletter, social marks and the registered address.

    .site-footer.site-footer__hr.site-footer__linklist.site-footer__copyright-content

    StateSpecification
    Rest--wc-surface-alt ground, --wc-ink-muted default ink, padding 45px 0 55px, 55px top margin
    Links--wc-ink at rest, --wc-ink-dim on hover with a 1px underline
    Rulea 1px --wc-hairline-footer border-bottom
    • The footer is the one region where the ink is a neutral rather than the plum — a shipped inconsistency recorded as drift, not a licence to add greys elsewhere.
    • Social marks are --wc-ink, not the platforms' own colours, in the footer row.

    Social marks

    A row of platform marks at 20px, filled with currentColor.

    .social-icons__link.icon--full-color

    StateSpecification
    Rest--wc-ink
    Hover--wc-ink-dim
    Share buttons.btn--share keeps each platform's own brand colour and is exempt from currentColor
    • A footer social row is monochrome. A share button is not.

    Actions

    Button — primary

    The wine action. Montserrat 700 uppercase with 1px tracking on a 2px corner.

    .btn

    StateSpecification
    Rest--wc-accent ground, --wc-on-accent label, 1px transparent border, radius 2px, padding 10px 18px (8px 15px below 750px)
    Hover / focusground --wc-accent-hover over 100ms ease-in-out
    Focus-visiblea 4px --wc-focus-ring halo outside the border
    Disabled--wc-fill-strong ground, --wc-ink-dim label, cursor default, no hover
    Busythe label is replaced by the spin keyframe at 500ms linear; the button keeps its width
    • White on wine measures 7.50:1 — the primary button is the brand's most accessible surface and should not be softened.
    • Never full-width above 750px except inside an input group.
    • One primary button per view. A second wine fill competes with the rail.

    Button — secondary

    A transparent button with a --wc-action border and label. The theme's neutral action, still shipped alongside the wine primary.

    .btn--secondary.btn--secondary-accent

    StateSpecification
    Resttransparent ground, --wc-action border and label, radius 2px
    Hover / focusborder and label move to --wc-action-hover; the ground stays transparent
    On an image.btn--secondary-accent swaps the ground to --wc-surface so the label stays readable
    • Secondary never fills on hover — it is a border button in every state.
    • The neutral graphite here is the storefront's shipped value, not a brand colour (decision W-8).

    Button — knockout

    The button the storefront ships on a hero image or a plum block: transparent, 2px white border, white uppercase label.

    .btn.slideshow__btn.wc-on-plum .btn

    StateSpecification
    Resttransparent ground, 2px --wc-action border, --wc-action label
    Hover / focusfills to --wc-action with a --wc-on-action label
    Focus-visiblea cream --wc-focus-ring halo
    • The border is 2px here and 1px everywhere else — a knockout needs the weight against photography.
    • Never place a wine fill on a plum block; the knockout is the dark-ground primary.

    Editorial

    Hero / slideshow

    A full-bleed image with a left-aligned text box, a headline and up to two buttons. Separate desktop and mobile art.

    .slideshow.slideshow__image.slideshow__text-box.slideshow__text-content

    StateSpecification
    Resttext-align left, an image overlay at 0.17 opacity (0.57 on hover) over --wc-image-overlay
    Smallthe mobile image replaces the desktop image below 750px
    Advancing450ms on --wc-ease; arrows and dots are always present
    • Art direction: keep focal subjects right of centre — the left is where the headline lands.
    • The slideshow never auto-advances under prefers-reduced-motion.
    • A headline over photography is always --wc-on-ink over the overlay, never plum.

    Feature row

    A two-column image-and-text band, alternating side, on white or --wc-surface-alt.

    .feature-row.feature-row__text.feature-row__image

    StateSpecification
    Resttext padding 35px block, 35px inline on the inner edge; image max-width 500px
    Smallstacks, image first, text padding-bottom 0
    • Alternate the image side down the page; never two rows the same way running.
    • The band's ground alternates white / --wc-surface-alt and never uses the cream — the cream is for logo and press strips.

    Cream band

    The one warm section ground: a --wc-surface-warm band carrying a logo list, a press strip or an 'as seen on' rail.

    #shopify-section-lander-logo-list#shopify-section-lander-as-seen-on

    StateSpecification
    Rest--wc-surface-warm ground, --wc-ink copy, 30px block padding
    • Only for third-party marks and press. Never a product band, never a CTA band.
    • Third-party logos keep their own colour; they are not knocked back to plum.
    • At most one cream band per page.

    Wine-to-plum band

    The signature dark band: linear-gradient(90deg, rgba(166,25,46,1) 0%, rgba(81,42,68,1) 100%), carrying a testimonial, a club pitch or a partner message.

    .wc-on-plum

    StateSpecification
    Restmount .wc-on-plum; every role token remaps, the accent becomes the cream and the button becomes a knockout
    Flat varianta solid --wc-surface-warm (#A6192E) band where the gradient would fight the content
    • The gradient is always 90deg and always wine on the left. It is never rotated, reversed or animated.
    • One dark band per page. Two turn a light brand into a dark one.
    • Never place cream type on the wine end or wine type on the plum end — use --wc-ink.

    Rich text

    CMS-authored prose: paragraphs at 14px, large at 16px, small at 12px, headings on the Arvo scale.

    .rte.rte-setting

    StateSpecification
    Rest--wc-ink at line-height 1.5; a link is --wc-ink with a 1px underline
    Link hover--wc-link-hover
    • A rich-text block never introduces a colour. Everything it can render is already a role token.
    • Lists and blockquotes stay inside the 1200px measure; a blockquote is a 2px --wc-accent left rule.

    Commerce

    Product card

    An image, a plum title and a price in a 30px grid. No card ground, no border, no shadow.

    .grid-view-item.grid-view-item__title.grid-view-item__image

    StateSpecification
    Resttransparent ground, --wc-ink title, 35px bottom margin
    Hoverthe image scales to at most 1.04 over 450ms on --wc-ease; the title takes --wc-link-hover
    Sold outa --wc-fill-soft badge with --wc-ink-muted label; the image drops to 60% opacity
    On salethe regular price is struck through in --wc-ink-dim and the sale price is --wc-sale-ink
    • The card is the image. No panel, no border, no shadow.
    • The title is never uppercase — a product name is Title Case.

    Price

    Montserrat 400 at 14px in plum; on sale the regular price is struck and the sale price takes the sale ink.

    .price.price--on-sale.price-item--sale.price-item--regular

    StateSpecification
    Rest--wc-ink
    On sale.price--on-sale hides the regular price row and shows .price__sale; .price-item--sale is --wc-sale-ink
    Unit price--wc-ink-dim at 12px beneath the price
    • A sale price is small text, so it uses --wc-sale-ink (5.12:1), not the shipped --wc-sale (4.64:1) — decision W-9.
    • Never colour a regular price. Only a sale price carries a hue.

    Cart drawer and popup

    A right-hand drawer (z-index 9, contents at 8) and a lighter 400px popup confirming an add-to-cart.

    .drawer.cart-popup

    StateSpecification
    Openingslides in over 450ms on --wc-ease; the page behind dims
    Rest--wc-surface ground, 1px --wc-border hairlines, padding 0.2rem 1.5rem 1rem in the popup
    Reduced motionappears at its final position with no slide
    • Focus moves into the drawer on open and returns to the trigger on close.
    • Escape closes. The dim behind is a click target that also closes.
    • The popup heading is 'Just added to your cart' and the two actions are 'View cart' and 'Continue shopping'.

    Forms

    Input and textarea

    Montserrat 400 at 14px, 8px 15px padding, a 1px --wc-border-form edge and a 2px corner.

    inputtextareaselect.disclosure__toggle.input--error

    StateSpecification
    Rest--wc-surface ground, --wc-ink text, 1px --wc-border-form edge
    Hoveredge to --wc-border-strong
    Focusa 3px --wc-focus-ring halo; the edge stays
    Error--wc-negative edge and text on a --wc-negative-bg ground; the placeholder is --wc-negative at 0.5 opacity
    Disabled--wc-fill-subtle ground, --wc-ink-dim text, no halo
    • Font-size is 16px on touch to stop iOS zooming; 14px above 750px.
    • An error state always carries a message as well as the colour.
    • Placeholder text is never the label.

    Input group

    A field and a button welded into one control: the field takes the left 2px corners, the button the right.

    .input-group.input-group__field.input-group__btn

    StateSpecification
    Restmin-height 42px below 750px, 46px above; field radius 2px 0 0 2px, button radius 0 2px 2px 0
    Smallthe pair stacks and each half regains all four corners
    • The button inside an input group is always the primary wine.
    • The field's flex-basis is 15rem and it grows; the button never does.

    Form message

    A full-width message block above a form: a 1px rule, a tinted ground and a matching ink.

    .form-message.form-message--success.form-message--error

    StateSpecification
    Success1px --wc-positive rule, --wc-positive-bg ground, --wc-positive-ink text, padding 10px
    Error1px --wc-negative rule, --wc-negative-bg ground, --wc-negative-ink text, padding 1rem 1.3rem
    • A link inside an error message is underlined and stays --wc-negative-ink.
    • The message names what to do next, not only what went wrong.

    Newsletter

    An email field and a wine Subscribe button under a JOIN THE COMMUNITY heading, inside the footer.

    .site-footer__item-inner--newsletter.btn.newsletter__submit

    StateSpecification
    Restan input group on --wc-surface-alt; the submit is --wc-accent
    Submittedthe group is replaced by a success form-message
    • The consent line sits under the field, at 12px in --wc-ink-dim, and is never hidden behind a link.

    Navigation

    Pagination

    Centred inline page numbers at 15px with 55px of space above.

    .pagination

    StateSpecification
    Rest--wc-ink numbers
    Current--wc-ink at 700, not a fill
    Hover--wc-link-hover
    Disabled--wc-ink-dim, no pointer
    • The current page is a weight change, not a wine chip. Wine is reserved for actions.

    States

    Empty, error and loading

    The three states every commerce surface owes a shopper.

    .blankstate.image-loader.btn .icon-spinner

    StateSpecification
    Empty--wc-fill-soft ground, 1px --wc-fill-strong rule, --wc-ink-muted copy, and one primary action
    Loadinga --wc-fill-subtle placeholder block for an image; a 500ms linear spinner inside a busy button. No shimmer.
    Errora form-message error block, or a page-level message with a way back to the shop
    • An empty state always offers the next action.
    • A loading state never blocks the whole page.
    • No skeleton shimmer anywhere in the editorial register.

    Hard rules

    Not a matter of taste

    Colour

    • Plum #512A44 is the brand's single ink. Body copy, links, footer text, social marks and the wordmark are all plum; the brand does not run a grey text ramp.
    • Wine red #A6192E is the ONE signal accent: the announcement rail, the primary button, the newsletter submit, the active nav item. There is never a second accent hue.
    • Cream #FBF3DA is a GROUND, never an ink and never a fill on a control. It is the section band for logo lists, press strips and 'as seen on' rails.
    • Burgundy #7C2D3E, #722F37 and #7F1D1D are NOT Wine Chips. Three internal tools independently invented them; no artwork, no packaging and no live storefront surface uses any of the three (decision W-1).
    • Gold #C5943A / #C9A84C is not a Wine Chips brand colour. It appears only inside two internal tools and has no storefront or packaging source (decision W-1).
    • A dark region is entered by mounting .wc-on-plum (or the operator register's dark mode), which remaps every role token. Components are never recoloured by hand for a plum ground.
    • On a plum or wine ground the signal is CREAM, not wine — wine on plum is 1.9:1 and cannot carry meaning. --wc-accent resolves to #FBF3DA on the inverted surface for exactly this reason.
    • Status colour is never the only channel. A success, a warning or an error carries an icon or a word as well as its hue.

    Typography

    • Arvo sets every heading and nothing else. Montserrat sets every other word in both registers.
    • Headings h2–h6 are uppercase at 0.1em tracking; buttons and navigation are uppercase at 1px. Uppercase without tracking is never correct.
    • Type floor 12px, heading floor 17px, in both registers.
    • Only Montserrat 400 and 700 are loaded. Declaring 500 or 600 produces a synthesised weight, which is a bug, not a style.

    Shape

    • The brand corner is 2px. A pill is 25px, a circle is 50%, and nothing else is rounded in the editorial register.
    • The operator register's corner is 0.5rem (8px), inherited from the wc-gorgias design system, and it is a register difference rather than a drift — a dense tool needs a softer corner than a 14px storefront (decision W-5).
    • Structure comes from hairlines, not from shadow. The only two shadows in the system are the overlay pair; a card, a row, a panel and a table never carry one.

    Layout

    • The editorial page is 1200px maximum with 55px gutters above 750px and 22px below; the grid gutter is 30px desktop / 22px mobile.
    • The operator shell is three panels — 288px sidebar, fluid main, 384px context — above 1280px, and the context panel becomes a sheet below it.

    Motion

    • Meaningful motion is 450ms or less; the storefront's own easing is cubic-bezier(0.29, 0.63, 0.44, 1). The operator register caps at 250ms.

    Assets

    • The wordmark ships in exactly two colourways — plum on light, white on dark. It is never recoloured, never outlined, never given a shadow and never set in live type.
    • No vector master exists. Every shipped mark is a raster, so a lockup is never scaled above its natural width (2489px for the Rally cut, 313px for the storefront cut) — the gap is decision W-4 and gate D-WC1.

    Voice

    • The founder story keeps its jokes. Product copy does not make health, diet or wellness claims, and the press strip names only real placements.

    Governance

    • This guide is DESCRIPTIVE and PROVISIONAL: it documents what the live storefront and the internal tools ship today. Nothing here is ratified brand law until the owner closes gate D-WC1.
    • Rally, the Private Reserve Club and DaVinci are not yet decided sub-brands. Until D-WC2 is ruled they are consumers of this brand, not brands of their own.
    • Print builds are unspecified. No Pantone, CMYK or RAL value exists anywhere in the fleet for any Wine Chips colour, and none has been invented here.

    Wine Chips · The Wine Chips Style Guide · PROVISIONAL, v1.0.0 — a DESCRIPTIVE extraction dated 2026-09-07, not ratified brand law. It documents what the live Shopify storefront, the committed Rally artwork and the wc-gorgias design system ship today. Eleven decisions (W-1..W-11) are open, the palette and the vector logo masters are unresolved, and this brand is published to the `next` channel only.