:root {
  /* Animation */
  --sectionTitleAnimationTiming: 1.6s;
  --textAnimationTiming: 0.8s;
  --backgroundAnimationTiming: 1s;
  /* Quote Image Size */
  --quoteImageSize: 40px;
  /* Positioning */
  --headerMarginTop: 150px;
}

@property --angle {
  syntax: "<angle>";
  initial-value: -150deg;
  inherits: false;
}

html {
  scroll-behavior: smooth;
}

main {
  position: relative;
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
  height: 100dvh;
  width: 100dvw;
}

section {
  position: relative;
  width: 100%;
  border-right: 0px;
  border-left: 0px;
}
section,
footer {
  scroll-snap-align: start;
}

.empty-section {
  height: 100dvh;
  width: 100%;
  background-color: transparent;
}

.container {
  min-height: 100dvh;
  height: auto;
  display: flex;
  justify-content: center;
  flex-direction: column;
  align-items: center;
  padding: 0 var(--containerPaddingHorizontal);
  padding: 0 clamp(20px, 8.5dvw, var(--containerPaddingHorizontal));
}

.container .flex-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  width: 100%;
  gap: 80px;
}

.container .header {
  min-height: 140px;
  display: grid;
  grid-template-columns: calc(35% + 50px) calc(65% - 50px);
  opacity: 0;
  margin-top: var(--headerMarginTop);
  margin-top: clamp(86px, 20vh, var(--headerMarginTop));
}

/* Quote Image */
.quotesImage {
  width: var(--quoteImageSize);
  height: var(--quoteImageSize);
}

/* Animations */
.sectionTitleAnimation {
  animation: fadeIn var(--sectionTitleAnimationTiming) linear forwards;
}

.textAnimation {
  animation: fadeIn var(--textAnimationTiming) linear forwards;
  animation-delay: var(--sectionTitleAnimationTiming);
}

@keyframes fadeIn {
  from {
    transform: translateY(20px);
    opacity: 0;
  }
  to {
    transform: translateY(0px);
    opacity: 1;
  }
}

@keyframes backgroundColor {
  to {
    --angle: -200deg;
  }
}

@media screen and (max-width: 960px) {
  .container .header {
    min-height: auto;
    display: flex;
    flex-direction: column;
    gap: 20px;
  }

  .container h1 {
    width: 100%;
  }
}

@media screen and (max-width: 450px) {
  :root {
    /* Quote Image Size */
    --quoteImageSize: 20px;
  }
  .container {
    overflow-x: hidden;
  }
  .container .content {
    grid-template-columns: 1fr;
  }
}

@media screen and (max-height: 799px) {
  :root {
    /* Positioning */
    --headerMarginTop: 100px;
  }
  .container .flex-container {
    gap: 20px;
  }
}

@media screen and (max-height: 667px) {
  :root {
    /* Positioning */
    --headerMarginTop: 80px;
  }
  .container .header {
    gap: 10px;
  }
  .container {
    padding-bottom: 40px;
  }
  .container .flex-container {
    gap: 10px;
  }
}
