Internal reference
Blackwing Style Guide
Canonical patterns for buttons, typography, spacing, and layout. Examples below use the same reusable tm-text-* classes as the live storefront.
Typography system
Esteban serif for display/editorial headlines · Source Sans 3 for body, nav, buttons, and UI. Minimum readable body = 16px. Do not shrink meaningful copy to fit layouts — adjust width, wrapping, or spacing first.
| Role | Class | Desktop | Mobile | Line-height |
|---|---|---|---|---|
| Display / H1 | tm-text-display | 52–72px clamp | 40–52px | 1.02–1.08 |
| Section H2 | tm-text-h2 | 40–48px | 30–36px | 1.08–1.18 |
| H3 / Editorial | tm-text-h3 | 24–30px | 22–26px | 1.15–1.25 |
| Category title | tm-text-category-title | 20–24px | 18–22px | 1.2–1.3 |
| Body large | tm-text-body-lg | 17–18px | 16–17px | 1.5–1.65 |
| Body default | tm-text-body | 16px min | 16px min | 1.5–1.6 |
| Small supporting | tm-text-small | 14–15px | 14–15px | 1.45–1.55 |
| Eyebrow | tm-text-eyebrow | 13–14px | 13–14px | tracked uppercase 600 |
| Nav | tm-text-nav | 15–16px | 15px | 1.4–1.5 |
| Product name | tm-text-product-name | 16–18px | 16px | 1.2–1.3 |
| Price | tm-text-price | 16–18px 700 | 16px | 1.2–1.3 |
| Health labels | tm-text-health | 14–15px 600 | 14px | 1.45 |
| Button text | tm-text-button + btn-* | 14–15px 600 | 14px | 1.2 |
Live examples — production classes
Premium game & exotic meats
Shop by Protein Type
Clean land. Cleaner standards.
Bison (Buffalo)
Health-conscious proteins, wild flavor, and pantry favorites delivered direct to your door.
Every box arrives vacuum-sealed and still frozen solid — packed like a wholesale butcher that cares.
Supporting detail, card captions, and attribution lines.
Why Blackwing
View all Products
Ground Bison — 1 lb
$14.99
Grass Fed · No Antibiotics
Good
tm-text-bodyfor paragraphs (16px min)tm-text-eyebrowfor section labels (13–14px)tm-text-navfor header links (15–16px)- Widen column or allow wrap before reducing type size
Blackwing works with game and specialty proteins sourced from animals raised on large pastures.
Bad — do not use on meaningful content
text-xs(12px) on body, nav, or product copy- Arbitrary
text-[0.6875rem]/ 10–11px values - Tight
leading-4or wide tracking on paragraphs - Shrinking headlines to avoid layout changes
This 12px paragraph is too small for storefront body copy.
Readability rules
- Never use
text-xson meaningful storefront content. - Body copy minimum 16px — use
tm-text-body. - Navigation 15–16px — use
tm-text-nav. - Eyebrows 13–14px uppercase — use
tm-text-eyebrow. - Health / sourcing labels 14–15px — use
tm-text-health. - Button labels 14–15px semibold — use
btn btn-*(inheritstm-text-buttonscale). - Display headlines use Esteban via
--tm-font-heading; UI uses Source Sans via--tm-font-ui. - Do not shrink text to fit — adjust spacing, wrapping, or width first.
- Line-height: 1.5+ for body; 1.08–1.18 for large display.
- Source of truth = reusable
tm-text-*classes in templates, not one-off pixel utilities.
Button & CTA system
Semantic roles — one system. Pills are intentional Blackwing signature. Tokens: primary = oxblood commerce, secondary = gold commerce/decoration.
1. Transactional primary (oxblood)
btn-primary — Add to Cart, Proceed to Checkout, and other highest-intent conversion actions. TMBase assigns semantics; Blackwing supplies oxblood via --color-primary.
2. Commerce secondary (gold fill)
btn-secondary — supporting gold actions (e.g. Create Account on login). Not transactional Add to Cart.
3. Homepage hero (gold exception)
btn-hero-primary / btn-hero-secondary — scoped gold CTAs on dark hero imagery only. Uses secondary tokens; do not use on product cards or PLP.
4. Editorial primary (black)
btn-editorial — login, newsletter, and strong non-transactional editorial actions on light surfaces. Not checkout or Add to Cart.
5. Editorial outline (gold stroke)
btn-outline — supporting editorial CTAs on light surfaces (cart drawer secondary, View All sections).
6. Commerce / utility secondary
Outline, no gold fill. Select Options · Request Product.
7. Tertiary / navigation link
Text + arrow. Category nav, View All, Shop by Protein.
CTA usage rules
- Oxblood (
btn-primary) = Add to Cart, Proceed to Checkout, PLP/homepage card ATC, and other transactional conversion. - Gold fill (
btn-secondary) = supporting gold actions — not transactional ATC or checkout. - Hero gold (
btn-hero-primary,btn-hero-secondary) = homepage hero only on dark imagery. - Black (
btn-editorial) = login, newsletter, and editorial primary on light surfaces — not checkout. - Gold outline (
btn-outline,btn-utility) = cart drawer secondary, View All sections, product-card utility. - Text + arrow (
link-cta) = navigation and category discovery. - Removed:
btn-commerce(TMBase now usesbtn-primaryfor transactional actions).accenttokens →secondary.
Spacing rhythm
8px base scale. Section padding typically py-10 md:py-14; card gaps gap-5 sm:gap-6 lg:gap-8.
Removed guidance: Do not use text-xs or text-sm for body copy on the storefront. Do not use gold-filled pills for category navigation. Do not mix inline one-off button styles — use btn-*, link-cta, and tm-text-* only. Old “Functional UI — 14–15px via text-sm” note replaced by tm-text-button.