/*
** Fonts 
*/

@font-face {
  font-family: 'Swiza';
  src: url('/fonts/swiza-regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Swiza';
  src: url('/fonts/swiza-medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Swiza';
  src: url('/fonts/swiza-semibold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/*
** Reset
*/

*,
*::before,
*::after {
  box-sizing: border-box;
  padding: 0;
  margin: 0;

  @media screen and (min-resolution: 2dppx) {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
}


/*
** Custom Properties
*/

:root {
  /* Typography */
  --font-family: Swiza, system-ui, sans-serif;
  
  --font-size-base: 8px;

  --font-size-1: 7rem;
  --font-height-1: 0.95;
  --font-letter-spacing-1: -0.05em;

  --font-size-2: 6rem;
  --font-height-2: 1;
  --font-letter-spacing-2: -0.04em;

  --font-size-3: 4.2rem;
  --font-height-3: 1.1;
  --font-letter-spacing-3: -0.03em;

  --font-size-4: 2.9rem;
  --font-height-4: 1.25;
  --font-letter-spacing-4: -0.02em;

  --font-size-5: 2.2rem;
  --font-height-5: 1.4;
  --font-letter-spacing-5: -0.02em;

  --font-size-6: 1.8rem;
  --font-height-6: 1.65;
  --font-letter-spacing-6: 0;

  --font-size-7: 1.6rem;
  --font-height-7: 1.45;
  --font-letter-spacing-7: 0;

  --font-size-8: 1.25rem;
  --font-height-8: 1.4;
  --font-letter-spacing-8: -.01em;

  --font-size-9: 1rem;
  --font-height-9: 1.4;
  --font-letter-spacing-9: 0;

  /* Grid */
  --column-gap: 2.5rem;
  --row-gap: 2rem;
  --max-width: 160rem;
  --section-spacing: 5rem;
  --grid-columns: repeat(10, minmax(0, 1fr));

  /* Base Colors */
  --color-white: #FFFFFF;
  --color-black: #000000;

  /* Grayscale Colors */
  --color-gray-100: #F8F9FA;
  --color-gray-200: #E9ECEF;
  --color-gray-300: #DEE2E6;
  --color-gray-400: #CED4DA;
  --color-gray-500: #ADB5BD;
  --color-gray-600: #6C757D;
  --color-gray-700: #495057;
  --color-gray-800: #353e49;
  --color-gray-900: #212529;
  --color-gray-1000: #16191d;

  /* Blue Colors */
  --color-blue-100: #e7f5ff;
  --color-blue-200: #8698ea;
  --color-blue-300: #667eea;
  --color-blue-400: #5568d3;
  --color-blue-500: #4f69e3;

  /* Context-Specific Colors */
  --color-page-background: var(--color-white);
  --color-page-text: var(--color-black);
  --color-accent: #B94747;
  --color-announcement: #EDF5E2;
  --color-border: var(--color-gray-400);
  --color-cta: #E9F0D7;

  --color-case-study-cardless: #F4F8F0;
  --color-case-study-getwhys: #F1EFFF;
  --color-case-study-neuralink: #F2F7F7;
  --color-case-study-sparrow: #F1FCFF;
  --color-case-study-atinc: #F9F7F4;

  @media (min-width: 720px) {
    --column-gap: 5rem;
  }

  @media (min-width: 1080px) {
    --font-size-base: 10px;

    --font-size-1: 8rem;
    --font-size-2: 7rem;
  }
  
  @media (min-width: 1280px) {
    --font-size-1: 11rem;
    --font-height-1: 0.95;
    --font-letter-spacing-1: -0.05em;

    --font-size-2: 8rem;
    --font-height-2: 1;
    --font-letter-spacing-2: -0.04em;

    --font-size-3: 4.2rem;
    --font-height-3: 1.1;
    --font-letter-spacing-3: -0.03em;

    --font-size-4: 2.9rem;
    --font-height-4: 1.3;

    --font-size-5: 2.2rem;
    --font-height-5: 1.4;

    --font-size-6: 1.6rem;
    --font-height-6: 1.65;

    --font-size-7: 1.4rem;
    --font-height-7: 1.4;
  }

  /* Dark Mode */
  @media (prefers-color-scheme: dark) {
    --color-page-background: var(--color-gray-1000);
    --color-page-text: var(--color-white);
    --color-border: var(--color-gray-600);
    --color-accent: var(--color-blue-200);
  }
}

/**
* Utility Classes
*/

._a11y-hidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
}

.a11y-visible {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto;
  white-space: normal;
}

/*
** Global Styles
*/

:root {
  background-color: var(--color-page-background);
}

/*
** Typography
*/

/* Global Typography */
:root {
  color: var(--color-page-text);
  font-size: var(--font-size-base);
}

body {
  font-family: var(--font-family);
  font-size: var(--font-size-5);
  line-height: var(--font-height-5);
}

/* Paragraphs */
p + p {
  margin-top: 1em;
}

/* Links */
a {
  color: inherit;
  font-weight: 500;
  text-decoration: none;
  
  &:hover,
  &[current] {
    text-decoration: underline;
  }
}

p a {
  text-decoration: underline;
}

.link-arrow {
  display: inline-block;
  padding-right: 3.25em;
  position: relative;

  &:hover .link-arrow-icon {
    transform: translate(20%, -50%);
  }
}

.link-arrow-icon {
  max-height: 50%;
  position: absolute;
  right: 1.5em;
  top: 50%;
  transform: translate(0, -50%);
  transition: transform ease 200ms;
}

/* Headings */
h1, .h1 {
  font-size: var(--font-size-1);
  letter-spacing: var(--font-letter-spacing-1);
  line-height: var(--font-height-1);
}

h2, .h2 {
  font-size: var(--font-size-2);
  letter-spacing: var(--font-letter-spacing-2);
  line-height: var(--font-height-2);
}

h3, .h3 {
  font-size: var(--font-size-3);
  font-weight: 500;
  letter-spacing: var(--font-letter-spacing-3);
  line-height: var(--font-height-3);
}

h4, .h4 {
  font-size: var(--font-size-4);
  font-weight: 500;
  letter-spacing: var(--font-letter-spacing-4);
  line-height: var(--font-height-4);
}

h5, .h5 {
  font-size: var(--font-size-5);
  font-weight: 400;
  letter-spacing: var(--font-letter-spacing-5);
  line-height: var(--font-height-5);
}

h6, .h6 {
  font-size: var(--font-size-6);
  font-weight: 400;
  letter-spacing: var(--font-letter-spacing-6);
  line-height: var(--font-height-6);
}

/* Text Styles */
.text-red {
  color: var(--color-accent);
  font-style: normal;
}

.text-label {
  font-size: var(--font-size-6);
  font-weight: 600;
  letter-spacing: var(--font-letter-spacing-6);
  line-height: var(--font-height-6);
  text-transform: uppercase;
}

/*
** Media
*/

img,
video {
  max-width: 100%;
}

/*
** Buttons
*/

button,
.button {
  color: var(--color-black);
  cursor: pointer;
}

button {
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: normal;
  text-transform: inherit; 

  &[current] {
    text-decoration: underline;
  }
}

.button {
  background-color: var(--color-white);
  border: 2px solid var(--color-black);
  box-shadow: none;
  font-size: var(--font-size-6);
  font-weight: 600;
  letter-spacing: var(--font-letter-spacing-6);
  padding: 1rem 2.5rem;
  text-transform: uppercase;
  word-spacing: .05em;
}

/*
** Grid
*/

.grid {
  display: grid;
  grid-gap: var(--row-gap) var(--column-gap);
  grid-template-columns: var(--grid-columns);
  margin-left: auto;
  margin-right: auto;
  max-width: var(--max-width);
  padding-left: var(--column-gap);
  padding-right: var(--column-gap);
  width: 100%;

  /* Elements span all columns by default unless otherwise specified */
  & > * {
    grid-column: 1 / -1;
  }

  /* Grids inside a grid doesn't have padding */
  & .grid {
    padding-left: 0;
    padding-right: 0;
  }

  /* Modifiers */
  &.-narrow-gutters {
    grid-gap: calc(var(--row-gap) / 2) calc(var(--column-gap) / 2);
  }
}

/*
** Sections
*/

.section {
  --spacing: calc(var(--section-spacing) * 2);

  @media (min-width: 960px) {
    --spacing: calc(var(--section-spacing) * 3);
  }

  @media (min-width: 1440px) {
    --spacing: calc(var(--section-spacing) * 4);
  }

  margin-top: var(--spacing);

  /* Modifiers */
  &.-small {
    @media (min-width: 960px) {
      --spacing: calc(var(--section-spacing) * 2);
    }
  }
}

.section-header {
  margin-bottom: var(--section-spacing);
  align-items: end;
  
  @media (min-width: 960px) {
    margin-bottom: calc(var(--section-spacing) * 1.5);
  }
}

.section-header-left {
  grid-column: 1 / -1;

  @media (min-width: 720px) {
    grid-column: 1 / span 4;
  }
}

.section-header-right {
  font-weight: 400;
  grid-column: 1 / -1;
  letter-spacing: var(--font-letter-spacing-3);
  
  @media (min-width: 720px) {
    grid-column: 5 / -1;
  }

  @media (min-width: 1120px) {
    grid-column: 5 / span 5;
  }
}

.section-label {
  color: var(--color-accent);
  margin-bottom: 2rem;
}

.section-headline {
  /* Descendants */
  br {
    display: none;

    @media (min-width: 720px) {
      display: block;
    }
  }
}

/*
** Case Studies
*/

.case-study {
  margin-bottom: var(--section-spacing);

  .header {
    margin-top: var(--section-spacing);
    margin-bottom: var(--section-spacing);
    
    @media (min-width: 640px) {
      grid-column: 1 / span 8;
    }
    
    @media (min-width: 960px) {
      grid-column: 1 / span 6;
      margin-top: calc(var(--section-spacing) * 2);
    }

    .text-label {
      margin-bottom: 2em;
    }
  }

  .lead {
    font-size: var(--font-size-4);
    letter-spacing: var(--font-letter-spacing-4);
    line-height: var(--font-height-4);
    margin-top: 1.5rem;
  }

  .cover-image {
    width: 100%;
  }

  .cover {
    font-size: var(--font-size-6);
    letter-spacing: var(--font-height-6);
    line-height: var(--font-height-6);
    margin-bottom: var(--section-spacing);
  }

  .summary {
    font-size: var(--font-size-6);
    grid-row-gap: calc(var(--row-gap) * 2);
    letter-spacing: var(--font-height-6);
    line-height: var(--font-height-6);
    margin-bottom: var(--section-spacing);
    padding: 0;
    
    @media (min-width: 960px) {
      margin-bottom: calc(var(--section-spacing) * 2);
    }

    ul {
      list-style: none;
    }
  }

  .summary-headline {
    margin-bottom: 1em;
  }

  .bio {
    @media (min-width: 720px) {
      grid-column: span 7;
    }

    @media (min-width: 960px) {
      grid-column: 1 / span 4;
    }
  }

  .team {
    @media (min-width: 480px) {
      grid-column: span 3;
    }

    @media (min-width: 960px) {
      grid-column: 5 / span 2;
    }
  }

  .our-role {
    @media (min-width: 480px) {
      grid-column: span 4;
    }

    @media (min-width: 720px) {
      grid-column: span 3;
    }

    @media (min-width: 960px) {
      grid-column: 7 / span 2;
    }
  }

  .technologies {
    @media (min-width: 480px) {
      grid-column: span 3;
    }

    @media (min-width: 720px) {
      grid-column: span 2;
    }

    @media (min-width: 960px) {
      grid-column: 9 / span 2;
    }
  }

  .case-study-image {
    font-size: var(--font-size-6);
    
    &:not(.-half) + &:not(.-half) {
      margin-top: var(--column-gap);;
    }

    img,
    video {
      border: 1px solid var(--color-border);
    }

    img {
      width: 100%;
    }

    figcaption {
      margin-top: 1rem;
    }

    .text-label {
      color: var(--color-accent);
      font-weight: 600;
    }

    &.-half,
    .half-item {
      @media (min-width: 640px) {
        grid-column: span 5;
      }
    }
  }

  .textblock {
    margin-top: var(--section-spacing);
    margin-bottom: var(--section-spacing);

    @media (min-width: 960px) {
      margin-bottom: calc(var(--section-spacing) * 2);
    }

    h2 {
      font-size: var(--font-size-3);
      line-height: var(--font-height-3);
      letter-spacing: var(--font-letter-spacing-3);
      margin-bottom: 1.5rem;
      margin-top: 1.5rem;
    }

    p {
      letter-spacing: var(--font-letter-spacing-4);
    }

    .text-label {
      color: var(--color-accent);
    }

    &.-left {
      @media (min-width: 640px) {
        grid-column: span 6;
      }

      @media (min-width: 960px) {
        grid-column: span 5;
      }
    }

    &.-right {
      @media (min-width: 640px) {
        grid-column: span 6;
      }

      @media (min-width: 960px) {
        grid-column: 7 / -1;
      }
    }
  }
}
