:root {
  --color-primary: #fff;
  --color-secondary: #111;
  --color-accent: #4729ff;

  --space--1: clamp(0.125rem, 0.125rem + 0.5435vw, 0.25rem);
  --space-0: clamp(0.25rem, 0.1663rem + 0.5435vw, 0.4375rem);
  --space-1: clamp(0.375rem, 0.2663rem + 0.5435vw, 0.6875rem);
  --space-2: clamp(0.8125rem, 0.6386rem + 0.8696vw, 1.3125rem);
  --space-4: clamp(1.5625rem, 1.1929rem + 1.8478vw, 2.625rem);

  --font-primary: "neue-haas-grotesk-text", sans-serif;
  --font-primary-display: "neue-haas-grotesk-display", sans-serif;

  --size--1: clamp(0.844rem, 1.0543rem + -0.2714vw, 1rem);
  --size-0: clamp(1.125rem, 1.225rem + 0vw, 1.25rem);
  --size-1: clamp(1.2656rem, 1.1842rem + 0.407vw, 1.4996rem);
  --size-3: clamp(1.4018rem, 1.1321rem + 1.8485vw, 2.6647rem);

  --weight-extra-light: 200;
  --weight-light: 300;
  --weight-medium: 500;
  --weight-semibold: 600;

  --page-padding: 5vw;
  --header-height: 3rem;
  --border-radius-0: calc(var(--space-0) / 2);
}

* {
  box-sizing: border-box;
}

html {
  font-feature-settings: "kern" 1;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  font-kerning: normal;
  text-rendering: optimizeLegibility;
}

body,
h1,
p {
  margin: 0;
}

body {
  color: var(--color-primary);
  background: var(--color-secondary);
  font-family: var(--font-primary);
  font-size: var(--size-0);
  font-weight: var(--weight-light);
  line-height: 1;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
}

a:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

::selection {
  color: var(--color-secondary);
  background: var(--color-primary);
}

.header {
  display: flex;
  justify-content: space-between;
  gap: var(--space-2);
  align-items: center;
  margin: var(--space-4) var(--page-padding);
}

.header__contact {
  display: flex;
  gap: var(--space-1);
}

.logo {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space--1);
  text-transform: uppercase;
  font-family: var(--font-primary-display);
  user-select: none;
  text-decoration: none;
}

.logo__name {
  display: flex;
  flex-direction: column;
  font-size: var(--size-1);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.075rem;
}

.logo__subline {
  font-size: 0.72rem;
  font-weight: var(--weight-medium);
  text-transform: lowercase;
}

.button {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-0);
  padding: var(--space-2);
  border-radius: 50%;
  font-size: var(--size--1);
  font-weight: var(--weight-medium);
  color: var(--color-secondary);
  background-color: var(--color-primary);
  text-decoration: none;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
}

.button:hover {
  color: var(--color-primary);
  background-color: var(--color-accent);
}

.button span {
  display: none;
  transform: translateY(1px);
}

.intro {
  display: grid;
  gap: var(--space-4);
  margin: var(--space-4) var(--page-padding);
}

picture {
  display: contents;
}

source {
  display: none;
}

.intro__image {
  justify-self: center;
  width: min(55vw, 13rem);
  border-radius: 50%;
}

.intro__text {
  max-width: 40rem;
  font-weight: var(--weight-extra-light);
  line-height: 1.5;
}

.intro__text h1 {
  margin-bottom: var(--space-1);
  font-size: var(--size-3);
  font-weight: var(--weight-light);
  line-height: 1.2;
}

.intro__text p:not(:last-child) {
  margin-bottom: var(--space-1);
}

@media (min-width: 350px) {
  .logo__name {
    flex-direction: row;
    gap: 0.375rem;
    font-size: 1.4375rem;
  }
}

@media (min-width: 768px) {
  .logo__name {
    gap: 0.4375rem;
    font-size: 1.6875rem;
  }

  .logo__subline {
    font-size: 0.844rem;
  }

  body {
    display: flex;
    flex-direction: column;
    min-height: 100svh;
  }

  .button {
    padding: calc(var(--space-1) * 0.9) calc(var(--space-1) * 1.5);
    border-radius: var(--border-radius-0);
  }

  .button span {
    display: inline;
  }

  .intro {
    grid-template-columns: auto minmax(0, 40rem);
    justify-content: center;
    column-gap: calc(var(--space-4) * 1.5);
    align-items: center;
    align-content: center;
    flex: 1;
    margin-top: 0;
  }

  .intro__image {
    width: min(35vw, calc((100svh - var(--header-height) - 3 * var(--space-4)) * 0.5));
    border-radius: var(--border-radius-0);
  }
}
