/** Variables */ :root { --colour-primary-10: #060300; --colour-primary-20: #1f1400; --colour-primary-30: #3c2b00; --colour-primary-40: #5c4300; --colour-primary-50: #7f5d00; --colour-primary-60: #a37800; --colour-primary-70: #c89500; --colour-primary-80: #efb300; --colour-primary-90: #ffd98c; --colour-primary-95: #ffecc8; --colour-hyperlink-10: #000409; --colour-hyperlink-20: #001829; --colour-hyperlink-30: #00314d; --colour-hyperlink-40: #004d75; --colour-hyperlink-50: #006a9f; --colour-hyperlink-60: #1388c9; --colour-hyperlink-70: #41a8ea; --colour-hyperlink-80: #78c7ff; --colour-hyperlink-90: #bfe3ff; --colour-hyperlink-95: #e0f1ff; --colour-primary-fg: var(--colour-primary-90); --colour-primary-fg-accent: var(--colour-primary-80); --colour-primary-bg: var(--colour-primary-10); --colour-hyperlink: var(--colour-hyperlink-80); --font-size-sm: 1rem; --font-size-base: 1.25rem; --font-size-md: 1.75rem; --font-size-lg: 2.5rem; --font-size-xl: 3.5rem; --spacing-block-xs: 0.5rem; --spacing-block-sm: 1.75rem; --spacing-block-md: 2.5rem; --spacing-block-lg: 3.5rem; --spacing-block-xl: 5rem; --spacing-inline-sm: 0.5rem; --spacing-inline-md: 1.5rem; --spacing-inline-lg: 3rem; --spacing-inline-xl: 6rem; } /** Light theme */ @media (prefers-color-scheme: light) { :root { --colour-primary-fg: var(--colour-primary-20); --colour-primary-fg-accent: var(--colour-primary-40); --colour-primary-bg: var(--colour-primary-95); --colour-hyperlink: var(--colour-hyperlink-40); } } /** Base typography */ body { font-size: var(--font-size-base); color: var(--colour-primary-fg); font-weight: light; background-color: var(--colour-primary-bg); line-height: 1.5; /* Geometric Humanist stack from https://modernfontstacks.com */ font-family: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif; } small { font-size: var(--font-size-sm); } :is(p, h1, h2, h3, h4, h5, h6, hr, img, figure, ul, ol) { margin-block-start: var(--spacing-block-sm); } /** Base layout */ body { --body-margin-inline-start: var(--spacing-inline-lg); --body-margin-inline-end: var(--body-margin-inline-start); --body-margin-block-end: var(--spacing-block-xl); margin-inline: var(--body-margin-inline-start) var(--body-margin-inline-end); margin-block-end: var(--body-margin-block-end); } :is(h1, h2, h3, h4, h5, h6) { text-align: center; } img { margin-inline: auto; } @media (min-width: 36rem) { body { display: grid; grid-template-columns: [media-start] var(--grid-margin-inline) [content-start] minmax(var(--grid-max-content-width), auto) [content-end]; column-gap: var(--spacing-block-sm); max-width: var(--grid-total-width); --body-margin-inline-end: 6rem; --grid-margin-inline: 6rem; --grid-total-width: 36rem; --grid-max-content-width: calc( var(--grid-total-width) - var(--body-margin-inline-start) - var(--grid-margin-inline) - var(--spacing-block-sm) - var(--grid-margin-inline) ); } :is(main, article, nav) { display: grid; grid-column: media-start / content-end; grid-template-columns: subgrid; } :is(section, header, aside) { grid-column: content-start / content-end; } :is(h1, h2, h3, h4, h5, h6) { text-align: start; } } @media (min-width: 48rem) { body { --grid-total-width: 48rem; } } /** Headings */ h1 { font-size: var(--font-size-xl); font-weight: 900; margin-block-start: 0; } h2 { font-size: var(--font-size-lg); font-weight: 900; margin-block-start: var(--spacing-block-xl); } h3, h4, h5, h6 { font-size: var(--font-size-md); font-weight: 600; margin-block-start: var(--spacing-block-lg); } /** Hyperlinks */ a:is(:link, :visited) { color: var(--colour-hyperlink); text-decoration: underline; display: inline; } a:hover { text-decoration: wavy; } /** Definition lists */ dl { margin-block-start: var(--spacing-block-md); } dl dt { font-weight: bold; } dl dd + dt { margin-block-start: var(--spacing-block-md); } /** figcaptions */ figcaption { font-size: var(--font-size-sm); font-style: italic; text-align: center; } /** Lists */ :is(ol, ul) { margin-inline-start: var(--spacing-inline-lg); } /** Navigation bar */ nav { margin-block: var(--spacing-block-sm); } nav ul { grid-column: media-start / content-end; display: flex; justify-content: center; gap: var(--spacing-inline-md); list-style: none; margin: 0; } @media (min-width: 36rem) { nav { display: grid; grid-template-columns: subgrid; } nav ul { justify-content: end; } } /** Blog feed */ .h-feed ul { list-style: none; margin-inline: 0; } /** Block quotes */ blockquote { padding-inline-start: var(--spacing-inline-lg); border-inline-start: 2px solid var(--colour-primary-fg); font-style: italic; } blockquote footer { font-style: initial; } blockquote :is(em, i) { font-style: normal; } /** Small caps */ .small-caps { font-variant: small-caps; }