:root {
  --color-bg: hsl(227, 53%, 97%);
  --color-bg-accent: hsl(227, 23%, 75%);
  --color-bg-emphasis: hsl(0, 0%, 100%);

  --color-fg: hsl(0, 0%, 20%);
  --color-fg-accent: hsl(0, 0%, 40%);

  --color-error: hsl(0, 50%, 50%);

  --color-red: hsl(0, 71%, 62%);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-family: system-ui, sans-serif;
  color: var(--color-fg);
}

body {
  background-color: var(--color-bg);
  margin: 0;
  line-height: 1.5;
  min-height: 100vh;
  padding-block-start: 5rem;
  padding-block-end: 25vh;
  padding-inline: 0.5rem;
}

h2 {
  margin-block-start: 1.5em;
}

figure {
  margin: 0;
  margin-block: 2rem;
  background-color: var(--color-bg-emphasis);
  border: 3px solid var(--color-bg-accent);
}

figure > *:not(figcaption) {
  padding-inline: 1rem;
}

figcaption {
  margin-block-start: 2rem;
  padding: 1rem;
  background-color: var(--color-bg);
  border-block-start: 3px solid var(--color-bg-accent);
}

code {
  background-color: var(--color-bg-emphasis);
  border: 1px solid var(--color-bg-accent);
  border-radius: 0.2em;
  padding-block-start: 0.2em;
  padding-block-end: 0.1em;
  padding-inline: 0.4em;
}

pre {
  margin: 0;
}

pre code {
  background-color: inherit;
  border: none;
  padding: 0;
}

input, button,
textarea, select {
  font: inherit;
}

input[type="text"] {
  border: 2px solid var(--color-fg-accent);
}

input[type="text"]:invalid {
  border-color: var(--color-error);
}

.invalid-message {
  color: var(--color-error);
  font-size: 0.9rem;
}

button {
  border: 2px solid var(--color-fg-accent);
  /* font-weight: 700; */
  padding-inline: 1rem;
}

label {
  color: var(--color-fg);
}

label.block {
  display: block;
}

ol > li + li,
ul > li + li {
  margin-block-start: 0.5rem;
}

ul[role="list"],
ol[role="list"] {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

ul[role="list"] > li,
ol[role="list"] > li {
  margin: 0;
  padding: 0;
}

.center > * {
  margin-inline: auto;
  max-inline-size: 40rem;
}

.stack > * + * {
  margin-block-start: var(--s, 1.5rem);
}
