:root {
  --cream: #f7f5ef;
  --navy: #063f5c;
  --navy-deep: #04344d;
  --green: #77b69e;
  --green-soft: #b7d9ca;
  --teal: #4f9487;
  --blue-soft: #d6e9f2;
  --about-soft: #edf3f4;
  --text: #073b5a;
  --white: #ffffff;
  --border: #d7d7d2;
}

* {
  box-sizing: border-box;
}

html {
  margin: 0;
  padding: 0;
}

body {
  margin: 0;
  min-height: 100vh;
  background: var(--cream);
  color: var(--text);
  font-family: "DM Sans", Arial, sans-serif;
}


/* =========================
   MAIN PAGE
   ========================= */

.page {
  width: min(760px, calc(100% - 32px));
  margin: 0 auto;
  padding: 48px 0 60px;
}


/* =========================
   BRAND / LOGO
   ========================= */

.brand {
  text-align: center;
  margin-bottom: 30px;
}

.m4-logo {
  height: 100px;
  line-height: 100px;
  letter-spacing: -16px;
  white-space: nowrap;
}

.m4-logo .m {
  font-size: 110px;
  font-weight: 700;
  color: var(--navy);
}

.m4-logo .four {
  font-size: 105px;
  font-weight: 700;
  color: var(--green);
  margin-left: -3px;
}

.wordmark {
  font-size: 20px;
  font-weight: 500;
  letter-spacing: .27em;
  padding-left: .27em;
  margin-top: 8px;
}

.rule {
  width: 62px;
  height: 2px;
  background: var(--green);
  margin: 17px auto 0;
}


/* =========================
   HOMEPAGE CARDS
   ========================= */

.link-stack {
  display: grid;
  gap: 12px;
}

.card {
  min-height: 112px;
  border-radius: 14px;

  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 44px;
  align-items: center;

  gap: 16px;
  padding: 20px;

  color: var(--text);
  text-decoration: none;

  border: 1px solid transparent;

  transition:
    transform .15s ease,
    box-shadow .15s ease;
}

a.card:hover {
  transform: translateY(-2px);
  box-shadow: 0 7px 18px rgba(4, 52, 77, .10);
}


/* ICONS */

.icon {
  display: grid;
  place-items: center;
}

.icon svg {
  width: 46px;
  height: 46px;

  fill: none;
  stroke: currentColor;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}


/* CARD TEXT */

.text {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.text small {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .11em;
  margin-bottom: 5px;
}

.text strong {
  font-size: 20px;
  line-height: 1.12;
  font-weight: 700;
}

.subtitle {
  font-size: 14px;
  line-height: 1.25;
  font-weight: 600;
  margin-top: 4px;
}


/* ARROW */

.arrow {
  width: 40px;
  height: 40px;

  border-radius: 50%;

  display: grid;
  place-items: center;

  background: rgba(255,255,255,.82);

  font-size: 27px;
  line-height: 1;
}


/* =========================
   INDIVIDUAL CARD COLORS
   ========================= */

.card-about {
  background: var(--about-soft);
  border-color: #d5e0e2;
}

.card-navy {
  background: var(--navy);
  color: var(--white);
}

.card-navy .arrow {
  color: var(--navy);
}

.card-green {
  background: var(--green-soft);
}

.card-teal {
  background: var(--teal);
  color: var(--white);
}

.card-teal .arrow {
  color: var(--navy);
}

.card-connect {
  background: var(--blue-soft);
  border-color: #c5dce6;
}


/* =========================
   ABOUT PAGE
   ========================= */

.about-page {
  width: min(1000px, calc(100% - 32px));
  margin: 0 auto;
  padding: 32px 0 60px;
}

.back-link {
  display: inline-block;

  color: var(--navy);
  text-decoration: none;

  font-size: 13px;
  font-weight: 700;

  margin-bottom: 10px;
}

.about-brand {
  margin-bottom: 24px;
}


/* ABOUT CARD */

.about-card {
  background: var(--white);

  border: 1px solid var(--border);
  border-radius: 14px;

  display: grid;
  grid-template-columns: 330px minmax(0, 1fr);

  align-items: start;

  gap: 30px;
  padding: 20px;
}


/* ABOUT PHOTO */

.photo-frame {
  width: 100%;
  align-self: start;

  border-radius: 11px;
  overflow: hidden;

  background: #e8eceb;
  position: relative;
}

.photo-frame img {
  width: 100%;
  height: auto;
  display: block;
}

.photo-placeholder {
  min-height: 330px;

  display: none;
  place-items: center;
  align-content: center;

  text-align: center;
  gap: 4px;

  color: var(--navy);
}

.photo-placeholder span {
  font-weight: 700;
}

.photo-placeholder small {
  font-size: 12px;
}


/* ABOUT COPY */

.about-copy {
  padding: 3px 2px 2px;
}

.about-copy h1 {
  font-size: 26px;
  line-height: 1.15;

  margin: 0 0 20px;
  padding-bottom: 14px;

  border-bottom: 2px solid var(--green);
}

.blank-copy {
  min-height: 160px;
}

.about-copy p {
  font-size: 17px;
  line-height: 1.55;

  margin: 0 0 18px;
}

.about-copy p:last-child {
  margin-bottom: 0;
}


/* =========================
   MOBILE
   ========================= */

@media (max-width: 700px) {

  .page {
    width: calc(100% - 24px);
    padding: 32px 0 44px;
  }

  .brand {
    margin-bottom: 25px;
  }

  .m4-logo {
    height: 82px;
    line-height: 82px;
  }

  .m4-logo .m {
    font-size: 91px;
  }

  .m4-logo .four {
    font-size: 87px;
  }

  .wordmark {
    font-size: 17px;
  }


  /* MOBILE CARDS */

  .card {
    min-height: 96px;

    grid-template-columns:
      48px minmax(0, 1fr) 38px;

    padding: 15px 12px;
    gap: 10px;
  }

  .icon svg {
    width: 37px;
    height: 37px;
  }

  .text small {
    font-size: 11px;
  }

  .text strong {
    font-size: 16px;
  }

  .subtitle {
    font-size: 11.5px;
  }

  .arrow {
    width: 34px;
    height: 34px;
    font-size: 23px;
  }


  /* MOBILE ABOUT */

  .about-page {
    width: calc(100% - 24px);
    padding: 22px 0 44px;
  }

  .about-card {
    grid-template-columns: 1fr;

    gap: 20px;
    padding: 15px;
  }

  .photo-frame {
    width: 100%;
  }

  .photo-frame img {
    width: 100%;
    height: auto;
    max-height: 520px;
    object-fit: contain;
  }

  .about-copy h1 {
    font-size: 22px;
  }

  .about-copy p {
    font-size: 16px;
    line-height: 1.6;
    margin-bottom: 18px;
  }
}


/* EXTRA SMALL PHONES */

@media (max-width: 390px) {

  .card {
    grid-template-columns:
      40px minmax(0, 1fr) 36px;
  }

  .icon svg {
    width: 35px;
    height: 35px;
  }

  .text strong {
    font-size: 15px;
  }

  .subtitle {
    font-size: 11px;
  }

  .arrow {
    width: 32px;
    height: 32px;
    font-size: 22px;
  }
}
