

/* ---- 01_vars.css ---- */

:root {
  /* RESPONSIVE */

  --breakpoint-sm: 480px;

  /* COLOURS */
  --blue: #193549;
  --light: #d4dbdf;

  --grey0: #f1f4fe;
  --grey1: #e4e6ed;
  --grey2: #c8cad3;
  --grey3: #a9adb9;
  --grey4: #9094a3;
  --grey5: #7f8496;
  --grey6: #777c91;
  --grey7: #63687c;
  --grey8: #595e72;
  --grey9: #4a5167;

  --blue0: #edf8fd;
  --blue1: #b8dff3;
  --blue2: #89c2e5;
  --blue3: #5ea3d1;
  --blue4: #3f80b2;
  --blue5: #365c7d;
  --blue6: #244f6f;
  --blue7: #16415d;
  --blue8: #0b3248;
  --blue9: #04212f;

  --orange0: #fff4e1;
  --orange1: #ffe8cc;
  --orange2: #fed09b;
  --orange3: #fdb766;
  --orange4: #fca13a;
  --orange5: #fc931d;
  --orange6: #e17800;
  --orange7: #e17800;
  --orange8: #c86a00;
  --orange9: #af5a00;

  --burnt-orange0: #fdf0ed;
  --burnt-orange1: #f6bfb2;
  --burnt-orange2: #ee8e77;
  --burnt-orange3: #e65e3c;
  --burnt-orange4: #c63c1a;
  --burnt-orange5: #8b2b13;
  --burnt-orange6: #6e2114;
  --burnt-orange7: #521812;
  --burnt-orange8: #36100c;
  --burnt-orange9: #1e0400;

  --green0: #d0e7d0;
  --green1: #b5d9b5;
  --green2: #9acc9a;
  --green3: #7ebe80;
  --green4: #60b066;
  --green5: #3fa24c;
  --green6: #009431;
  --green7: #00772a;
  --green8: #005c23;
  --green9: #00421c;

  --main-content-width: 800px;

  --page-gutter: 1.5em;
}

@media screen and (max-width: 480px) {
  :root {
    --page-gutter: 1em;
  }
}


/* ---- 02_base_typography.css ---- */

a {
  text-decoration: none;
}

h1 {
  margin-top: 0;
}

h2:first-child,
h3:first-child,
h4:first-child,
h5:first-child,
h6:first-child {
  margin-top: 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-bottom: 0;
}

p:last-child {
  margin-bottom: 0;
}


/* ---- 03_page_layout.css ---- */

/* LAYOUT */

body {
  color: #222;
  font-family: sans-serif;
  line-height: 1.5;
  padding: 0;
  margin: 0;
  background-color: var(--blue9);
}

main {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

main .with-side-nav {
  display: flex;
  flex-direction: row;
  color: var(--grey1);
}


/* ---- 04_header.css ---- */

/* Header */

header {
  background-color: var(--orange1);
  background: linear-gradient(to bottom, var(--orange3), var(--orange5));
  display: flex;
  /* padding: 0 var(--page-gutter); */
  padding: 0;
  align-items: stretch;
  justify-content: space-between;
  height: 70px;
}

header .brand {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin-left: var(--page-gutter);
}

header h1 {
  color: var(--burnt-orange8);
  margin: 0;
  line-height: 100%;

  font-size: 2em;
}

header h1 a {
  color: var(--burnt-orange8);
  text-decoration: none;
}

header nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 1rem;
  height: 100%;
  gap: 2px;
  margin-right: var(--page-gutter);
}

header nav li {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

header nav a {
  color: var(--burnt-orange8);
  font-size: 120%;
  font-weight: bold;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  line-height: 100%;
  padding: 0 0.8em;
}

header nav a:hover {
  color: var(--burnt-orange6);
  text-decoration: underline;
  background: linear-gradient(to bottom, var(--orange1), var(--orange3));
}

/* "Hide" checkbox -- moves it off screen*/
#menu-btn {
  position: absolute;
  top: -100%;
  left: -100%;
}

/* Hide hamburger for bigger screens */
.menu-icon {
  visibility: hidden;
}

@media screen and (max-width: 480px) {
  header {
    display: grid;
    grid-template-areas:
      "title   title   hamburger"
      "nav     nav     nav";
    height: auto;
  }

  header .brand {
    grid-area: title;
  }

  header h1 {
    font-size: 1.5em;
    word-spacing: 30000px;
  }

  header .menu-icon {
    grid-area: hamburger;
    cursor: pointer;
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    padding: 30px 20px 30px 0;
    position: relative;
    user-select: none;
    visibility: visible;
  }

  header .navicon {
    background-color: var(--burnt-orange8);
    display: block;
    height: 3px;
    width: 24px;
    position: relative;
  }

  header .navicon:before {
    top: 7px;
  }

  header .navicon:after {
    top: -7px;
  }

  header .navicon:before,
  header .navicon:after {
    background-color: var(--burnt-orange8);
    display: block;
    width: 100%;
    height: 100%;
    content: "";
    position: absolute;
    transition: all 0.2s ease-out;
  }

  header > nav.menu {
    width: 100vw;
    grid-area: nav;
    max-width: unset;
    height: auto;
    max-height: 0;
    transition: max-height 0.2s ease-out;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    overflow: hidden;
  }

  header > nav.menu > ul {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    margin: 0;
  }

  header > nav.menu > ul > li {
    display: flex;
    flex-direction: row;
    justify-content: center;
  }

  header > nav.menu > ul > li > a {
    line-height: 100%;
    min-height: 2em;
  }

  header > nav.menu > ul > li > a > span {
    margin: 0.3em 0.5em;
    display: inline-block;
  }

  header > .menu-btn:checked ~ .menu {
    max-height: 240px;
  }

  header > .menu-btn:checked ~ .menu-icon .navicon {
    background: transparent;
  }

  header > .menu-btn:checked ~ .menu-icon .navicon:before {
    transform: rotate(-45deg);
  }

  header > .menu-btn:checked ~ .menu-icon .navicon:after {
    transform: rotate(45deg);
  }

  header > .menu-btn:checked ~ .menu-icon .navicon:before,
  header > .menu-btn:checked ~ .menu-icon .navicon:after {
    top: 0;
  }
}


/* ---- 05_footer.css ---- */

/* Footer */

footer {
  display: flex;
  padding: 1rem;
  color: var(--grey3);
}

.footer-sections {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  max-width: var(--main-content-width);
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

.footer-section {
  font-size: 0.9rem;
}

footer a {
  color: var(--grey1);
  text-decoration: underline;
}

footer ul {
  list-style: none;
  padding-left: 0;
}

.footer-section > *:first-child,
.footer-section > *:first-child > ul {
  margin-top: 0;
}

.footer-section > *:last-child,
.footer-section > *:last-child > ul {
  margin-bottom: 0;
}


/* ---- 06_side_nav.css ---- */

/* Side nav */

nav.side-nav {
  background-color: var(--burnt-orange5);
  background: linear-gradient(to bottom, var(--burnt-orange6) 0%, var(--burnt-orange5) 100px, var(--burnt-orange5) 100%);
  padding: 1rem 0;
  display: flex;
  flex-direction: column;
  min-width: 150px;
}

nav.side-nav ul {
  list-style: none;
  padding: 0;
}

nav.side-nav ul ul {
  margin-left: 1em;
}

nav.side-nav a {
  color: var(--orange5);
  display: block;
  padding: 3px 1em;
}

nav.side-nav ul ul a {
  border-left: 1px solid var(--burnt-orange6);
}

nav.side-nav a:hover {
  background-color: var(--burnt-orange4);
  color: var(--orange3);
}

nav.side-nav a.active {
  background-color: var(--burnt-orange8);
}

@media screen and (max-width: 480px) {
  nav.side-nav {
    display: none;
  }
}


/* ---- 07_on_light_blue.css ---- */

.on-light-blue {
  color: #eee;
  background: linear-gradient(to bottom, var(--blue6) 0%, var(--blue5) 100px, var(--blue5) 100%);
}

.on-light-blue > .grid-paper {
  background-size: 40px 40px;
  background-image: linear-gradient(to right, rgba(255, 255, 255, 0.1) 1px, transparent 1px), linear-gradient(to bottom, rgba(255, 255, 255, 0.1) 1px, transparent 1px);
}

.on-light-blue h1 {
  color: var(--orange2);
}

.on-light-blue h2 {
  color: var(--orange3);
}

.on-light-blue h3 {
  color: var(--orange4);
}

.on-light-blue h4 {
  color: var(--orange5);
}

.on-light-blue strong {
  color: var(--orange6);
}

.on-light-blue em {
  color: var(--grey2);
}

.on-light-blue a {
  color: var(--orange4);
}

.on-light-blue a:hover {
  color: var(--orange3);
}

.on-light-blue code {
  background-color: var(--blue9);
}

.on-light-blue ul {
  color: var(--grey2);
}

.on-light-blue aside {
  background-color: var(--blue7);
  border-color: var(--blue9);
  color: var(--grey2);
}

.on-light-blue nav.between-pages {
  border-color: var(--burnt-orange4);
}


/* ---- 08_article.css ---- */

/* Article */

article.home {
  padding: var(--page-gutter);
}

article.docs-page {
  width: 100%;
  padding: var(--page-gutter);
  min-height: 80vh;
}

article nav.between-pages {
  margin-top: 2em;
  border-top: 3px dashed black;
  padding-top: 1em;
  max-width: var(--main-content-width);
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

article nav.between-pages a {
  font-size: 120%;
  text-decoration: none;
}

article nav.between-pages a:hover {
  text-decoration: underline;
}

/* ARTICLE TYPOGRAPHY */

article > *:first-child {
  margin-top: 0;
}

article > *:last-child {
  margin-bottom: 0;
}

article h1 {
  margin-bottom: 1.5rem;
}

article p {
  max-width: var(--main-content-width);
}

article ul,
article ol {
  max-width: calc(var(--main-content-width) * 0.8);
}

article a {
  text-decoration: underline;
}

article code {
  font-size: 1rem;
  display: inline-block;
  padding: 0 0.3rem;
  border-radius: 3px;
}

article aside {
  border: 2px solid black;
  padding: 1rem;
  border-radius: 3px;
  max-width: calc(var(--main-content-width) * 0.9);
}

article aside > *:first-child {
  margin-top: 0;
}

article aside > *:last-child {
  margin-bottom: 0;
}

article section.hero {
  font-size: 150%;
  max-width: var(--main-content-width);
  font-style: italic;
}

article aside.user-story {
  border: 2px solid var(--orange3);
  padding: 1rem;
  border-radius: 8px;
  max-width: calc(var(--main-content-width) * 0.9);
  color: var(--grey4);
  display: grid;
  grid-template-columns: 10rem 2fr;
  gap: 0.4em;
}

article aside.user-story > p {
  margin-top: 0;
  margin-bottom: 0;
}

article aside.user-story em {
  color: var(--grey3);
  text-align: right;
  padding-right: 0.5rem;
}

article aside.user-story strong {
  color: var(--grey1);
  font-size: 120%;
  font-weight: 500;
}

@media screen and (max-width: 480px) {
  article aside.user-story {
    grid-template-columns: 1fr;
    gap: 0.2em;
  }

  article aside.user-story em {
    text-align: left;
    padding-right: 0;
    padding-top: 0.5rem;
  }

  article aside.user-story em:first-child {
    padding-top: 0;
  }
}


/* ---- 09_roadmap.css ---- */

.roadmap-page {
  display: flex;
  align-items: stretch;
  flex-direction: column;
  padding: 1em var(--page-gutter) 2em var(--page-gutter);
  gap: 2em;
}

.roadmap-page .section-header {
  display: flex;
  align-items: center;
  flex-direction: column;
}

.roadmap-page .content {
  max-width: var(--main-content-width);
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

/* Items List Layout */

.roadmap-items {
  max-width: var(--main-content-width);
  position: relative;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

.roadmap-items:before {
  content: "";
  position: absolute;
  left: calc(50% - 1px);
  border-right: 2px dashed var(--orange3);
  height: 100%;
  z-index: 1;
}

.roadmap-rows {
  display: flex;
  align-items: stretch;
  flex-direction: column;
  gap: 2em;
  position: relative;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  margin-top: 1em;
  margin-bottom: 2em;
}

@media screen and (max-width: 480px) {
  .roadmap-items:before {
    left: 0;
  }
}

/* Item Typography */

a.roadmap-item {
  text-decoration: none;
  color: inherit;
  min-width: 200px;
  max-width: 500px;
  background-color: var(--blue7);
  border: 2px solid var(--blue9);
  border-radius: 8px;
  color: var(--grey2);
}

a.roadmap-item:hover {
  text-decoration: none;
  color: inherit;
  background-color: var(--blue6);
  border-color: var(--blue8);
}

.roadmap-item .details {
  padding: 0.8em 1em 1em 1em;
}

.roadmap-item h2 {
  font-size: 1.2em;
}

/* Roadmap Item Status */

.roadmap-item-row .status-indicator {
  text-align: center;
  padding-left: 1em;
  padding-right: 1em;
  padding-top: 3px;
  padding-bottom: 4px;
  color: black;
  font-weight: bold;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.has-status.status-in-progress {
  --status-color: var(--orange4);
  --status-color-highlight: var(--orange3);
  --status-color-text: black;
}

.has-status.status-testing {
  --status-color: var(--green8);
  --status-color-highlight: var(--green7);
  --status-color-text: var(--grey0);
}

.roadmap-item-row.has-status a.roadmap-item {
  border-color: var(--status-color);
}

.roadmap-item-row.has-status .status-indicator {
  background-color: var(--status-color);
  color: var(--status-color-text);
}

.roadmap-item-row.has-status a.roadmap-item:hover {
  border-color: var(--status-color-highlight);
}

.roadmap-item-row.has-status a.roadmap-item:hover .status-indicator {
  background-color: var(--status-color-highlight);
}

/* Timeline dot */

.roadmap-rows > .roadmap-item-row::before {
  content: "";
  height: 12px;
  width: 12px;
  border: 1px solid black;

  background-color: var(--status-color, var(--orange3));
  border-radius: 999px;
  z-index: 3;
}

/* Item Row Leaf Node */

.roadmap-rows > .roadmap-item-row {
  display: flex;
  flex-direction: row;
  width: 100%;
  position: relative;
  z-index: 2;
}

.roadmap-rows .roadmap-item-row.not-section .roadmap-item-container {
  display: flex;
  flex-direction: row;
}

@media screen and (min-width: 481px) {
  .roadmap-rows > .roadmap-item-row.not-section::before {
    left: calc(50% - 7px);
    top: 50%;
    position: absolute;
  }

  .roadmap-rows > .roadmap-item-row.not-section {
    width: calc(50% - var(--page-gutter));
    justify-content: flex-start;
  }

  .roadmap-rows > .roadmap-item-row.not-section:nth-child(odd) {
    padding-right: calc(50% + var(--page-gutter));
  }

  .roadmap-rows > .roadmap-item-row.not-section:nth-child(even) {
    padding-left: calc(50% + var(--page-gutter));
  }
}

@media screen and (max-width: 480px) {
  .roadmap-rows > .roadmap-item-row.not-section {
    padding-left: var(--page-gutter);
    width: calc(100% - var(--page-gutter));
  }

  .roadmap-rows > .roadmap-item-row.not-section::before {
    position: absolute;
    left: -6px;
    top: 50%;
  }
}

/* Section Item Row */

.roadmap-rows > .roadmap-item-row.is-section {
  flex-direction: column;
  align-items: center;
}

.roadmap-rows > .roadmap-item-row.is-section .roadmap-item-container {
  min-width: 50%;
  display: flex;
  flex-direction: row;
  justify-content: center;
}

@media screen and (min-width: 481px) {
  .roadmap-rows > .roadmap-item-row.is-section::before {
    margin-bottom: -6px;
  }
}

@media screen and (max-width: 480px) {
  .roadmap-rows > .roadmap-item-row.is-section {
    padding-left: var(--page-gutter);
    width: calc(100% - var(--page-gutter));
  }

  .roadmap-rows > .roadmap-item-row.is-section::before {
    position: absolute;
    left: -6px;
    top: 50%;
  }
}

.roadmap-rows > .roadmap-item-row.is-section .sub-pages {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  gap: 10px;
  padding-right: 12px;
  margin-bottom: 10px;
}

/* Sub Pages */

.roadmap-item-row .sub-pages .sub-page {
  width: 12px;
  height: 12px;
  background-color: var(--grey5);
  border-radius: 9999px;
}

.roadmap-item-row .sub-pages .sub-page.has-status {
  background-color: var(--status-color, var(--grey5));
}

/* Roadmap item detail page */

article.roadmap-item-page {
  width: 100%;
  padding: var(--page-gutter);
  min-height: 80vh;
}

article.roadmap-item-page .article-header {
  margin-bottom: 1.5em;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: stretch;
}

article.roadmap-item-page .article-header h1 {
  margin: 0;
}

article.roadmap-item-page .article-header .status-indicator {
  --height: 32px;

  background-color: var(--status-color, var(--grey3));
  color: var(--status-color-text, black);
  padding: 0 1em;
  font-weight: bold;
  letter-spacing: 2px;
  position: relative;
  border: 1px solid;
  height: var(--height);
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 2px;
}

article.roadmap-item-page .article-header .status-indicator > span {
  line-height: 100%;
  padding-bottom: 0.1em;
  text-transform: uppercase;
}

article.roadmap-item-page .article-header .status-indicator:after {
  content: "";
  position: absolute;
  left: calc(-1 * var(--height));
  top: 0;
  bottom: 0;
  border: calc(var(--height) / 2) solid transparent;
  border-right: calc(var(--height) / 2) solid var(--status-color, var(--grey3));
}

@media screen and (max-width: 480px) {
  article.roadmap-item-page .article-header {
    flex-direction: column;
    gap: 0.5em;
  }

  article.roadmap-item-page .article-header .status-indicator:after {
    display: none;
  }
}

/* Roadmap Side Nav */

.roadmap-side-nav {
  background-color: var(--blue7);
  background: linear-gradient(to bottom, var(--blue8) 0%, var(--blue7) 100px, var(--blue7) 100%);
  padding: 1rem 0;
  display: flex;
  flex-direction: column;
  min-width: 150px;
  border-right: 2px dashed var(--orange3);
}

.roadmap-side-nav ul {
  list-style: none;
  padding-left: 0;
  margin-left: 0;
  display: flex;
  flex-direction: column;
  margin: 0;
}

.roadmap-side-nav a {
  text-decoration: none;
  color: var(--orange3);
  padding: 0.3em 1em;
  display: block;
  position: relative;
}

.roadmap-side-nav a:after {
  --size: 12px;

  position: absolute;
  content: "";
  display: block;
  background-color: var(--status-color, var(--grey5));
  width: var(--size);
  height: var(--size);
  border-radius: 9999px;
  right: calc(-1px - var(--size) / 2);
  top: calc(50% - var(--size) / 2);
}

.roadmap-side-nav a:hover {
  background-color: var(--blue6);
}

.roadmap-side-nav a.active {
  background-color: var(--blue8);
  color: var(--orange1);
}

.roadmap-side-nav a.section-step {
  font-weight: bold;
  padding-top: 1em;
  padding-bottom: 1em;
}

.roadmap-side-nav ul li {
  border-bottom: 1px solid var(--blue8);
}

.roadmap-side-nav ul li:last-child {
  border-bottom: none;
}

@media screen and (max-width: 480px) {
  .roadmap-side-nav {
    display: none;
  }
}

/* Footer */

.roadmap-item-page .parent-page-link {
  margin-top: 2em;
}


/* ---- 10_solo.css ---- */

.solo {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

article.solo-page {
  max-width: var(--main-content-width);
  margin-left: auto;
  margin-right: auto;
  min-height: 50vh;
  width: 100%;
}


/* ---- 11_home.css ---- */

.home {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

article.home-page {
  max-width: var(--main-content-width);
  margin-left: auto;
  margin-right: auto;

  width: 100%;
}
