@charset "UTF-8";

@font-face {
  font-family: "Harding";
  src: url("../fonts/HardingText-Regular-Web.woff2") format("woff2"),
    url("../fonts/HardingText-Regular-Web.woff") format("woff");
  font-display: fallback;
}

@font-face {
  font-family: "Harding";
  font-weight: 700;
  src: url("../fonts/HardingText-Bold-Web.woff2") format("woff2"),
    url("../fonts/HardingText-Bold-Web.woff") format("woff");
  font-display: swap;
}

@font-face {
  font-family: "Harding";
  font-style: italic;
  src: url("../fonts/HardingText-RegularItalic-Web.woff2") format("woff2"),
    url("../fonts/HardingText-RegularItalic-Web.woff") format("woff");
  font-display: swap;
}

@font-face {
  font-family: "Harding";
  font-style: italic;
  font-weight: 700;
  src: url("../fonts/HardingText-BoldItalic-Web.woff2") format("woff2"),
    url("../fonts/HardingText-BoldItalic-Web.woff") format("woff");
  font-display: swap;
}

@font-face {
  font-family: "Graphik Nature l Web";
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/GraphikNaturel-Regular-Web.woff2") format("woff2"),
    url("../fonts/GraphikNaturel-Regular-Web.woff") format("woff");
}

@font-face {
  font-family: "Graphik Nature l Web";
  font-style: normal;
  font-weight: 700;
  src: url("../fonts/GraphikNaturel-Bold-Web.woff2") format("woff2"),
    url("../fonts/GraphikNaturel-Bold-Web.woff") format("woff");
}

:root {
  /* Harding is the defalut font, otherwise apply the sans serif font */
  --serif-font-family: harding, palatino, times, "Times New Roman", serif;
  --sans-serif-font: "Graphik Nature l Web", arial, helvetica, sans-serif;
}

body {
  font-family: var(--serif-font-family);
}
:root {
  /* --------------------------------- Colours -------------------------------- */

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

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

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

  /* Sizes to use */
  --ratio: 1.5;
  --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));
  --s7: calc(var(--s6) * var(--ratio));
  --s8: calc(var(--s7) * var(--ratio));

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

  /* ---------------------------------- Type ---------------------------------- */

  --font-size-small-1: calc(var(--s0) / 1.2);
  --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;
}
/* --------------------------------- Themes --------------------------------- */

[data-theme] {
  --color--component: initial;
  --color--global: var(--color--text);
  --color--disabled--component: initial;
  --color--disabled--global: var(--color--text-disabled);
  --color--link--component: initial;
  --color--link--global: var(--color--link);
  --color--link-active--component: initial;
  --color--link-active--global: var(--color--link-active);
  --color--background--component: initial;
  --color--background--global: var(--color--background);

  color: var(--color--component, var(--color--global));
  background: var(
    --color--background--component,
    var(--color--background--global)
  );
  fill: var(--color--component, var(--color--global));
}

[data-theme] a {
  color: var(--color--link--component, var(--color--link--global));
  fill: var(--color--link--component, var(--color--link--global));
}

[data-theme] a:visited {
  color: var(--color--link--component, var(--color--link--global));
  fill: var(--color--link--component, var(--color--link--global));
}

[data-theme] a:hover,
[data-theme] a:focus {
  color: var(
    --color--link-active--component,
    var(--color--link-active--global)
  );
  fill: var(--color--link-active--component, var(--color--link-active--global));
}

[data-theme] a:hover:visited,
[data-theme] a:focus:visited {
  color: var(
    --color--link-active--component,
    var(--color--link-active--global)
  );
  fill: var(--color--link-active--component, var(--color--link-active--global));
}

[data-theme] button {
  color: var(--color--component, var(--color--global));
  border-color: var(--color--component, var(--color--global));
}

[data-theme]:disabled {
  color: var(--color--disabled--component, var(--color--disabled--global));
  border-color: var(--color--disabled--component, var(--color--disabled--global));
}

