/* Base: reset, document typography, page shell. */ *, *::before, *::after { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } body { margin: 0; min-height: 100vh; display: flex; flex-direction: column; background: var(--black); color: var(--text-primary); font-family: var(--font-body); font-size: var(--body); font-weight: 400; line-height: 1.5; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-synthesis: none; } h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd, ul, ol { margin: 0; } h1, h2, h3, h4, h5, h6 { font-weight: 500; color: var(--text-display); } ul, ol { padding: 0; } img, svg, video { display: block; max-width: 100%; } button, input, select, textarea { font: inherit; color: inherit; } button { cursor: pointer; } a { color: var(--interactive); text-decoration: none; } a:hover { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; } code, kbd, samp, pre { font-family: var(--font-code); font-size: var(--body-sm); } ::selection { background: var(--text-display); color: var(--black); } :focus-visible { outline: 1px solid var(--text-display); outline-offset: 2px; } [hidden] { display: none !important; } /* Page shell: one centered column with responsive gutters. */ .shell { width: 100%; max-width: calc(var(--page-max) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); } main.shell { flex: 1; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0ms !important; } }