:root {
  /* --------------------------------- Colours -------------------------------- */

  /* Black & White */
  --black-0: #000;
  --black-1: #222;
  --black-2: #666;
  --black-3: #999;
  --white-0: #fff;
  --white-1: #eee;
  --white-2: #ccc;
  --white-3: #aaa;

  /* Nature Color Palette */
  --yellow-1: #efd600;
  --yellow-2: #ffd500;
  --yellow-3: #fbba00;
  --orange-1: #f7a70b;
  --orange-2: #eb5b25;
  --orange-3: #e63323;
  --red-1: #e40428;
  --red-2: #e5005b;
  --red-3: #c82285;
  --purple-1: #964091;
  --purple-2: #6c4796;
  --purple-3: #494495;
  --blue-1: #1951a0;
  --blue-2: #006eb7;
  --blue-3: #0085c8;
  --turquoise-1: #0095bb;
  --turquoise-2: #0094a4;
  --turquoise-3: #00928c;
  --seagreen-1: #008b68;
  --seagreen-2: #229863;
  --seagreen-3: #449b50;
  --leafgreen-1: #3fa535;
  --leafgreen-2: #76b82a;
  --leafgreen-3: #c7d530;

  /* ------------------------------ Modular scale ----------------------------- */

  /*	Dimensions are scaled proportionately with the page width */

  /*	from a minimum value of 1rem */
  font-size: calc(1rem);

  /* Sizes to use */
  --ratio: 1.3;
  --s-6: calc(var(--s-5) / var(--ratio));
  --s-5: calc(var(--s-4) / var(--ratio));
  --s-4: calc(var(--s-3) / var(--ratio));
  --s-3: calc(var(--s-2) / var(--ratio));
  --s-2: calc(var(--s-1) / var(--ratio));
  --s-1: calc(var(--s0) / var(--ratio));
  --s0: 1rem;
  --s1: calc(var(--s0) * var(--ratio));
  --s2: calc(var(--s1) * var(--ratio));
  --s3: calc(var(--s2) * var(--ratio));
  --s4: calc(var(--s3) * var(--ratio));
  --s5: calc(var(--s4) * var(--ratio));
  --s6: calc(var(--s5) * var(--ratio));

  /* Useful to for fallback values */
  --no-space: 0;

  /* ---------------------------------- Type ---------------------------------- */
  --sans-serif-font: -apple-system, blinkmacsystemfont, "Segoe UI", roboto,
    oxygen-sans, ubuntu, cantarell, "Helvetica Neue", sans-serif;
  --font-size-small-3: var(--s-3);
  --font-size-small-2: var(--s-2);
  --font-size-small-1: var(--s-1);
  --font-size-base: var(--s0);
  --font-size-big-1: var(--s1);
  --font-size-big-2: var(--s2);
  --font-size-big-3: var(--s3);
  --font-size-big-4: var(--s4);

  /* ----------------------------- Transition time ---------------------------- */
  --time: 200ms;

  /* --------------------------------- Measure -------------------------------- */
  --measure: 60ch;
  --measure-big: calc(var(--measure) * var(--ratio));
  --measure-small: calc(var(--measure) / var(--ratio));

  /* --------------------------------- Spacing -------------------------------- */
  --space: var(--s-1);
  --cover-space: 1rem;
  --cover-height: 100vh;

  /* ------------------------------ Media queries ----------------------------- */
  --break-tiny: 560px;
  --break-small: 800px;
  --break-large: 1000px;
  --break-extra-large: 1400px;

  /* --------------------------- Light colour scheme -------------------------- */
  --link-color: var(--blue-1);
  --link-color-invert: var(--orange-1);
  --link-color-active: var(--black-0);
  --outline: var(--yellow-1);
  --background-color: var(--white-0);
  --background-color-invert: var(--black-1);
  --text-color: var(--black-1);
  --text-color-invert: var(--white-1);
}

body {
  margin: 0;
  font-family: var(--sans-serif-font);
  color: var(--text-color);
  background-color: var(--background-color);
  transition: background-color var(--time) ease, color var(--time) ease;

  /* https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth */
  -webkit-font-smoothing: subpixel-antialiased;
}

/* ------------------------- Exception based styling ------------------------ */
* {
  box-sizing: border-box;
  max-width: var(--measure);
}

/* All elements should have a max width of --measure except these */
html,
body,
div,
section,
main,
article,
header,
figure,
figcaption,
img,
video,
iframe,
svg,
footer,
canvas,
input,
a {
  max-width: none;
}

/* -------------------------------- Elements -------------------------------- */

/* headers */
h3 {
  font-size: var(--font-size-big-1);
}

h2 {
  font-size: var(--font-size-big-2);
}

h1 {
  font-size: var(--font-size-big-2);
}

/* links */
a {
  color: var(--link-color);
  text-decoration: underline;
}

a:hover,
a:focus {
  color: var(--link-color-active);
  background-color: var(--outline);
  outline: 3px solid var(--outline);
}

/* Figures */
figure {
  margin: 0;
}

figcaption {
  box-sizing: content-box;
  padding-right: var(--caption-space);
  padding-left: var(--caption-space);
}

figure > img,
figure > video,
iframe {
  width: 100%;
}

/* Prevent Superscripts and Subscripts from Affecting Line-Height */

/* https://css-tricks.com/snippets/css/prevent-superscripts-and-subscripts-from-affecting-line-height/ */
sup,
sub {
  position: relative;
  top: -0.4em;
  vertical-align: baseline;
}

sub {
  top: 0.4em;
}

/* -------------------------------- Modifiers ------------------------------- */

/* Background colors */
.invert {
  color: var(--text-color-invert);
  background-color: var(--background-color-invert);
  fill: var(--text-color-invert);
}

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

.invert a:hover,
.invert a:focus {
  color: var(--link-color-active);
}

/* Borders */
.border-above {
  padding-top: var(--s1);
  border-top: 1px solid var(--text-color);
}

/* Dropcap */
.drop-cap::first-letter {
  float: left;
  padding-top: 8px;
  padding-right: 3px;
  padding-left: 0;
  font-size: 88px;
  line-height: 62px;
}

/* -------------------------------- Utilities ------------------------------- */

/* Make sure hidden elements are hidden */
[hidden] {
  display: none !important;
}

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0 !important;
  opacity: 0;
}

.bold {
  font-weight: 800;
}
