body {
  display: flex;
  flex-direction: column;
  align-items: center;

  font-family: var(--theme-font-family);
  font-size: var(--theme-font-size);
  line-height: var(--theme-line-height);

  background-color: var(--theme-background-color);
  color: var(--theme-text-color);

  margin: 1.25em;
  padding: 0;
}

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

/* HACK: force all images to fill their container, rely on flex and suchlike to scale images */
img { width: 100% }
video { width: 100% }

p { margin: 0.7em 0; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--theme-font-family-headings);
}

figure {
  width: 100%;
  box-sizing: border-box;
  margin: calc(var(--row-gap) / 2) 0;
  padding: 1em 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--row-gap) / 2);
  border-top: 1px dotted var(--theme-border-color);
  border-bottom: 1px dotted var(--theme-border-color);
}

figure div {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}

figure figcaption {
  display: block;
  font-size: 0.8em;
  text-align: center;
}

blockquote {
  font-style: italic;
  padding-left: calc(var(--column-gap) * 0.66);
  margin-left: calc(var(--column-gap) * 0.66);
  border-left: 1px dotted var(--theme-border-color);
  margin-right: 0;
  padding-right: 0;
}

aside {
  margin: 1em 0;
  padding: 0.5em 0;
  border-top: 1px dotted var(--theme-border-color);
  border-bottom: 1px dotted var(--theme-border-color);
}

aside > figure {
  margin: 0;
  padding: 0;
  border: none;
}

hr {
  width: 100%;
  height: 1px;
  background-color: var(--theme-border-color);
  border: none;
  margin: calc(var(--row-gap) / 2) 0;
}