[data-theme] button:hover,
[data-theme] button:focus {
  border-color: var(
    --color--link-active--component,
    var(--color--link-active--global)
  );
}

/* Invert */

[data-theme="invert"] {
  --color--component: var(--color--text-invert);
  --color--link--component: var(--color--link-invert);
  --color--link-active--component: var(--color--link-active-invert);
  --color--background--component: var(--color--background-invert);
}

/* Menu */

[data-theme="menu"] {
  --color--text: var(--color--text-invert);
  --color--component: var(--color--text-invert);
  --color--link-invert: var(--color--text-invert);
  --color--link--component: var(--color--link-invert);
  --color--background--component: var(--color--background-invert);
  --color--button-expanded: var(--color--text-invert);
  --color--button-background-expanded: var(--color--background-invert);
}
/* --------------------------- Light colour scheme -------------------------- */
body {
  --color--link: var(--color--blue-1);
  --color--link-invert: var(--color--orange-1);
  --color--link-active: var(--color--black-0);
  --color--link-active-invert: var(--color--black-0);
  --color--outline: var(--color--yellow-1);
  --color--background: var(--color--white-0);
  --color--background-invert: var(--color--black-0);
  --color--text: var(--color--black-0);
  --color--text-invert: var(--color--white-0);
  --color--text-disabled: var(--color--black-3);
  --color--button-expanded: var(--color--link-active);
  --color--button-background-expanded: var(--color--white-2);
}
/* Buttons */

button {
  display: flex;
  gap: var(--s-2);
  align-items: center;
  width: fit-content;
  padding: var(--s-3) var(--s-2);
  font-size: inherit;
  border-style: solid;
  border-width: 1px;
}

button:not(:disabled) {
  cursor: pointer;
}

button:not(:disabled):hover,
button:not(:disabled):focus {
  color: var(--color--link-active);
  background-color: var(--color--outline);
  border-color: var(--color--link-active);
  outline: 3px solid var(--color--outline);
  fill: var(--color--link-active);
}

button:not(:disabled):active {
  transform: translateY(0.5px);
}

button:not(:disabled):active,
button:not(:disabled)[aria-expanded="true"] {
  color: var(--color--button-expanded);
  background-color: var(--color--button-background-expanded);
  fill: var(--color--button-expanded);
}

.no-flexbox-gap button > * + * {
  margin-left: var(--s-2);
}
/* -------------------------------- 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;
}

/* -------------------------- Text style utilities -------------------------- */

.font-family\:sans-serif {
  font-family: var(--sans-serif-font);
}

.font-weight\:bold {
  font-weight: 800;
}

.font-weight\:normal {
  font-weight: 200;
}

.font-style\:italic {
  font-style: italic;
}

.text-align\:center {
  text-align: center;
}

.text-transform\:uppercase {
  text-transform: uppercase;
}

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

.text-decoration\:underline {
  text-decoration: underline;
}

.letter-spacing\:tight {
  letter-spacing: -0.02em;
}

/* --------------------------- Text size utilities -------------------------- */

.font-size\:small {
  font-size: var(--font-size-small-1);
}

.font-size\:base {
  font-size: var(--font-size-base);
}
.font-size\:big-1 {
  font-size: var(--font-size-big-1);
}
.font-size\:big-2 {
  font-size: var(--font-size-big-2);
}
.font-size\:big-3 {
  font-size: var(--font-size-big-3);
}
.font-size\:big-4 {
  font-size: var(--font-size-big-4);
}

/* --------------------------------- Flexbox -------------------------------- */

.flex-wrap\:wrap {
  flex-wrap: wrap;
}
html {
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

body {
  margin: 0;
  color: var(--color--text);
  background-color: var(--color--background);

  /* 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,
aside,
section,
main,
article,
header,
figure,
img,
video,
iframe,
svg,
canvas,
footer,
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-3);
}

/* text */
p {
  line-height: 1.4em;
}

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

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

/* Form elements */

select:focus {
  outline: 3px solid var(--color--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;
}
