:root {
  --color: black;
  --background-color: white;
  --muted-color: #8f8f8f;
  --link-color: rgb(0, 0, 238);
}

@media (prefers-color-scheme: dark) {
  :root {
    --color: white;
    --background-color: black;
    --link-color: rgb(143, 143, 238);
  }
}

body {
  color: var(--color);
  background-color: var(--background-color);
}

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

a:visited {
  color: var(--link-color);
}

body {
  font-family: Arial, Helvetica, sans-serif;
}

body {
  display: grid;
  grid-template-areas:
    'nav main address';
  grid-template-columns: 1fr 50em 1fr;
  column-gap: 2em;
}

body>nav {
  grid-area: nav;

  position: sticky;
  top: 0;
  align-self: flex-start;
  justify-self: flex-end;
}

body>article {
  grid-area: main;
}

body>address {
  grid-area: address;
  position: sticky;
  top: 0;
  align-self: flex-start;
}

nav {
  display: flex;
  flex-direction: column;

  font-size: 1.25em;
}

nav ol {
  display: flex;
  flex-direction: column;
  row-gap: 1em;
}

nav ol>li {
  margin-left: 1em;

  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

nav ol ol {
  row-gap: 0.5em;
}

address {
  display: flex;
  flex-direction: column;
  row-gap: 1em;
}

address>header {
  font-size: 2em;
}

ul.accounts {
  list-style: none;
  display: flex;
  flex-direction: column;
  row-gap: 0.25em;
}

header {
  font-weight: bold;
}

article>header {
  font-size: 4em;
}

article>section>header {
  font-size: 3em;
}

article>section>section>header {
  font-size: 2em;
}

article {
  display: flex;
  flex-direction: column;
  row-gap: 1em;
}

article>section {
  display: flex;
  flex-direction: column;
  row-gap: 1em;
}

article>section>section {
  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

section#jobs>ol {
  list-style: none;
  margin: 0;
  margin-block: 0;
  padding-inline: 0;

  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

section.job {
  padding: 1em;
  border: solid 2px var(--color);
  border-radius: 1em;
}

ul.knowledge {
  list-style: none;
  padding-inline: 0;

  display: flex;
  flex-direction: row;
  flex-wrap: wrap;

  column-gap: 1em;
  row-gap: 0.5em;
}

ul.knowledge>li.high {
  font-weight: bold;
}

ul.knowledge>li.low {
  color: var(--muted-color);
}

ol.position {
  list-style: none;
  padding-inline: 0;

  display: flex;
  flex-direction: column;
  row-gap: 2em;
}

section.position {
  display: grid;

  grid-template-areas: 'title attributes period';
  grid-template-columns: auto auto 1fr;
  row-gap: 0.5em;
  column-gap: 1em;

  align-items: baseline;
}

section.position>* {
  grid-column: span 3;
}

section.position>header {
  grid-area: title;
  font-size: 1.25em;
  grid-column: span 1;
}

section.position>aside {
  grid-area: attributes;
  color: var(--muted-color);
}

section.position>section.period {
  grid-area: period;
  justify-self: flex-end;
}

section.period {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;

  column-gap: 0.25em;
}

section.knowledge>ul {
  margin-left: 1em;
}

ul.skills {
  list-style: inside square;
}

ul.skills>li:nth-of-type(5n)+li {
  /* Visually separate chunks of skills */
  margin-top: 0.5em;
}

section.job>header {
  font-size: 1.5em;
  margin-bottom: 1rem;
}

section.project {
  border: solid 2px var(--color);
  border-radius: 1em;
  padding: 1em;
}

section#projects>ol {
  list-style: none;
  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

section.project {
  display: grid;
  grid-template-areas: 'title links period';
  grid-template-columns: auto 1fr 1fr;
  row-gap: 0.5em;
  column-gap: 1em;

  align-items: baseline;
}

section.project>header {
  grid-area: title;
}

section.project>aside.links {
  grid-area: links;

  justify-self: flex-start;
}

section.project>aside.period {
  grid-area: period;

  justify-self: flex-end;
}

section.project>* {
  grid-column: span 3;
}

section.project>header {
  font-size: 1.5em;
}

ul.scholarships {
  display: grid;
  grid-template-areas:
    'year amount title institution';
  grid-template-columns: max-content max-content max-content auto;

  column-gap: 1em;

  margin-left: 1em;
}

ul.scholarships>li {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: span 4;
}

ul.scholarships>li>section {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: span 4;
}

section.scholarship>header {
  grid-area: title;
}

section.scholarship>span.year {
  grid-area: year;
}

section.scholarship>span.institution {
  grid-area: institution;
}

section.scholarship>span.amount {
  grid-area: amount;
  justify-self: flex-end;
}

ul.quote {
  /* Each quote is at least 2 lines, with the last line
   * being on the right, making the first line recognizable
   * as the item.
   */
  list-style: none;

  margin-left: 1em;

  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

section.endorsement {
  display: grid;
  grid-template-areas:
    'quote quote quote quote'
    '. name position relation';
  grid-template-columns: 1fr auto auto auto;

  column-gap: 0.5em;
}

section.endorsement>q {
  grid-area: quote;
}

section.endorsement>span.name {
  grid-area: name;
}

section.endorsement>span.position {
  grid-area: position;
}

section.endorsement>span.relation {
  grid-area: relation;

  color: var(--muted-color);

  /* Remove space between pseudo elements*/
  display: inline-flex;
}

section.endorsement>span.relation::before {
  content: "(";
}

section.endorsement>span.relation::after {
  content: ")";
}

q {
  font-style: italic;
  /* Remove space due to quote pseudo elements */
  display: inline-flex;
}

section#certifications>ul {
  list-style: none;
  display: flex;
  flex-direction: column;
}

section.certification {
  border: solid 2px var(--color);
  border-radius: 1em;
  padding: 1em;

  display: grid;
  grid-template-areas:
    'name verify'
    'org valid';
  grid-template-columns: auto 1fr;

  align-items: baseline;
  column-gap: 1em;
  row-gap: 0.25em;
}

section.certification>header {
  font-size: 1.25em;
  grid-area: name;
}

section.certification>aside {
  grid-area: verify;
}

section.certification>span.institution {
  grid-area: org;
}

section.certification>section.period {
  grid-area: valid;
}

section#degrees>ol {
  list-style: none;

  display: flex;
  flex-direction: column;
  row-gap: 0.5em;
}

section.degree {
  display: grid;
  grid-template-areas:
    'title title period'
    'institution faculty .'
    'skill skill skill';
  grid-template-columns: auto auto 1fr;

  border: solid 2px var(--color);
  border-radius: 1em;
  padding: 1em;
  column-gap: 0.5em;
  row-gap: 0.25em;

  align-items: baseline;
}

section.degree>header {
  grid-area: title;

  font-size: 1.25em;
}

section.degree>section.period {
  grid-area: period;
  justify-self: flex-end;
}

section.degree>span.institution {
  grid-area: institution;
}

section.degree>span.faculty {
  grid-area: faculty;
}

section.degree>section.skills {
  grid-area: faculty;
}

section.degree>section.skills {
  grid-area: skill;
}

ul.skills {
  margin-left: 1em;
}

ul.quote {
  margin-left: 1em;
}

@media (width <=800px) {
  body {
    grid-template-areas:
      'address'
      'nav'
      'main';
    grid-template-columns: 1fr;
    row-gap: 1em;
  }

  body>nav {
    position: initial;
    justify-self: flex-start;
  }

  body>address {
    position: initial;
  }

  ul.scholarships {
    grid-template-columns: max-content max-content 1fr 1fr;
    margin-left: 0;
  }

  section.degree {
    grid-template-areas:
      'title title'
      'institution period'
      'faculty .'
      'skill skill';
    grid-template-columns: auto 1fr;
  }

  section.certification {
    grid-template-areas:
      'name name'
      'org verify'
      'valid valid';
  }

  section.certification>aside {
    justify-self: flex-end;
  }
}