:root {
  --black: #000;
  --white: #fff;

  --grey: #8594a6;
  --lightGrey: #f2f6fc;

  --blue: #1480ff;
  --lightBlue: #e8f2ff;

  --unit: 6;

  --unit-1: calc(var(--unit) * 1 * 1px);
  --unit-2: calc(var(--unit) * 2 * 1px);
  --unit-3: calc(var(--unit) * 3 * 1px);
  --unit-5: calc(var(--unit) * 5 * 1px);
  --unit-10: calc(var(--unit) * 10 * 1px);
  --unit-15: calc(var(--unit) * 15 * 1px);
  --unit-25: calc(var(--unit) * 25 * 1px);
}

@media (prefers-color-scheme: dark) {
  :root {
    --black: #eee;
    --white: #111;

    --grey: #aaa;
  }
  html {
    -webkit-font-smoothing: antialiased;
  }
  .arrow path {
    stroke: rgba(255, 255, 255, 0.2) !important;
  }
  .home__side-project {
    border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
  }
  .home__side-project:first-of-type {
    border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
  }
  .side-projects__tag {
    background: transparent !important;
    border: 1px solid var(--blue);
  }
  .side-projects__tag--active {
    background: var(--blue) !important;
  }
  .case-study__facts {
    background: var(--white) !important;
    border: 2px solid var(--black) !important;
  }
}

/* Reset */

* {
  box-sizing: border-box;
}

html {
  font-size: 18px;
  background: var(--white);
  height: 100%;
}

body {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  margin: 0;
  font-family:
    "AvenirLTPro",
    Avenir,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    Roboto,
    Oxygen,
    Ubuntu,
    Cantarell,
    "Open Sans",
    "Helvetica Neue",
    sans-serif;
  color: var(--black);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
@media (min-width: 400px) {
  :root {
    --unit: 8;
  }
  html {
    font-size: 20px;
  }
}

img {
  vertical-align: middle;
  max-width: 100%;
}

figure {
  margin: 0;
}

figcaption {
  display: block;
  font-weight: normal;
  font-size: 0.7rem;
  line-height: 1.4;
  color: var(--grey);
  text-align: center;
  margin-top: var(--unit-3);
}

/* Grid */

.grid {
  display: grid;
  grid-template-columns: minmax(20px, 1fr) repeat(
      14,
      minmax(20px, 80px)
    ) minmax(20px, 1fr);
  max-width: 1440px;
  margin: 0 auto;
}
.grid > * {
  grid-column: 2 / -2;
}

/* Text Styles */

a {
  color: var(--black);
  text-decoration: none;
}

li > a,
p a {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

ul li {
  list-style: none;
  font-weight: normal;
  font-size: 1rem;
  line-height: 1.6;
  margin: 0 0 var(--unit-2) 0;
}

ul li::before {
  content: "-";
  display: block;
  height: 0;
  width: 0;
  left: -0.9em;
  top: 0;
  position: relative;
}

b,
strong {
  font-weight: 800;
}

em {
  font-style: normal;
  color: var(--grey);
}

.h1 {
  font-size: 2rem;
  line-height: 1.4;
  font-weight: normal;
  margin: 0;
}

.h2 {
  font-weight: normal;
  font-size: 1.6rem;
  line-height: 1.25;
  margin: 0 0 var(--unit-3) 0;
}

.h3 {
  font-weight: 800;
  font-size: 1rem;
  line-height: 1.6;
  margin-top: var(--unit-1);
  margin-bottom: var(--unit-2);
}

.h4 {
  font-weight: 800;
  font-size: 0.7rem;
  line-height: 1.14;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--blue);
  margin: 0;
}

p,
.copy {
  font-weight: normal;
  font-size: 1rem;
  line-height: 1.6;
  margin: 0 0 var(--unit-2) 0;
}

.label {
  font-weight: 800;
  font-size: 0.7rem;
  line-height: 1.14;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--blue);
}

.caption {
  display: block;
  font-weight: normal;
  font-size: 0.7rem;
  line-height: 1.4;
  color: var(--grey);
}

.button {
  display: inline-block;
  font-weight: 500;
  text-decoration: none;
}
.button::after {
  display: inline-block;
  position: relative;
  top: 1px;
  padding-left: 0.8ch;
  content: "→";
  transition: transform 0.2s;
}
.button:hover::after {
  transform: translateX(20%);
}

/* Navigation */

.nav {
  margin-block: var(--unit-3);

  @media (min-width: 640px) {
    margin-block-start: var(--unit-5);
  }
  @media (min-width: 800px) {
    margin-block-end: var(--unit-25);
  }
}

.nav__container {
  grid-column: 2 / -2;

  @media (min-width: 640px) {
    display: grid;
    grid-template-columns: max-content minmax(auto, 500px);
    column-gap: var(--unit-10);
    justify-content: space-between;
  }
}

.nav__logo {
  display: block;
  margin-bottom: var(--unit-2);
  text-decoration: none;
  font-weight: 500;

  @media (min-width: 640px) {
    margin-bottom: 0;
  }
  @media (min-width: 640px) {
    font-weight: 400;
  }
}

.nav__links {
  display: flex;
  flex-direction: row;
  justify-content: space-between;

  @media (min-width: 640px) {
    justify-content: flex-end;
    gap: var(--unit-10);
  }
}
.nav__link--active {
  color: var(--grey);
}
.nav__link--contact span {
  display: none;
}
.nav__link--contact img {
  height: 16px;
  margin-bottom: 3px;
}
@media (min-width: 400px) {
  .nav__link--contact span {
    display: inline;
  }
  .nav__link--contact img {
    display: none;
  }
}

/* Default */

.default {
  flex-grow: 1;
  grid-template-rows: max-content;
}

.default h1 {
  margin-bottom: var(--unit-3);
}

/* Home */

.home > .home__column-left {
  @media (min-width: 800px) {
    grid-column: 2 / 10;
  }

  .button:last-child {
    margin-block-start: var(--unit-2);
  }
}
.home > .home__column-right {
  order: -1;
  margin-block-end: var(--unit-5);
  grid-column: 1/-1;

  @media (min-width: 800px) {
    order: 0;
    grid-column: 11 / -2;
  }
}

.home__intro {
  margin-block-start: var(--unit-5);

  p {
    margin-block-end: var(--unit-3);
  }
}

.home__motto {
  font-size: 1.6rem;

  @media (min-width: 400px) {
    font-size: revert;
  }
}
.home__recent-work {
  margin-bottom: var(--unit-15);

  @media (min-width: 800px) {
    grid-column: 2 / 9;
    margin-bottom: 0;
  }
}

.home__section-nav {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-bottom: var(--unit-2);
}
.home__casestudy {
  display: block;
  margin-bottom: var(--unit-15);
}
.home__casestudy-image {
  margin-bottom: var(--unit-5);
}
.home__casestudy-tags {
  margin-bottom: var(--unit-2);
}
.home__about-me {
  margin-bottom: var(--unit-15);

  @media (min-width: 800px) {
    padding-top: 48px;
  }
}
.home__photo {
  width: 100%;
}
.home__side-project {
  display: grid;
  grid-template-columns: 1fr var(--unit-3);
  padding: var(--unit-3) 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.home__side-project:first-of-type {
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}
.home__side-project > * {
  grid-column: 1 / 2;
  margin-bottom: var(--unit-1);
}
.home__side-project .arrow {
  display: flex;
  grid-column: 2/2;
  grid-row: 1 / 4;
  align-self: center;
  justify-content: center;
}
.home__side-project .arrow path {
  stroke: var(--black);
}
.home__side-project > *:last-child {
  margin-bottom: 0;
}

/* Work */

.work__case-study {
  grid-column: 1 / -1;
  margin-bottom: var(--unit-25);
}
.work__case-study-image {
  margin-bottom: var(--unit-10);
  grid-column: 1 / -1;
  width: 100%;
  object-fit: cover;
}
@media (min-width: 500px) {
  .work__case-study-wrapper {
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
  }
}
.work__case-study-tags {
  margin-bottom: var(--unit-2);
}

/* Side Projects */

.side-projects__tags {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  margin-bottom: var(--unit-10);
}
.side-projects__tag {
  display: block;
  padding: 0.9em 1.2em 0.7em;
  margin-right: var(--unit-2);
  margin-bottom: var(--unit-2);
  border-radius: 100px;
  background-color: var(--lightBlue);
}
.side-projects__tag--active {
  color: var(--white);
  background-color: var(--blue);
}
.side-project__label {
  margin-bottom: var(--unit-1);
}
.side-project__image {
  margin-bottom: var(--unit-3);
}
.side-project__headline {
  margin-bottom: var(--unit-1);
}
.side-projects__feed {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--unit-15) var(--unit-10);
}

/* Article */

.article__grid {
  margin-top: var(--unit-10);
  grid-column: 1 / -1;
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: 20px 1fr 20px;
  row-gap: var(--unit-10);
}
.article__grid > * {
  grid-column: 2;
  width: 100%;
  max-width: 560px;
}
.article__column-full {
  grid-column: 1 / -1;
  width: unset;
  max-width: unset;
}
.article__date {
  color: var(--grey);
  margin-bottom: 0;
}

@media (min-width: 800px) {
  .article__grid {
    grid-template-columns:
      minmax(20px, 1fr)
      repeat(14, minmax(20px, 80px))
      minmax(20px, 1fr);
    row-gap: var(--unit-15);
  }

  .article__grid > * {
    width: unset;
    max-width: unset;
  }

  .article__column-center {
    grid-column: 5 / -5;
  }

  .article__column-left {
    grid-column: 1 / 9;
    display: grid;
    grid-template-columns: minmax(20px, 1fr) repeat(7, minmax(20px, 80px));
    align-content: center;
  }
  .article__column-left > * {
    grid-column: 2 / -2;
  }
  .article__column-left > figure {
    grid-column: 1 / -1;
  }

  .article__column-right {
    grid-column: 10 / -1;
    display: grid;
    grid-template-columns: repeat(6, minmax(20px, 80px)) minmax(20px, 1fr);
    align-content: center;
  }
  .article__column-right > * {
    grid-column: 1 / -2;
  }
  .article__column-right > figure {
    grid-column: 1 / -1;
  }
}

/* Case Study */

.case-study__info {
  grid-column: 1 / -1;
  margin-top: var(--unit-10);
  row-gap: var(--unit-10);
}

.case-study__cover {
  grid-column: 1 / -1;
}

.case-study__facts {
  grid-column: 1 / -1;
  padding: 10%;
  background: var(--lightGrey);
}

.case-study__facts .label {
  margin-bottom: var(--unit-1);
}

.case-study__facts .label + div {
  margin-bottom: var(--unit-5);
}

@media (min-width: 500px) {
  .case-study__facts {
    grid-column: 2 / -2;
    display: grid;
    grid-template-columns: 1fr 2fr;
    grid-gap: var(--unit-3);
    align-items: baseline;
  }
  .case-study__facts .label,
  .case-study__facts .label + div {
    margin-bottom: 0;
  }
}

@media (min-width: 600px) {
  .case-study__info {
    row-gap: var(--unit-10);
  }
  .case-study__description {
    grid-column: 4 / -4;
  }
  .case-study__facts {
    grid-column: 3 / -3;
  }
}

@media (min-width: 900px) {
  .case-study__info {
    grid-column: 1 / -1;
    row-gap: revert;
  }

  .case-study__cover {
    grid-column: 1 / 9;
    align-self: stretch;
    object-fit: cover;
  }

  .case-study__description {
    grid-column: 10 / -2;
    align-self: center;
    padding-bottom: calc(var(--unit-5) + var(--unit-2));
  }

  .case-study__facts {
    margin-top: calc(-1 * var(--unit-5));
    grid-column: 5 / 13;
  }
}

