Remixes of bakerroofing.com
Latest remixes
No public remixes yet. Be the first to make one.
Remix itLatest remixes
No public remixes yet. Be the first to make one.
Remix itSwitch between the rendered Visual preview and the Raw DESIGN.md.
version: alpha
name: Bakerroofing
description: |
Baker Roofing's design system embodies industrial confidence and heritage
craftsmanship merged with modern clarity. The palette merges warm earth tones
with bold red accents, evoking both the safety and durability of roofing work
and the company's century-long legacy. Typography is emphatic and
uppercase-heavy, commanding attention with compressed, geometric letterforms
that communicate strength and reliability. Hero imagery dominates the
experience, layered with dark gradient overlays to ensure text legibility and
maintain focus on messaging. The overall mood is professional yet
approachable—this is a company with deep roots that builds and protects, and
the design reflects both authority and trustworthiness through restrained use
of colour, generous whitespace, and a disciplined hierarchical system.
source:
url: "https://bakerroofing.com"
pagesAnalyzed: 1
extractedAt: 2026-11-08
tokensMeasured: true
colors:
primary: "#FD3A20"
canvas: "#F5F5F5"
surface: "#3B3835"
surface-alt: "#165051"
on-primary: "#F5F5F5"
ink: "#3B3835"
body: "#D0BA95"
neutral-1: "#FFFFFF"
typography:
display-xxl:
fontFamily: field-gothic-xcondensed
fontSize: 119.952px
fontWeight: 600
lineHeight: 1
letterSpacing: -1.2px
textTransform: uppercase
display-xl:
fontFamily: field-gothic-xcondensed
fontSize: 98px
fontWeight: 600
lineHeight: 0.78
letterSpacing: 0px
textTransform: uppercase
display-lg:
fontFamily: field-gothic-xcondensed
fontSize: 97.92px
fontWeight: 600
lineHeight: 0.8
letterSpacing: -0.98px
textTransform: uppercase
display-md:
fontFamily: field-gothic-xcondensed
fontSize: 48px
fontWeight: 600
lineHeight: 0.83
letterSpacing: -0.48px
textTransform: uppercase
display-md-loose:
fontFamily: field-gothic-xcondensed
fontSize: 48px
fontWeight: 600
lineHeight: 0.84
letterSpacing: 0px
textTransform: uppercase
display-sm:
fontFamily: field-gothic-xcondensed
fontSize: 47.52px
fontWeight: 600
lineHeight: 0.9
letterSpacing: 0px
textTransform: uppercase
heading-md:
fontFamily: field-gothic-xcondensed
fontSize: 28px
fontWeight: 400
lineHeight: 0.86
letterSpacing: 0px
textTransform: uppercase
heading-md-strong:
fontFamily: trade-gothic-next
fontSize: 28px
fontWeight: 700
lineHeight: 1.15
letterSpacing: 0px
heading-sm:
fontFamily: field-gothic-xcondensed
fontSize: 24px
fontWeight: 600
lineHeight: 1
letterSpacing: -0.24px
textTransform: uppercase
quote:
fontFamily: field-gothic-xcondensed
fontSize: 63.936px
fontWeight: 600
lineHeight: 0.9
letterSpacing: 0px
textTransform: uppercase
body-xl:
fontFamily: field-gothic-xcondensed
fontSize: 24px
fontWeight: 400
lineHeight: 0.86
letterSpacing: 0px
textTransform: uppercase
body-xl-strong:
fontFamily: field-gothic-xcondensed
fontSize: 24px
fontWeight: 600
lineHeight: 1.5
letterSpacing: 0px
textTransform: uppercase
body-xl-trade-gothic-next:
fontFamily: trade-gothic-next
fontSize: 24px
fontWeight: 700
lineHeight: 1.33
letterSpacing: 0px
body-lg:
fontFamily: trade-gothic-next
fontSize: 16px
fontWeight: 400
lineHeight: 1.6
letterSpacing: 0px
body-lg-tight:
fontFamily: trade-gothic-next
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
body-md:
fontFamily: trade-gothic-next
fontSize: 14px
fontWeight: 400
lineHeight: 1.4
letterSpacing: 0.84px
textTransform: uppercase
button:
fontFamily: trade-gothic-next
fontSize: 14px
fontWeight: 400
lineHeight: 1.29
letterSpacing: 0px
rounded:
none: 0px
xs: 4px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 24px
xxl: 28px
xxxl: 32px
section: 36px
band: 40px
borderWidths:
thin: 1px
shadows:
sm: "rgba(0, 0, 0, 0.25) 0px 20px 60px 0px"
md: "rgba(0, 0, 0, 0.08) 0px 14px 30px 0px"
lg: "rgba(20, 18, 18, 0.08) 0px 2px 10px 0px"
elevationStrategy: progressive
themes:
derived: dark # the other theme is the site's measured palette
light:
bg: "#F5F5F5"
surface: "#3B3835"
surfaceRaised: "#3B3835"
text: "#3B3835"
textMuted: "#D0BA95"
border: "#DFDEDE"
accent: "#FD3A20"
accentFg: "#000000"
focusRing: "#FD3A20"
elevation: shadow
dark:
bg: "#140B0A"
surface: "#221A19"
surfaceRaised: "#2E2625"
text: "#FFF7F6"
textMuted: "#A69D9C"
border: "#3A3231"
accent: "#FD3A20"
accentFg: "#0B0B0C"
focusRing: "#FD3A20"
elevation: "border+surface"
contrastFailures:
- "light: muted on bg = 1.73:1 (needs 4.5:1)"
- "light: text on surface = 1:1 (needs 4.5:1)"
gradients:
- context: section
kind: linear
value: "linear-gradient(90deg, rgba(0, 0, 0, 0) 31%, rgba(0, 0, 0, 0.4) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/06/history-sign-scaled.webp\")"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.08) 4%, rgba(0, 0, 0, 0.75) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/06/service-roof-repair-scaled.webp\")"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.08) 4%, rgba(0, 0, 0, 0.75) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/06/service-roof-replacement-scaled.webp\")"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.08) 4%, rgba(0, 0, 0, 0.75) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/06/service-restoration-waterproofing.webp\")"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.08) 4%, rgba(0, 0, 0, 0.75) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/06/BRC-Academy-54-400x267.jpg\")"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.08) 4%, rgba(0, 0, 0, 0.75) 100%), url(\"https://bakerroofing.com/wp-content/uploads/2026/07/Dual-Brand-Finished-9-400x300.jpg\")"
components:
button-primary:
typography: "{typography.body-xl}"
textColor: "{colors.neutral-1}"
height: 56px
padding: "16px 20px 16px 20px"
rounded: 3px
backgroundColor: "{colors.primary}"
button-primary-2:
typography: "{typography.body-xl-strong}"
textColor: "{colors.on-primary}"
height: 56px
padding: "10px 20px 10px 20px"
rounded: "{rounded.xs}"
backgroundColor: "{colors.primary}"
button-text:
typography: "{typography.button}"
textColor: "{colors.ink}"
height: 44px
button-text-2:
typography: "{typography.body-lg-tight}"
textColor: "{colors.ink}"
height: 44px
card-featured:
typography: "{typography.body-lg-tight}"
textColor: "{colors.on-primary}"
padding: "32px 32px 32px 32px"
rounded: "{rounded.xs}"
backgroundColor: "{colors.surface}"
card:
typography: "{typography.body-lg-tight}"
textColor: "{colors.ink}"
rounded: "{rounded.xs}"
backgroundColor: "{colors.canvas}"
card-sm:
typography: "{typography.display-md}"
textColor: "{colors.ink}"
badge-primary:
typography: "{typography.body-md}"
textColor: "{colors.on-primary}"
height: 43.5938px
padding: "12px 12px 12px 12px"
rounded: "4px 4px 0px 0px"
backgroundColor: "{colors.primary}"
navigation:
typography: "{typography.body-lg-tight}"
textColor: "{colors.ink}"
footer:
typography: "{typography.body-lg-tight}"
textColor: "{colors.ink}"
padding: "68px 0px 72px 0px"
backgroundColor: "{colors.surface}"
link:
typography: "{typography.button}"
textColor: "{colors.ink}"
link-lg:
typography: "{typography.body-lg-tight}"
textColor: "{colors.neutral-1}"
states:
other-focus:
target: other
state: focus
textColor: "rgb(68, 68, 68)"
textDecoration: none
backgroundColor: "rgb(221, 221, 221)"
other-hover:
target: other
state: hover
textDecoration: underline
button-hover:
target: button
state: hover
textDecoration: none
nav-hover:
target: nav
state: hover
backgroundColor: "rgb(212, 47, 26)"
link-hover:
target: link
state: hover
textColor: "{colors.primary}"
link-focus-visible:
target: link
state: focus-visible
outline: "{colors.canvas} solid 2px"
outlineColor: "{colors.on-primary}"
outlineWidth: 2px
card-hover:
target: card
state: hover
filter: "brightness(1.04)"
input-focus-visible:
target: input
state: focus-visible
outline: "{colors.primary} solid 2px"
borderColor: "{colors.ink}"
outlineColor: "{colors.primary}"
outlineWidth: 2px
other-focus-visible:
target: other
state: focus-visible
outline: "{colors.primary} solid 2px"
outlineColor: "{colors.primary}"
outlineWidth: 2px
button-focus-visible:
target: button
state: focus-visible
outline: "rgb(24, 99, 220) solid 2px"
outlineColor: "rgb(24, 99, 220)"
outlineWidth: 2px
breakpoints:
- width: 375
containerWidth: 335
gridColumns: 2
navLinksVisible: 14
menuToggleVisible: true
headingPx: 58
bodyPx: 16
sectionPaddingX: 20
- width: 768
containerWidth: 688
gridColumns: 2
navLinksVisible: 14
menuToggleVisible: true
headingPx: 64
bodyPx: 16
sectionPaddingX: 40
- width: 1024
containerWidth: 880
gridColumns: 4
navLinksVisible: 14
menuToggleVisible: true
headingPx: 85
bodyPx: 16
sectionPaddingX: 72
- width: 1280
containerWidth: 1136
gridColumns: 5
navLinksVisible: 20
menuToggleVisible: true
headingPx: 107
bodyPx: 16
sectionPaddingX: 72
- width: 1440
containerWidth: 1296
gridColumns: 5
navLinksVisible: 20
menuToggleVisible: true
headingPx: 120
bodyPx: 16
sectionPaddingX: 72
coverage:
statesFound: 61
gradientsFound: 6
rolesUnassigned: 1
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: true
semanticRampDeclared: false
Baker Roofing's design system embodies industrial confidence and heritage craftsmanship merged with modern clarity. The palette merges warm earth tones with bold red accents, evoking both the safety and durability of roofing work and the company's century-long legacy. Typography is emphatic and uppercase-heavy, commanding attention with compressed, geometric letterforms that communicate strength and reliability. Hero imagery dominates the experience, layered with dark gradient overlays to ensure text legibility and maintain focus on messaging. The overall mood is professional yet approachable—this is a company with deep roots that builds and protects, and the design reflects both authority and trustworthiness through restrained use of colour, generous whitespace, and a disciplined hierarchical system.
Key Characteristics
{colors.primary} — #FD3A20) used sparingly but decisively for CTAs and accents{colors.primary} — #FD3A20): Primary call-to-action buttons, hover states, active indicators, and brand mark. Energetic red that commands attention without overwhelming.{colors.canvas} — #F5F5F5): Default page background, light card surfaces, and label text when placed on brand-coloured surfaces.{colors.surface} — #3B3835): Primary card and panel backgrounds; dominant headings and body text. Deep charcoal provides strong contrast.{colors.surface-alt} — #165051): Alternating section band colour; used to break up long pages and create visual rhythm.{colors.body} — #D0BA95): Body copy and secondary text. Warm taupe maintains readability while softening the dark surface palette.{colors.neutral-1} — #FFFFFF): Decorative and pure white text or borders; minimal structural use.No explicit error, success, or warning colors are declared in the system. Semantic states are communicated through opacity, transform, and red hover states only.
Primary Display Font: field-gothic-xcondensed — a condensed, geometric sans-serif for all display and heading roles. Fallback: sans-serif.
Secondary Body Font: trade-gothic-next — a neutral, open sans-serif for body, buttons, and form text. Fallback: sans-serif.
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display XL | field-gothic-xcondensed | 98px | 600 | 0.78 | 0px | Largest hero headlines |
| Display XXL | field-gothic-xcondensed | 119.952px | 600 | 1 | -1.2px | Oversized statements; tight tracking |
| Display LG | field-gothic-xcondensed | 97.92px | 600 | 0.8 | -0.98px | Secondary hero size; compressed |
| Display MD | field-gothic-xcondensed | 48px | 600 | 0.83 | -0.48px | Mid-tier section headers; uptight tracking |
| Display MD Loose | field-gothic-xcondensed | 48px | 600 | 0.84 | 0px | Alternative display size; looser tracking |
| Display SM | field-gothic-xcondensed | 47.52px | 600 | 0.9 | 0px | Compact display; secondary emphasis |
| Quote | field-gothic-xcondensed | 63.936px | 600 | 0.9 | 0px | Pull quotes and testimonials |
| Heading MD | field-gothic-xcondensed | 28px | 400 | 0.86 | 0px | Uppercase section subheadings |
| Heading MD Strong | trade-gothic-next | 28px | 700 | 1.15 | 0px | Bold body headings; serif alternative |
| Heading SM | field-gothic-xcondensed | 24px | 600 | 1 | -0.24px | Smaller headings; tight letter-spacing |
| Body XL | field-gothic-xcondensed | 24px | 400 | 0.86 | 0px | Large uppercase body text |
| Body XL Strong | field-gothic-xcondensed | 24px | 600 | 1.5 | 0px | Emphasised large text |
| Body XL Trade Gothic Next | trade-gothic-next | 24px | 700 | 1.33 | 0px | Bold 24px body in serif font |
| Body LG | trade-gothic-next | 16px | 400 | 1.6 | 0px | Primary body copy; generous leading |
| Body LG Tight | trade-gothic-next | 16px | 400 | 1.5 | 0px | Links and tight body text |
| Body MD | field-gothic-xcondensed | 14px | 400 | 1.4 | 0.84px | Uppercase labels and small caps |
| Button | trade-gothic-next | 14px | 400 | 1.29 | 0px | Button and link text |
| Body XS (code) | — | — | — | — | — | Not measured; code styles not extracted |
text-transform: uppercase, reinforcing the industrial, authoritative brand voice.Primary Button
{spacing.md} {spacing.md} {spacing.md} {spacing.md} (16px 20px){colors.primary} (#FD3A20){colors.neutral-1} (#FFFFFF){rounded.xs} (4px)#D63312 (darker red)Primary Button Variant 2
{colors.primary} (#FD3A20){colors.canvas} (#F5F5F5){rounded.xs} (4px)#D63312Text Button
{colors.surface} (#3B3835){rounded.none} (0px)#FD3A20Text Button Variant 2
{colors.surface} (#3B3835){rounded.none} (0px)Featured Card
{spacing.xxxl} (32px){colors.surface} (#3B3835){colors.canvas} (#F5F5F5){rounded.xs} (4px)rgba(253, 58, 32, 0.5) 0px 4px 32px 0px, text #FD3A20Default Card
{colors.canvas} (#F5F5F5){colors.surface} (#3B3835){rounded.xs} (4px)#FD3A20, text-decoration underlineSmall Card
{colors.surface} (#3B3835){rounded.none} (0px)#FD3A20, transform translateX(4px)Text Input
{colors.surface} (#3B3835){colors.neutral-1} (#FFFFFF){colors.surface} (#3B3835){rounded.none} (0px){spacing.md} (16px)#FD3A20, border-color #3B3835Primary Navigation
{colors.surface} (#3B3835){rounded.none} (0px)#FD3A20, background transparent, outline 2px solid #FD3A20#F5F5F5, color #FD3A20Primary Badge
{spacing.sm} (12px){colors.primary} (#FD3A20){colors.canvas} (#F5F5F5){rounded.xs} (4px) on top, {rounded.none} (0px) on bottomDefault Link
{colors.surface} (#3B3835)#FD3A20, text-decoration underline, opacity 0.8Large Link
{colors.neutral-1} (#FFFFFF)#FD3A20, opacity 0.75Footer Section
{colors.surface} (#3B3835){colors.surface} (#3B3835){rounded.none} (0px)Baker Roofing employs a precise 4px base unit with a 10-step scale:
{spacing.xxs} = 4px — Minimal gaps, internal padding on small components{spacing.xs} = 8px — Tight spacing between adjacent elements{spacing.sm} = 12px — Badge and small component padding{spacing.md} = 16px — Standard component padding; primary body text margin{spacing.lg} = 20px — Medium section margins; button padding{spacing.xl} = 24px — Large heading spacing; featured card padding adjustment{spacing.xxl} = 28px — Major content spacing; footer padding{spacing.xxxl} = 32px — Large card padding; section internal spacing{spacing.section} = 36px — Section margin; gap between major content blocks{spacing.band} = 40px — Large band spacing; page section vertical rhythmUsage Context:
{spacing.md} padding internally.{spacing.xxxl} for generous internal breathing room.{spacing.section} (36px) to {spacing.band} (40px) for visual hierarchy.| Viewport | Content Column | Grid Columns | Section Padding-X |
|---|---|---|---|
| 375px | 335px | 2 | {spacing.lg} (20px) |
| 768px | 688px | 2 | {spacing.band} (40px) |
| 1024px | 880px | 4 | 72px |
| 1280px | 1136px | 5 | 72px |
| 1440px | 1296px | 5 | 72px |
The system uses a flexible multi-column grid that scales with viewport. Mobile layouts employ 2 columns with conservative padding; desktop transitions to 4–5 columns at 1024px and above. Maximum container width reaches 1296px at 1440px viewport, providing generous whitespace on ultra-wide displays.
Whitespace is used strategically to frame content and create visual hierarchy rather than as decorative filler. Hero sections employ full-bleed imagery with dark overlays, focusing attention on text. Card-based layouts maintain generous internal padding ({spacing.xxxl}) to prevent visual crowding. Vertical spacing between major sections escalates from {spacing.section} to {spacing.band} to reinforce information structure. The system favours breathing room over density—text blocks, card groupings, and interactive elements are never packed tightly. This approach reflects the brand's professional, confident aesthetic: content matters, and it deserves space to be appreciated.
{rounded.none} = 0px — Cards, overlays, and most container elements; sharp industrial aesthetic{rounded.xs} = 4px — Buttons, badges, and interactive elements; subtle softening without compromising sharpnessThe system is predominantly sharp-cornered, with minimal rounding reserved for interactive components (buttons, badges, inputs). This reinforces the industrial, architectural character of the brand.
1px) — Applied to dividers and light visual separators; used sparingly to maintain visual clarity without adding visual weight.Baker Roofing employs a color-blocking elevation strategy; depth comes from surface colour changes and strategic use of subtle shadows rather than a graduated shadow ladder.
| Level | Treatment | Use |
|---|---|---|
| Base | No shadow; flat surface | Body backgrounds, default text |
| Overlay / Modal | rgba(0, 0, 0, 0.25) 0px 20px 60px 0px | Modal windows and high-priority overlays |
| Dropdown / Floating | rgba(0, 0, 0, 0.08) 0px 14px 30px 0px | Floating panels, dropdowns, hover-state cards |
| Navigation | rgba(20, 18, 18, 0.08) 0px 2px 10px 0px | Navigation header; subtle lift only |
Shadow Philosophy:
Shadows are used sparingly and never as the primary depth indicator. Instead, the system relies on semantic colour shifts (e.g., {colors.surface} for dark surfaces, {colors.canvas} for light surfaces) to establish spatial relationships. When shadows do appear, they are soft and diffuse, conveying subtlety rather than dramatic lift. Hover states employ brightness filters and slight shadows (rgba(253, 58, 32, 0.5) 0px 4px 32px 0px on featured cards) to suggest interactivity without disrupting the flat, industrial aesthetic.
0.40) — Subtle background overlays and disabled states0.45) — Mid-tone overlays on hero imagery to ensure text legibilityThese opacity levels are used exclusively in gradient overlays atop background imagery to preserve content contrast while maintaining visual impact.
{colors.primary} (#FD3A20) intentionally and sparingly—reserve it for primary CTAs, hover states, and brand moments that demand attention.{spacing.xxxl}) to maintain visual breathing room and professionalism.{colors.surface} (#3B3835) for dark surfaces and {colors.canvas} (#F5F5F5) for light surfaces to establish clear hierarchy.#FD3A20, apply brightness filters, or use transform (translateX) to signal interactivity.{rounded.none} (0px) for most surfaces, {rounded.xs} (4px) for interactive elements only.{colors.primary} as a background for body text or large content blocks; reserve it for focal interactive elements.{colors.surface}) with light backgrounds or light text ({colors.canvas}) with dark backgrounds.| Breakpoint | Viewport Width | Grid Columns | Content Column | Largest Heading | Body Size | Key Changes |
|---|---|---|---|---|---|---|
| Mobile | 375px | 2 | 335px | 58px | 16px | Single-column layout; horizontal padding {spacing.lg} (20px); heading compression begins |
| Tablet | 768px | 2 | 688px | 64px | 16px | Modest content expansion; padding increases to {spacing.band} (40px); heading scales moderately |
| Landscape | 1024px | 4 | 880px | 85px | 16px | Multi-column grid; padding stabilizes at 72px; full heading hierarchy visible |
| Desktop | 1280px | 5 | 1136px | 107px | 16px | Extended column count; max-width constraints relax; largest headings approach full scale |
| Full HD | 1440px | 5 | 1296px | 120px | 16px | Maximum content width; all typography at full size; generous horizontal margins |
Collapse Point: The navigation menu toggle remains visible across all breakpoints (375px–1440px), indicating persistent mobile-optimized navigation even on larger screens.
Interactive elements (buttons, links, inputs) maintain a minimum height of 44–56px and width of 64–210px to ensure reliable touch activation on mobile devices. Buttons scale to 56px height across all breakpoints. Navigation links are spaced generously to prevent accidental mis-taps. Focus states include 2px solid outlines in #FD3A20 to provide clear keyboard navigation feedback.
{spacing.lg} (20px); typography scales down (58px largest heading); navigation collapses to menu toggle.{spacing.band} (40px); headings grow to 64px; content maintains narrow column.All elements maintain semantic padding and spacing values across breakpoints; absolute pixel adjustments are applied only to horizontal margins and column counts, preserving proportional rhythm.
#FD3A20) — use for main call-to-action buttons, brand marks, active/hover states#3B3835) — card backgrounds, primary heading text, footer surfaces#F5F5F5) — default page background, light card surfaces, label text on dark backgrounds#165051) — use sparingly to break up long pages; teal accent for visual rhythm#D0BA95) — warm taupe for body copy and secondary messaging on dark surfaces#FFFFFF) — white text on dark surfaces, borders, decorative elementsAlways uppercase display and heading text. All sizes from Display XL down to Heading SM use text-transform: uppercase. Body and button text follows label conventions (uppercase for labels, sentence case for body).
Apply negative letter-spacing only to display sizes (>48px). Display XL, XXL, LG, and MD employ tight tracking (-1.2px, -0.98px, -0.48px) to create visual compression. Body and button text use 0px or positive tracking (0.84px on labels).
Use field-gothic-xcondensed exclusively for display, headings, and quotes. trade-gothic-next is reserved for body, buttons, navigation, and form text. Never mix fonts within a single heading or content block.
Buttons are always primary or text variants. Primary buttons are 56px tall with {colors.primary} background and white text. Text buttons are link-styled with no background and hover state underline or colour shift to red.
Cards employ featured or default variants. Featured cards are dark ({colors.surface}) with light text and generous padding ({spacing.xxxl}). Default cards are light with dark text. Apply {rounded.xs} (4px) border-radius to all cards.
Hover states always shift to #FD3A20 or apply opacity/brightness filters. Links and text elements shift text colour. Cards apply filter: brightness(1.04) with optional box-shadow rgba(253, 58, 32, 0.5) 0px 4px 32px 0px. Buttons darken to #D63312 or apply filter: brightness(0.9).
Spacing follows the 4px scale strictly. All padding, margin, and gaps must use tokens from {spacing.xxs} (4px) through {spacing.band} (40px). Never use arbitrary px values.
Responsive padding adjusts only horizontal margins. Horizontal padding shifts from {spacing.lg} (20px) at 375px to {spacing.band} (40px) at 768px to 72px at 1024px and beyond. Vertical padding remains consistent across breakpoints.
No shadows on base surfaces. Shadows are reserved for modals, dropdowns, and hover states. Default surfaces are flat with no box-shadow. Use colour blocking (dark vs. light) for depth instead.
Focus states use 2px outlines in #FD3A20. All interactive elements (buttons, links, inputs) must include :focus-visible state with outline: 2px solid #FD3A20 for keyboard accessibility.
:disabled state styling is recorded. Implement disabled state as reduced opacity (0.4–0.45) or greyscale filter unless otherwise specified.#FD3A20) is available for interactive/highlight purposes. Add semantic status colours to this system if validation or feedback messaging is required.{colors.neutral-1} (#FFFFFF) appeared in component measurements but has no semantic purpose beyond decorative use. It is pure white for borders and text overlays, not a designated role.Courier New or Monaco) and pair it with the existing body text sizing.#FD3A20, focus ring behaviour (thickness, dashing, animation) is not fully specified. Implement 2px solid outlines as a safe default.transform: translateX(3px–4px) and filter: brightness() changes, but CSS transition timing (transition-duration, transition-timing-function) is not specified. Use standard web animation timing (e.g., 0.2s ease-out) as a reasonable default.Document Version: 1.0 | Brand: Baker Roofing | Analysed Pages: 1 (public homepage) | Last Updated: 2025