/* Fonts and element defaults. */
@font-face { font-family: 'IBM Plex Sans'; font-weight: 400; src: url('/fonts/IBMPlexSans-400.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'IBM Plex Sans'; font-weight: 500; src: url('/fonts/IBMPlexSans-500.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'IBM Plex Sans'; font-weight: 600; src: url('/fonts/IBMPlexSans-600.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'IBM Plex Sans'; font-weight: 700; src: url('/fonts/IBMPlexSans-700.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 400; src: url('/fonts/IBMPlexMono-400.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 500; src: url('/fonts/IBMPlexMono-500.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'Newsreader'; font-weight: 400; src: url('/fonts/Newsreader-400.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'Newsreader'; font-weight: 500; src: url('/fonts/Newsreader-500.woff2') format('woff2'); font-display: swap; }
@font-face { font-family: 'Newsreader'; font-weight: 600; src: url('/fonts/Newsreader-600.woff2') format('woff2'); font-display: swap; }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font: var(--fs-md)/var(--lh) var(--sans); color: var(--ink); background: var(--bg); }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
h1 { font-family: var(--serif); font-weight: 500; font-size: var(--fs-3xl); line-height: 1.08; letter-spacing: -.03em; text-wrap: balance; }
h2 { font-family: var(--serif); font-size: var(--fs-xl); font-weight: 500; line-height: var(--lh-tight); letter-spacing: -.02em; }
h3 { font-size: var(--fs-xs); font-weight: 600; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); }
h4 { font-size: var(--fs-xs); font-weight: 600; letter-spacing: var(--track); text-transform: uppercase; color: var(--muted); }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
summary { list-style: none; } summary::-webkit-details-marker { display: none; }
input, select, textarea, button { font: inherit; color: inherit; }
input[type=text], input[type=email], input[type=date], input[type=password], input[type=number], input[type=search], select, textarea { width: 100%; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
input:focus, select:focus, textarea:focus { border-color: var(--ink); outline: 0; }
textarea { min-height: 220px; font-family: var(--mono); font-size: var(--fs-sm); line-height: var(--lh); }
svg { display: block; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }
