/*
  Josh's Custom CSS Reset
  https://www.joshwcomeau.com/css/custom-css-reset/
*/
*,
*::before,
*::after {
  box-sizing: border-box;
}

*:not(dialog) {
  margin: 0;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    interpolate-size: allow-keywords;
  }
}

body {
  line-height: 1.31; /* recommended for sofia sans */
  -webkit-font-smoothing: antialiased;
}

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

input,
button,
textarea,
select {
  font: inherit;
}

button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
  cursor: pointer;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

p {
  text-wrap: pretty;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  /* text-wrap: balance; */
  line-height: 1.2;
}

/*
  Generic Styles
*/
:root {
  --color-white: #fff;
  --color-black: #000;
  --color-light-1: #f1ebe5;
  --color-light-2: #fbf6f2;
  --color-dark: #131211;
  --color-babyblue: #94cff1;
  --color-orange: #ff8600;
  --color-green: #49e047;
  --color-red: #ff613d;
  --color-yellow: #ffd000;
  --color-yellow-dark: #ffae00;
  --color-violet: #ce9bff;
  --gradient-1: linear-gradient(
    90deg,
    var(--color-yellow-dark) 25%,
    var(--color-orange) 50%,
    var(--color-red) 75%
  );
  --gradient-2: linear-gradient(
    90deg,
    var(--color-babyblue) 25%,
    var(--color-violet) 50%,
    var(--color-orange) 75%
  );

  --font-family: "wf-sofia-sans", sans-serif;
  --font-family-alt: "wf-mango-grotesque", sans-serif;

  /* default status color */
  --status-color-current: var(--color-white);
  /* status colors */
  --status-color-empty: var(--color-light-1);
  --status-color-blue: var(--color-babyblue);
  --status-color-green: var(--color-green);
  --status-color-yellow: var(--color-yellow);
  --status-color-red: var(--color-red);
  --status-color-violet: var(--color-violet);

  --gutter: 1.75rem;

  @media (max-width: 576px) {
    --gutter: 1rem;
  }
}

body {
  background: var(--color-black);
  font-family: var(--font-family);
  color: var(--color-white);
}

.page-content {
  display: flex;
  flex-direction: column;
  min-height: 100dvh;

  > * {
    width: 100%;
  }

  > .main-content {
    flex: 1;
  }
}

.container {
  max-width: 75rem;
  margin: 0 auto;
  padding-inline: var(--gutter);

  > .no-gutter {
    margin-inline: calc(var(--gutter) * -1);
  }
}

a {
  color: inherit;
  text-decoration: underline;

  &:hover {
    text-decoration: none;
  }
}

.page-header {
  background: var(--color-dark);
  padding-block: 0.75rem;

  .logo {
    @media (max-width: 575.98px) {
      text-align: center;
    }

    .logo-link {
      display: inline-block;
      height: 4rem;

      img {
        width: auto;
        height: 100%;
      }
    }
  }
}

