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

:root {
  /* COLORS */
  --cyan: #66e2dc;
  --orange: #fa7453;
  --yellow: #ffb964;
  --white: #fcfaf9;
  --slate: #191826;
}

body {
  font-family: "IBM Plex Sans", sans-serif;
  font-weight: 700;
  color: var(--slate);
}

a {
  font-family: inherit;
  color: inherit;
}

p {
  font-size: clamp(1rem, 0.8742rem + 0.5369vw, 1.25rem);
  font-weight: 400;
  max-width: 60ch;
  line-height: 150%;
}

footer p {
  font-size: 1rem; /* 16px */
}

img {
  max-width: 100%;
}

h1 {
  font-size: clamp(2.5rem, 0.9899rem + 6.443vw, 5.5rem);
  line-height: 100%;
}

h2 {
  font-size: 2.5rem; /* 40px */
}

.container {
  width: 90%;
  margin: 0 auto;
  max-width: 1120px;
}

.row {
  display: flex;
}

.column {
  display: flex;
  flex-direction: column;
}

/* Header */
header {
  background-image: url("src/assets/images/bg-main-mobile.png");
  background-position: left 90%;
  background-repeat: no-repeat;
  background-size: auto;
}

.hero {
  padding: 4rem 0;
}

.hero-wrapper.column {
  gap: clamp(4rem, 1.9866rem + 8.5906vw, 8rem);
}

.hero__content.column {
  gap: 2.5rem;
}

@media only screen and (min-width: 48rem) {
  header {
    background-image: url("src/assets/svgs/bg-pattern-1.svg"),
      url("src/assets/images/bg-main-tablet.png");
    background-size: 30%, auto;
    background-position: top -7% right -7%, center right 25%;
  }
}

@media only screen and (min-width: 48rem) and (max-width: 63.5rem) {
  h1 {
    max-width: 15ch;
  }

  p {
    max-width: 46ch;
  }
}

@media only screen and (min-width: 64rem) {
  header {
    background-image: url("src/assets/svgs/bg-pattern-1.svg"),
      url("src/assets/images/bg-main-desktop.png");
    background-size: auto, auto;
    background-position: top -20% right, top 25% right 50%;
    background-repeat: no-repeat;
  }
}

/* Main */
.main__background {
  background-image: url("src/assets/svgs/bg-pattern-2.svg");
  background-color: var(--slate);
  background-repeat: no-repeat;
  background-size: auto;
  background-position: top center;
}

.phone-img {
  display: block;
  max-width: 55%;
  margin: 0 auto;
}

.card {
  background: var(--orange);
  padding: clamp(3rem, 2.7483rem + 1.0738vw, 3.5rem)
    clamp(1.25rem, 0.1174rem + 4.8322vw, 3.5rem);
  min-height: 39rem;
}

.card.column {
  gap: 3rem;
}

.card__content.column {
  gap: 2.5rem;
}

.card__text.column {
  gap: 1.5rem;
}

.price {
  align-items: center;
  gap: 1rem;
}

.amount {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1.1em;
}

.buttons.column {
  gap: 1rem;
}

.btn--solid {
  text-decoration: none;
  padding: 1rem 2rem;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  background: var(--slate);
  color: var(--white);
  border-radius: 0.75rem;

  p {
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 180%;
  }

  &:hover {
    color: var(--slate);
    background: var(--cyan);

    svg > path {
      fill: var(--slate);
    }
  }
}

.btn--solid--inverted {
  background: var(--white);
  color: var(--slate);

  &:hover {
    background: var(--yellow);
  }
}

@media only screen and (max-width: 48rem) {
  .main__content > .container {
    width: 100%;
  }
}

@media only screen and (min-width: 48rem) {
  .hero {
    padding-bottom: 16.5rem;
  }

  .main__content {
    padding: 0 0 12.5rem;
  }

  .main__content .container {
    position: relative;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
    padding-right: 4rem;
  }

  .main__background {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    z-index: -1;
    border-radius: 0.75rem;
  }

  .image-wrapper {
    margin-top: -6.875rem;
  }

  .phone-img {
    max-width: 61%;
  }

  .card-wrapper {
    margin-top: 5.25rem;
    margin-bottom: -7.5rem;
  }

  .card {
    border-radius: 1rem;
  }
}

/* Footer */
.footer {
  padding: 4rem 0 5rem;
}

.footer__content {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.footer__email {
  text-decoration: none;
}

.socials {
  list-style: none;
  gap: 2rem;
  padding: 0;

  & > li:hover svg > path {
    fill: var(--orange);
  }
}

@media only screen and (min-width: 48rem) {
  .footer__content {
    flex-direction: row;
    justify-content: space-between;
    flex-wrap: wrap;
  }

  .logo {
    flex-grow: 1;
    width: 100%;
  }

  .socials {
    align-self: center;
  }
}

@media only screen and (min-width: 64rem) {
  .footer__content {
    flex-wrap: nowrap;
  }

  .logo {
    flex-grow: 0;
    width: auto;
  }
}