.case-study__grid {
  grid-column: 1 / -1;
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: 20px 1fr 20px;
  row-gap: var(--unit-10);
  margin-top: var(--unit-10);
}
.case-study__grid > * {
  grid-column: 2;
  width: 100%;
  max-width: 560px;
}
.case-study__column-full {
  grid-column: 1 / -1;
  width: unset;
  max-width: unset;
}

@media (min-width: 800px) {
  .case-study__grid {
    grid-template-columns:
      minmax(20px, 1fr)
      repeat(14, minmax(20px, 80px))
      minmax(20px, 1fr);
    row-gap: var(--unit-15);
  }

  .case-study__grid > * {
    width: unset;
    max-width: unset;
  }

  .case-study__column-center {
    grid-column: 5 / -5;
  }

  .case-study__column-left {
    grid-column: 1 / 9;
    display: grid;
    grid-template-columns: minmax(20px, 1fr) repeat(7, minmax(20px, 80px));
    align-content: center;
  }
  .case-study__column-left > * {
    grid-column: 2 / -2;
  }
  .case-study__column-left > figure {
    grid-column: 1 / -1;
  }

  .case-study__column-right {
    grid-column: 10 / -1;
    display: grid;
    grid-template-columns: repeat(6, minmax(20px, 80px)) minmax(20px, 1fr);
    align-content: center;
  }
  .case-study__column-right > * {
    grid-column: 1 / -2;
  }
  .case-study__column-right > figure {
    grid-column: 1 / -1;
  }
}

.case-study__subline {
  color: var(--grey);
  margin-bottom: 0;
}

.case-study__grid {
  margin-top: var(--unit-10);
}

/* About */

.about__columns-1,
.about__columns-2,
.about__columns-3 {
  margin-bottom: calc(var(--unit-1) * var(--spaceBelow));
  row-gap: calc(var(--unit-1) * var(--rowGap));
}

.about__column--1\/2-0 {
  margin-bottom: calc(var(--unit-1) * var(--rowGap));
}

.about__columns-3 {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

@media (min-width: 800px) {
  .about__columns-1,
  .about__columns-2,
  .about__columns-3 {
    grid-column: 3 / -3;
    display: grid;
    grid-template-columns: repeat(12, minmax(auto, 80px));
  }

  .about__column--1\/1-0 {
    grid-column: span 12;
  }

  .about__column--1\/2-0 {
    grid-column: span 6;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-bottom: 0;
  }

  .about__column--1\/2-1 {
    grid-column: 8 / span 5;
  }

  .about__column--1\/3-0,
  .about__columns-3.about__columns--autofill > *:nth-child(3n + 1) {
    grid-column: span 3;
  }
  .about__column--1\/3-1,
  .about__columns-3.about__columns--autofill > *:nth-child(3n + 2) {
    grid-column: 5 / span 3;
  }
  .about__column--1\/3-2,
  .about__columns-3.about__columns--autofill > *:nth-child(3n + 3) {
    grid-column: 9 / span 3;
  }
}
.about__column h1 {
  margin-bottom: var(--unit-5);
}
.about__column h4 {
  margin-bottom: var(--unit-3);
}

/* Footer */

.footer {
  margin-top: var(--unit-15);
  margin-bottom: var(--unit-5);
  grid-column: 2 / -2;
  text-align: right;
}

/* Blocks */

.media-object {
  display: grid;
  grid-template-columns: 80px max-content;
  justify-content: start;
  column-gap: var(--unit-3);
}
.media-object__media {
  grid-column: 1;
  grid-row: span 2;
}
.media-object__headline {
  grid-column: 2;
  align-self: end;
  margin-bottom: 0;
}
.media-object__subline {
  grid-column: 2;
}
