/* RESET */ *, *::before, *::after { box-sizing: border-box; margin: 0; } html { -webkit-text-size-adjust: 100%; } body { background: var(--bg); color: var(--fg); font: var(--text)/1.55 var(--face, var(--sans)); min-height: 100dvh; -webkit-font-smoothing: antialiased; } [hidden] { display: none !important; } img, canvas, svg, video { max-width: 100%; } svg { height: auto; } button, input, select, textarea { font: inherit; color: inherit; } button { cursor: pointer; } [id] { scroll-margin-top: calc(var(--head) + var(--s4)); } /* TEXT */ h1, h2, h3, h4 { line-height: 1.25; letter-spacing: -0.01em; font-weight: 650; } h1 { font-size: 1.75rem; } @media (max-width: 40rem) { h1 { font-size: 1.4rem; } } h2 { font-size: 1.25rem; } h3 { font-size: 1.05rem; } .lead { color: var(--dim); max-width: var(--read); margin-top: var(--s2); } .num { font-family: var(--mono); font-variant-numeric: tabular-nums; } .mono { font-family: var(--mono); } .dim { color: var(--dim); } .fine { color: var(--dim); font-size: 0.8rem; } /* LINKS */ a { color: var(--accent); text-decoration: none; } a:hover { text-decoration: underline; } :focus-visible { outline: var(--ring); outline-offset: 2px; border-radius: var(--r1); } /* PROSE */ .prose { font: var(--read-text)/1.6 var(--face, var(--serif)); font-variant-numeric: tabular-nums; max-width: var(--read); margin-inline: auto; } .prose h1, .prose h2, .prose h3, .prose h4 { font-family: var(--face, var(--serif)); margin: 1.6em 0 0.6em; } .prose h1 { font-size: 1.85em; margin-top: 0.2em; } .prose h2 { font-size: 1.35em; } .prose h3 { font-size: 1.1em; } .prose p, .prose ul, .prose ol, .prose blockquote, .prose pre, .prose .table { margin: 0 0 1em; } .prose ul, .prose ol { padding-left: 1.4em; } .prose li { margin: 0.25em 0; } .prose a { text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--accent) 40%, transparent); text-underline-offset: 0.15em; } .prose a:hover { text-decoration-color: currentColor; } .prose code { font: 0.85em/1.4 var(--mono); background: var(--deep); padding: 0.1em 0.3em; border-radius: var(--r1); } .prose pre { background: var(--deep); padding: var(--s3) var(--s4); border-radius: var(--r2); overflow-x: auto; font: 0.8em/1.6 var(--mono); } .prose pre code { background: none; padding: 0; font-size: inherit; } .prose blockquote { border-left: 3px solid var(--line); padding-left: var(--s4); color: var(--dim); } .prose figure { margin: 1.6em 0; } .prose figure img { display: block; height: auto; margin: 0 auto; } .prose figcaption { font-size: 0.85em; line-height: 1.45; color: var(--dim); margin-top: var(--s3); } .prose .table { overflow-x: auto; } .prose table { width: auto; border-collapse: collapse; font-size: 0.84em; line-height: 1.4; } .prose th, .prose td { padding: 5px 10px; border-bottom: var(--hair); text-align: left; vertical-align: top; } .prose th { color: inherit; font-size: inherit; font-weight: 650; border-bottom: 2px solid var(--line); } .prose td code, .prose th code { white-space: nowrap; } .prose .right { text-align: right; } .prose .center { text-align: center; } .prose .meta { color: var(--dim); font: 13px/1.6 var(--mono); margin: 0 0 1.4em; } .prose .meta a { color: var(--dim); } .prose math { font-size: 1.05em; } .prose math[display="block"] { display: block; max-width: 100%; overflow-x: auto; margin: 1em 0; } .prose code, .prose li, .prose p { overflow-wrap: anywhere; } /* FIGURES */ img.dark { display: var(--show-dark) !important; } img.light { display: var(--show-light) !important; } /* MOTION */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms !important; transition-delay: 0s !important; animation-duration: 0.01ms !important; animation-delay: 0s !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; } } /* PRINT */ @media print { @page { margin: 20mm; } body { background: #fff; color: #000; font-size: 11pt; } a { color: inherit; text-decoration: underline; } a[href^="http"]::after, a[href^="/"]::after { content: " (" attr(href) ")"; font-size: 0.8em; color: #555; } img.dark { display: none !important; } img.light { display: block !important; } .prose { max-width: none; } .prose pre { white-space: pre-wrap; overflow: visible; background: none; padding: 0; } .prose code { background: none; } .prose math[display="block"] { overflow: visible; } h1, h2, h3, h4 { break-after: avoid; } figure, table, pre, li, math[display="block"] { break-inside: avoid; } }