:root {
  --spacing: 12px;
  --spacing-half: calc(0.5 * var(--spacing));
  --spacing-2: calc(2 * var(--spacing));
  --spacing-3: calc(3 * var(--spacing));
  --spacing-4: calc(4 * var(--spacing));

  --font-sans-serif: sans-serif;

  /* Base */
  --color-background: hsl(220, 23%, 95%);

  /* Mantle */
  --color-background-accent: hsl(220, 22%, 92%);

  /* Text */
  --color-text: hsl(234, 16%, 35%);

  /* Surface2 */
  --color-border: hsl(227, 12%, 71%);

  /* Peach */
  --link-color: hsl(22, 99%, 52%);

  /* Grid */
  /* https://ryanmulligan.dev/blog/layout-breakouts/ */
  --gap: var(--spacing);
  --full: minmax(var(--gap), 1fr);
  --content: min(80ch, 100% - var(--gap) * 2);
  --feature: minmax(0, var(--spacing-4));
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-background: hsl(240, 21%, 15%);
    --color-background-accent: hsl(240, 21%, 12%);
    --color-text: hsl(226, 64%, 88%);
    --color-border: hsl(233, 12%, 39%);
    --link-color: hsl(23, 92%, 75%);
  }
}

html {
  margin: 0;
  padding: 0;
  font-size: 100%;
}

body {
  margin: 0;
  padding: var(--spacing-3) 0;
  background-color: var(--color-background);
  color: var(--color-text);
  font-family: var(--font-sans-serif);
}

a {
  color: var(--link-color);
}

table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--color-border);
}

thead {
  border-bottom: 1px solid var(--color-border);
  background: var(--color-background-accent);
}

tbody tr:nth-child(even) {
  background: var(--color-background-accent);
}

tfoot {
  border-bottom: 1px solid var(--color-border);
}

th {
  text-align: left;
}

th,
td {
  border-spacing: 0;
  padding: var(--spacing-half);
}

header,
main,
footer {
  display: grid;
  grid-template-columns:
    [full-start] var(--full)
    [feature-start] var(--feature)
    [content-start] var(--content) [content-end]
    var(--feature) [feature-end]
    var(--full) [full-end];
}

header,
main {
  padding-bottom: var(--spacing-3);
}

h1,
h2,
h3,
p {
  grid-column: content;
}

p {
  font-size: 1rem;
}

table {
  grid-column: feature;
}
