Section 8
Implementation.
The new module uses Tailwind. Extend the theme so token names
match this guide and docs/BRAND.md. When the page
already exposes a CSS variable, prefer
bg-[var(--color-navy)] over duplicating the value.
tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
navy: 'rgb(36 68 89 / <alpha-value>)',
'off-black': 'rgb(14 27 36 / <alpha-value>)',
blue: {
DEFAULT: 'rgb(43 145 217 / <alpha-value>)',
accessible: 'rgb(0 119 193 / <alpha-value>)',
medium: 'rgb(161 220 252 / <alpha-value>)',
light: 'rgb(227 245 255 / <alpha-value>)',
},
body: 'rgb(55 73 82 / <alpha-value>)',
secondary: 'rgb(102 116 122 / <alpha-value>)',
border: 'rgb(225 228 229 / <alpha-value>)',
grey: 'rgb(249 250 251 / <alpha-value>)',
},
// Production convention: one family per weight.
// Switch weight by switching family, not via font-weight.
fontFamily: {
sans: ['Onest', 'system-ui', 'sans-serif'],
'sans-semi': ['Onest-SemiBold', 'Onest', 'system-ui', 'sans-serif'],
'sans-extra':['Onest-ExtraBold', 'Onest', 'system-ui', 'sans-serif'],
serif: ['TiemposHeadline-Bold', 'Georgia', 'serif'],
'serif-italic':['TiemposHeadline-RegularItalic', 'Georgia', 'serif'],
body: ['TiemposText', 'Georgia', 'serif'],
},
borderRadius: { card: '1.5rem', btn: '0.75rem' },
boxShadow: {
card: '0 0.215625rem 1.7225rem rgba(0,0,0,0.08)',
lifted: '0 0.25rem 1.5rem rgba(0,0,0,0.16)',
},
},
},
};
@font-face (production-accurate).
/* Each weight is its own family. Switch family to switch weight. */
@font-face { font-family: TiemposHeadline;
src: url('/fonts/TiemposHeadline-Regular.otf') format('opentype');
font-weight: 400; font-display: fallback; }
@font-face { font-family: TiemposHeadline-Bold;
src: url('/fonts/TiemposHeadline-Bold.otf') format('opentype');
font-weight: 700; font-display: fallback; }
@font-face { font-family: TiemposHeadline-RegularItalic;
src: url('/fonts/TiemposHeadline-RegularItalic.otf') format('opentype');
font-weight: 400; font-display: fallback; }
/* …+ TiemposHeadline-BoldItalic, TiemposText{,-Bold,-RegularItalic},
Onest{,-Medium,-SemiBold,-Bold,-ExtraBold} */
CSS variables (drop-in).
:root {
--color-navy: rgb(36, 68, 89);
--color-off-black: rgb(14, 27, 36);
--color-blue: rgb(43, 145, 217);
--color-accessible-blue: rgb(0, 119, 193);
--color-light-blue: rgb(227, 245, 255);
--color-medium-blue: rgb(161, 220, 252);
--color-white: rgb(255, 255, 255);
--color-grey: rgb(249, 250, 251);
--color-border: rgb(225, 228, 229);
--color-body-text: rgb(55, 73, 82);
--color-secondary-text: rgb(102, 116, 122);
--text-content-max-width: 60rem;
}
/* Production h1 — note `font-weight: unset`. Weight is in the family name. */
h1, .as-h1 {
font-family: TiemposHeadline-Bold, serif;
font-weight: unset;
font-size: clamp(2.5rem, 1.2532rem + 2.5974vw, 4.5rem);
line-height: clamp(2.75rem, 1.0357rem + 3.5714vw, 5.5rem);
letter-spacing: -0.0625rem;
text-wrap: balance;
color: var(--color-navy);
margin: 0;
}
The slant.
.slant {
width: 100%;
height: var(--slant-height);
background: linear-gradient(
-6.9deg,
var(--color-navy) 50%,
transparent calc(50% + 1px)
);
}