.stat {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex-grow: 1;
  /* font matters a good deal here, esp the width of the numerals */
  font-family: "Source Sans Pro", serif;
}

.stat-figure {
  font-size: 3em;
  display: flex;
  font-weight: bold;
}

.stat-caption {
   font-size: 1.4em;
  text-align: center;
}

/* Demo styling only */

:root {
  --color-background: white;
  --color-text: #666666;
  --color-accent: #faff98;
  --gap: clamp(1rem, 6vw, 3rem);
  --full: minmax(var(--gap), 1fr);
  --content: min(30em, 100% - var(--gap) * 2);
  --popout: minmax(0, 3rem);
}

/* Forced reset */
*, *:before, *:after {
  margin: 0;
  padding: 0;
}

body {
  font-family: 'Lora', serif;
  background-color: var(--color-background);
  color: var(--color-text);
  font-size: clamp(1.5rem, 0.625vw + 0.875rem, 1.5rem);
  line-height: 1.5;
}

a, h1, h2, h3, h4 {
  color: var(--color-accent);
  font-family: 'Source Sans Pro', sans-serif;
}

.text-reverse {
  padding: 3ch;
  background-color: var(--color-text);
  color: var(--color-background);
  border-radius: 2ch;
}

/* Simple grid with popout */
.grid {
  display: grid;
  grid-template-columns:
    [full-start] var(--full)
    [popout-start] var(--popout)
    [content-start] var(--content) [content-end]
    var(--popout) [popout-end]
    var(--full) [full-end];
}

.grid > * {
  grid-column: content;
}

.popout {
  justify-content: center;
  grid-column: popout;
}

/* Simple vertical rhythm */
.flow > * + * {
  margin-top: var(--flow, 1em)
}

.flex {
  display: flex;
}

.gap {
  gap: 2ch;
}

.mb-10vh {
  margin-bottom: 10vh;
}

.fixed-bottom-right {
  position: fixed;
  bottom: 0;
  right: 0;
}

.bubble {
  background-color: rgba(0,0,0,0.3);
  padding: 1ch 2ch;
  border-top: 2px solid var(--color-accent);
  border-left: 2px solid var(--color-accent);
  border-top-left-radius: 1ch;
  font-family: 'Source Sans Pro', sans-serif;
}

.text-accent {
  color: var(--color-accent);
}

.no-decoration {
  text-decoration: none;
}