:root {
  /* define colors as colors */
  --green: #14dd90;
  --red: #ff5470;
  --yellow: #fde24f;
  --black: #161f2b;
  --trueBlack: #000;
  --darkBlue: #00214d;
  --darkGrey: #111;
  --grey: #bfbfbf;
  --lightGrey: #f2f4f6;
  --white: #fff;

  /* define colors' intentions */
  --primary: var(--grey);
  --danger: var(--red);
  --background: var(--lightGrey);
  --textColor: var(--black);
  --buttonTextColor: var(--background);
  --lineColor: var(--grey);
  --cardBg: var(--white);
  --headerBackground: var(--background);
  --headerTextColor: var(--black);
  --footerBackground: var(--background);
  --footerBackgroundFade: var(--grey);
  --footerTextColor: var(--black);

  /* Styles */
  --line: solid 0.125rem var(--lineColor);
  --baseFontSize: 100%;
  --borderRadius: 10px;

  /* Type */
  --headingFont: 'Unica One', cursive;
  --bodyFont: 'Vollkorn', serif;
  --bigH: 3.95rem;
  --h1: 3.052rem;
  --h2: 2.441rem;
  --h3: 1.953rem;
  --h4: 1.563rem;
  --h5: 1.25rem;
  --h6: 1rem;
  --smallText: 0.8rem;

  /* Elevation */
  --level-1: 0 1px 3px 0 rgba(0,0,0,0.1), 0 1px 2px 0 rgba(0,0,0,0.06);
  --level-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --level-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --level-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);

  /* Positioning */
  --containerPadding: 1.5rem;
  --headerHeight: 3rem;
}

@media only screen and (min-width: 500px) {
  :root {
    --baseFontSize: 112.5%;
  }
}


/* FROM type-scale.com */

html {
  font-size: var(--baseFontSize);
  box-sizing: border-box;
} /*18px*/

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

body {
  font-family: var(--bodyFont);
  font-weight: 400;
  line-height: 1.75;
  background: var(--background);
  color: var(--textColor);
}

/* scrollbar */
body::-webkit-scrollbar {
  width: 1rem;
}

body {
  scrollbar-width: thin;
  scrollbar-color: var(--primary);
}

body::-webkit-scrollbar-track {
  background: var(--background);
}

body::-webkit-scrollbar-thumb {
  background-color: var(--primary);
  border: 0.25rem solid var(--background);
}

p {
  margin-bottom: 1rem;
  max-width: 40em;
}

.link,
h3 a,
p a, 
li a,
blockquote a {
  color: var(--textColor);
  text-decoration: none;
  border-bottom: 2px solid var(--primary);
}

/* elimate following space */
/* p a, */
p code {
  display: inline-block;
}

h1, h2, h3, h4, h5 {
  margin: 3rem 0 1.38rem;
  font-family: var(--headingFont);
  font-weight: 400;
  line-height: 1.3;
}

h1 {
  margin-top: 0;
  font-size: var(--h1);
}

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

h3 {font-size: var(--h3);}

h4 {font-size: var(--h4);}

h5 {font-size: var(--h5);}

h6 {font-size: var(--h6);}

small, .text_small {font-size: var(--smallText);}

/* End type-scale */

blockquote {
  margin: 1em 0;
  padding: 2em;
  background: var(--cardBg);
  box-shadow: var(--level-3);

}

label {
  display: block;
  font-size: var(--smallText);
  color: var(--textColor)
}

input, textarea {
  padding: 4px 5px;
  border: var(--line);
  border-radius: 4px;
  width: 100%;
}

input:focus,
textarea:focus {
  outline-color: black;
  outline-width: 0.125rem;
}

figure {
  max-width: 100%;
  height: auto;
}

img {
  width: 100%;
  height: auto;
}

code {
  background-color: var(--lightGrey);
  color: var(--black);
}

textarea {
  height: 5em;
}

::placeholder {
  color: var(--grey);
}

select {
  border: var(--line);
}

hr {
  border-top: var(--line);
}

button {
  --buttonColor: var(--textColor);
  appearance: none;
  color: var(--buttonTextColor);
  background: var(--buttonColor);
  border: none;
  border-radius: 10px;
  padding: 10px 25px 5px 25px;
  box-shadow: var(--level-1);
  transition: 0.3s ease-in-out box-shadow;
}

button:hover {  
  box-shadow: var(--level-4);
}

button[disabled] {
  opacity: 0.4;
}

button.cancel {
  --buttonColor: var(--danger);
  --textColor: var(--white);
}

button.small {
  font-size: var(--smallText);
}

.grid {
  --gridCols: 2;
  display: grid;
  grid-template-columns: repeat(var(--gridCols), 1fr);
}

.grid--split  {
  grid-template-columns: 1fr 2fr;
  grid-gap: 20px;
}

.cols-3 {
  --gridCols: 3;
}

.cols-4 {
  --gridCols: 4;
}

.split {
  display: grid;
  grid-template-columns: 1fr 2fr;
  grid-gap: 20px;
}

.flex {
  --justifyContent: space-between;
  display: flex;
  justify-content: var(--justifyContent);
}

.flex-around {
  --justifyContent: space-around;
}

.logo {
  margin: 0;
  font-size: var(--baseFontSize);
  font-weight: 900;
  font-family: var(--headingFont);
  text-decoration: none;
  color: inherit;
}

.card {
  padding: 2em;
  background: var(--cardBg);
  box-shadow: var(--level-3);
  border-radius: var(--borderRadius);
}

/* first item will never have a margin top */
.card > *:first-child {
  margin-top: 0;
}

/* last child in card will never have margin bottom */
.card > *:last-child {
  margin-bottom: 0;
}



.dark {
  --cardBg: var(--darkGrey);
  --background: var(--trueBlack);
  --textColor: var(--lightGrey);
  --buttonTextColor: var(--trueBlack);
  --headerBackground: var(--darkGrey);
  --headerTextColor: var(--white);
  --footerBackground: var(--darkGrey);
  --footerBackgroundFade: var(--trueBlack);
}

/* specificity of this on body, means that redefining black will change it everywhere :) */
/* .oled {
  --cardBg: var(--darkGrey);
  --headerBackground: var(--darkGrey);
  --footerBackground: var(--darkGrey);
} */


/* CSS specificity: least to most */
/* element: hi, div */
/* Class, attribute, [type="input"] */
/* IDs */
/* !important - don't ever use this */

/* more specific based on load order */
/* h1 {
  font-size: 1rem;
}
the second one renders
h1 {
  font-size: 3rem;
} */