Douro Holdings · Style Guide B · Southern Industrial
Preserving legacy. Building the next chapter.
Ink navy, steel gray, and brass. Heavy structural display type over a technical body face, with a monospace data face for EBITDA figures and acquisition criteria.
01 · Color Palette
Southern Industrial — eight core slots.
Eight semantic slots, sized to the global color slots available in the WordPress build. Every pairing shows its measured WCAG contrast ratio.
--color-primary
#0F1E2D · rgb(15, 30, 45)
Ink navy. Headers, dark sections
--color-primary-hover
#0B1622 · rgb(11, 22, 34)
Pressed / hover
--color-secondary
#48586A · rgb(72, 88, 106)
Steel gray. Secondary text, borders
--color-accent
#C08A2A · rgb(192, 138, 42)
Brass. CTA fill, rules, iconography
Never pair brass with white text (3.04:1 — fails).
--color-accent-hover
#A6741E · rgb(166, 116, 30)
CTA hover
--color-surface
#F3F1EC · rgb(243, 241, 236)
Bone. Page background
--color-surface-raised
#FFFFFF · rgb(255, 255, 255)
Cards
--color-text-primary
#0F1E2D · rgb(15, 30, 45)
Body copy
Usage rules
- MANDATORY: brass #C08A2A filled buttons always carry ink navy #0F1E2D text (5.56:1 — AA pass). White on brass is 3.04:1 and fails; it is blocked in the button component.
- For brass as text on light surfaces below 24px, use the darkened brass #8A6014 instead.
- Steel gray #48586A on bone #F3F1EC measures above 4.5:1 and is approved for secondary body copy.
02 · Typography
Archivo + IBM Plex Sans.
One shared type ramp across all three directions — only the families change, so the comparison stays apples to apples. Body copy is capped at a 65–75 character measure.
Display / Headings
Archivo
Weights 700 & 800 · letter-spacing -0.02em on display sizes. Heavy, confident, structural.
Body
IBM Plex Sans
Weights 400 & 500. Technical warmth, excellent at long measure.
Numerals / Data
IBM Plex Mono
Weight 500 for EBITDA figures, deal criteria, and stats — precise and engineered.
Data figures
$1.5M – $3M EBITDA · $7M – $20M EV
Weight 500 for EBITDA figures, deal criteria, and stats — precise and engineered.
03 · Spacing
An 8-point spatial grid.
8 / 16 / 24 / 32 / 48 / 64 / 80 / 120. Every padding, margin, and gap in the system resolves to one of these steps.
8px
Hairline gaps · icon offsets
16px
Default component padding
24px
Card padding · grid gaps
32px
Sub-block separation
48px
Section interior spacing
64px
Major block separation
80px
Section vertical rhythm
120px
Chapter breaks · hero padding
04 · Border Radius
Buttons at 0px.
Hard, machined, no softness.
--sg-radius-sm · 0px
Inputs · badges · small chips
--sg-radius-md · 0px
Buttons · swatch tiles
--sg-radius-lg · 0px
Cards · panels · media frames
05 · Elevation
Two levels, no more.
A deliberately shallow elevation scale. Depth signals interactivity; it is never decorative.
none
Flat surfaces · dense tables
--sg-shadow-1
Level 1 — resting cards
--sg-shadow-2
Level 2 — hovered / floating panels
07 · Forms
Short forms. Direct contact preferred.
This audience prefers a phone call. Where a form is used, it stays brief and every state is explicit.
Default
Focus · 2px ring, 2px offset
⚠ Please include a full email address — errors are never signalled by colour alone.
Disabled
08 · Links
Underlined, always.
Inline links are underlined so they never depend on colour alone, and every state is documented.
Default See acquisition criteria
Hover See acquisition criteria
Focus-visible See acquisition criteria
Visited See acquisition criteria
Disabled See acquisition criteria
09 · Image Aspect Ratios
Predictable media frames.
Standard ratios for the eventual build. Frames are unfilled — this is a token reference, not a mockup.