.page-footer {
  background: var(--color-dark);
  padding-block: 2.5rem;
  margin-top: 10rem;

  @media (max-width: 575.98px) {
    margin-top: 3rem;
  }

  .footer-row {
    display: flex;
    gap: var(--gutter);
    justify-content: space-around;

    @media (max-width: 575.98px) {
      flex-direction: column;
      gap: 2rem;
      align-items: center;
    }

    .footer-col {
      flex: 1;
      max-width: 16rem;

      @media (max-width: 575.98px) {
        width: 100%;
        text-align: center;
      }

      em {
        font-weight: 500;
        font-style: normal;
        color: var(--color-babyblue);
      }

      .lead {
        font-size: 1.125rem;
        font-weight: 700;
      }

      .relaxed {
        margin-top: 0.5rem;
      }

      .footer-button {
        display: block;
        padding-block: 0.5625rem;
        padding-inline: 1rem;
        background: var(--color-babyblue);
        border: 1px solid var(--color-black);
        border-radius: 3rem;
        font-weight: 700;
        line-height: 1;
        text-decoration: none;
        color: var(--color-black);
        text-align: center;
        overflow: hidden;
        text-overflow: ellipsis;

        &:focus-visible {
          outline: 2px solid var(--color-orange);
          outline-offset: 2px;
          border-radius: 3.75rem;
        }
      }

      .support-box {
        .text {
          text-align: center;
        }

        .buttons {
          margin-top: 1.25rem;
          display: grid;
          gap: 0.5rem;
          grid-template-columns: repeat(2, 1fr);
        }
      }

      .newsletter-form {
        margin-top: 0.625rem;

        .form-group {
          margin-bottom: 0.625rem;

          label {
            display: flex;
            flex-direction: column;
            gap: 0.125rem;
            margin-bottom: 0;
            font-size: 0.875rem;

            input[type="email"] {
              outline: none;
              width: 100%;
              height: 2rem;
              background-color: var(--color-white);
              border: 1px solid var(--color-black);
              font-size: 1rem;
              line-height: 2rem;
              color: var(--color-black);
              padding: 0 0.5rem;

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

          .submit-button {
            min-width: 13ch;

            @media (max-width: 575.98px) {
              margin-inline: auto;
            }
          }
        }
      }
    }
  }
}

.hero-text {
  max-width: 90ch;
  margin-inline: auto;
  padding-top: 8rem;
  padding-bottom: 3rem;

  @media (max-width: 575.98px) {
    padding-top: 4rem;
    padding-bottom: 1.5rem;
  }

  .text {
    font-family: var(--font-family-alt);
    font-size: 10rem;
    font-weight: 600;
    line-height: 0.75;
    letter-spacing: 1%;
    text-align: center;

    @media (max-width: 575.98px) {
      font-size: 6rem;
    }

    b {
      background-image: var(--gradient-1);
      -webkit-background-clip: text;
      background-clip: text;
      -webkit-text-fill-color: transparent;

      &:last-of-type {
        background-image: var(--gradient-2);
      }
    }
  }

  small {
    margin-top: -0.75rem;
    margin-inline: 6.25rem;
    display: block;
    font-size: 1rem;
    font-style: italic;
    text-align: right;

    @media (max-width: 575.98px) {
      margin-top: -0.25rem;
      margin-inline: 0;
      text-align: center;
    }
  }
}

.lead-text {
  max-width: 43ch;
  margin-inline: auto;
  padding-bottom: 3.5rem;
  font-size: 1.625rem;
  font-weight: 700;
  text-align: center;

  p:not(:last-child) {
    margin-bottom: 0.75em;
  }

  @media (max-width: 575.98px) {
    padding-bottom: 2rem;
    font-size: 1.375rem;
  }
}

.info-push-container {
  max-width: 56rem;
  margin-inline: auto;
  padding-block: 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;

  .info-push {
    display: flex;
    align-items: center;
    color: inherit;
    text-decoration: none;

    .text,
    .arrow {
      background: var(--color-white);
      color: var(--color-black);
      border: 2px solid var(--color-black);
      border-radius: 2rem;

      @media (max-width: 575.98px) {
        border-radius: 1.5rem;
      }
    }

    .text {
      display: block;
      padding-block: 1rem;
      padding-inline: 1.5rem 2rem;
      font-size: 1.5rem;
      line-height: 1;
      font-weight: 600;

      @media (max-width: 575.98px) {
        padding-block: 0.75rem;
        padding-inline: 1.25rem 1.5rem;
        font-size: 1.25rem;
      }
    }

    .arrow {
      display: grid;
      place-items: center;
      padding: 0.625rem;
      margin-left: -1rem;
      height: 3.75rem;
      aspect-ratio: 1;
      background: var(--color-babyblue);

      @media (max-width: 575.98px) {
        padding: 0.5rem;
        margin-left: -0.75rem;
        height: 3rem;
      }
    }

    &:focus-visible {
      outline: 2px solid var(--color-orange);
      outline-offset: 2px;
      border-radius: 3.75rem;
    }
  }
}

.arrow-link {
  display: flex;
  align-items: center;
  color: inherit;
  text-decoration: none;
  --_arrow-link-size: var(--arrow-link-size, 2.5rem);
  --_arrow-link-font-size: var(--arrow-link-font-size, 1rem);
  --_arrow-link-padding-block: var(
    --arrow-link-padding-block,
    calc(var(--_arrow-link-size) * 0.3) calc(var(--_arrow-link-size) * 0.25)
  );
  --_arrow-link-padding-inline: var(
    --arrow-link-padding-inline,
    calc(var(--_arrow-link-size) * 0.4) calc(var(--_arrow-link-size) * 0.5)
  );

  .text,
  .arrow {
    background: var(--color-white);
    color: var(--color-black);
    border: 1px solid var(--color-black);
    border-radius: 1.5rem;
  }

  .text {
    display: block;
    padding-block: var(--_arrow-link-padding-block);
    padding-inline: var(--_arrow-link-padding-inline);
    font-size: var(--_arrow-link-font-size);
    line-height: 1;
    font-weight: 600;
  }

  .arrow {
    display: grid;
    place-items: center;
    padding: calc(var(--_arrow-link-size) * 0.2);
    margin-left: -0.675rem;
    height: var(--_arrow-link-size);
    aspect-ratio: 1;
    background: var(--color-babyblue);
  }

  &:focus-visible {
    outline: 2px solid var(--color-orange);
    outline-offset: 2px;
    border-radius: var(--_arrow-link-size);
  }
}

.campaigns-container {
  max-width: 56rem;
  margin-inline: auto;
  padding-top: 1.5rem;

  .campaign {
    background: var(--color-light-1);
    border: 1px solid var(--color-black);
    color: var(--color-black);

    &:not(:last-child) {
      margin-bottom: 4.5rem;
    }

    .info {
      display: flex;
      padding-block: 2.5rem 2rem;

      @media (max-width: 575.98px) {
        flex-direction: column-reverse;
        gap: 1rem;
        padding-top: 0;
      }

      .text-col {
        flex: 1;
        padding-inline: 2rem 1.25rem;

        @media (max-width: 575.98px) {
          padding-inline: 1rem;
        }

        .title {
          font-family: var(--font-family-alt);
          font-size: 5rem;
          line-height: 0.875;
          font-weight: 600;

          @media (max-width: 575.98px) {
            font-size: 3.5rem;
          }
        }

        .description {
          margin-top: 0.5rem;
          font-size: 1.3125rem;

          @media (max-width: 575.98px) {
            margin-top: 1rem;
          }
        }

        .links {
          display: flex;
          gap: 1.25rem;
          margin-top: 1.25rem;

          @media (max-width: 575.98px) {
            flex-direction: column;
            gap: 0.75rem;
          }
        }
      }

      .image-col {
        flex-shrink: 0;
        width: 8rem;

        @media (max-width: 575.98px) {
          align-self: center;
        }

        .image {
          display: grid;
          place-items: center;
          width: 100%;
          height: auto;
          aspect-ratio: 1;
          translate: 0.75rem 0;
          background: var(--color-white);
          border: 1px solid var(--color-black);

          @media (max-width: 575.98px) {
            translate: 0 -0.75rem;
          }

          img {
            width: 100%;
            height: auto;
            aspect-ratio: 1;
            object-fit: contain;
          }
        }
      }
    }

    .timelines {
      .timeline {
        .title-row {
          display: flex;
          align-items: center;
          gap: 0.5rem;
          padding-inline: 2.25rem;
          padding-block: 0.3125rem;
          background: var(--color-orange);
          border: 1px solid var(--color-black);
          border-width: 1px 0 1px 0;

          @media (max-width: 575.98px) {
            padding-inline: 1rem;
          }

          .icon {
            img {
              width: auto;
              height: 1.25rem;
            }
          }

          .title {
            font-size: 0.875rem;
            font-weight: 700;
          }
        }

        .statuses {
          position: relative;
          anchor-scope: --status-icon-first, --status-icon-last;

          .status {
            display: grid;
            grid-template-columns: 1.75rem auto 1.75rem;
            gap: 0 0.75rem;
            padding-inline: 2.25rem;
            padding-block: 1rem;
            background: var(--color-light-2);

            @media (max-width: 575.98px) {
              padding-inline: 1rem;
            }

            &:not(:last-child) {
              border-bottom: 1px solid var(--color-black);
            }

            &.expanded {
              background: var(--color-white);

              .expand-col {
                .expand-button {
                  transform: rotate(180deg);
                }
              }
            }

            &:first-child {
              .icon-col {
                .status-icon {
                  anchor-name: --status-icon-first;
                }
              }
            }

            &:last-child {
              .icon-col {
                .status-icon {
                  anchor-name: --status-icon-last;
                }
              }

              &::after {
                content: "";
                position: absolute;
                z-index: 0;
                display: block;
                width: 1rem;
                background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 5 40"><path stroke="%23000" d="M2.5 45q-4-2.5 0-5t0-5 0-5 0-5 0-5 0-5 0-5 0-5 0-5 0-5"/></svg>');
                background-repeat: repeat-y;
                background-position: center;
                background-size: 0.3125rem auto;
                top: anchor(center --status-icon-first);
                bottom: anchor(center --status-icon-last);
                left: anchor(center --status-icon-first);
                transform: translate(-50%, 0);
                scale: 1.0001;
              }
            }

            &.status--empty {
              --status-color-current: var(--status-color-empty);
            }
            &.status--blue {
              --status-color-current: var(--status-color-blue);
            }
            &.status--green {
              --status-color-current: var(--status-color-green);
            }
            &.status--yellow {
              --status-color-current: var(--status-color-yellow);
            }
            &.status--red {
              --status-color-current: var(--status-color-red);
            }
            &.status--violet {
              --status-color-current: var(--status-color-violet);
            }

            .icon-col {
              grid-column: 1;
              grid-row: 1 / span 2;

              .status-icon {
                position: relative;
                z-index: 1;
                display: grid;
                place-items: center;
                width: 1.75rem;
                height: 1.75rem;
                scale: 1.0001;
              }
            }

            .title-col {
              grid-column: 2;

              .title {
                font-family: var(--font-family-alt);
                font-size: 1.75rem;
                font-weight: 600;
                line-height: 0.875;
                letter-spacing: 1%;
              }

              .status-text {
                display: inline-block;
                padding-inline: 0.125rem;
                padding-block: 0.0625rem;
                font-size: 0.875rem;
                font-weight: 500;
                line-height: 0.75;
                background-color: var(--status-color-current);
              }
            }

            .expand-col {
              grid-column: 3;
              grid-row: 1 / span 2;

              .expand-button {
                display: grid;
                margin-top: -0.25rem;
                padding: 0;
                place-items: center;
                width: 1.75rem;
                height: 1.75rem;
                background: transparent;
                border: none;
                scale: 1.0001;

                &:focus-visible {
                  outline: 2px solid var(--color-orange);
                  outline-offset: 2px;
                  border-radius: 1.75rem;
                }
              }
            }

            .description-col {
              grid-column: 2;

              &[aria-hidden="true"] {
                display: none;
              }

              .description {
                margin-top: 0.5rem;
              }

              .links {
                display: flex;
                gap: 1rem;
                margin-top: 1rem;
                --arrow-link-size: 1.875rem;
                --arrow-link-font-size: 0.875rem;
                --arrow-link-padding-block: 0.5rem 0.375rem;

                @media (max-width: 575.98px) {
                  flex-direction: column;
                  gap: 0.5rem;
                }
              }
            }
          }
        }
      }
    }
  }
}
