.page { max-width: 42rem; margin: 0 auto; padding: 2.5rem 1.25rem 4rem; } .header { display: flex; align-items: center; gap: 1.25rem; margin-bottom: 2rem; } .portrait { border-radius: 50%; border: 2px solid var(--border); object-fit: cover; flex-shrink: 0; } .kicker { font-family: var(--font-ui); font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--brand); margin: 0 0 0.35rem; } .heading { font-family: var(--font-display); font-size: clamp(1.5rem, 4vw, 2rem); font-weight: 700; line-height: 1.2; color: var(--text-primary); margin: 0; } .subheading { font-family: var(--font-display); font-size: 1.15rem; font-weight: 600; color: var(--text-primary); margin: 2.25rem 0 0.75rem; } .prose p { font-family: var(--font-ui); font-size: 1rem; line-height: 1.7; color: var(--text-secondary); margin: 0 0 1.1rem; } /* The opening paragraph carries the page. Larger, and in the primary ink rather than the secondary, so it reads as a voice rather than as body copy. Must stay in the descendant form: `.prose p` scores (0,1,1) and would beat a bare `.lede` at (0,1,0), so simplifying this selector silently reverts the lede to ordinary body copy. */ .prose .lede { font-size: 1.125rem; color: var(--text-primary); } .link { color: var(--brand); font-weight: 600; } .link:hover { color: var(--brand-strong); } @media (max-width: 480px) { .header { flex-direction: column; align-items: flex-start; gap: 1rem; } }