/* carousel */
.carousel__track {
  --scroll-snap-align: start;

  display: flex;
  flex-direction: row;
  overflow: scroll;
  scroll-snap-type: inline mandatory;

  >li {
    flex: 0 0 100%;
    scroll-snap-align: var(--scroll-snap-align);
    scroll-snap-stop: always;
  }
}

.carousel__navigation {
  display: flex;
  flex-direction: row;
  gap: var(--sp-8);
}

.testimonial-carousel {
  display: block;
  container: carousel / inline-size;
  
  carousel-container {
    display: grid;
    grid-template-columns: 1fr 2fr;
    grid-template-rows: auto 1fr;
    grid-template-areas:
      "img pagination"
      "img track";
    column-gap: var(--sp-40-20);
    width: fit-content;
    /* width: 100%; */
    margin-inline: auto;
    background-color: var(--main-tint-30);
    max-width: 100%;

    .testimonial-images {
      grid-area: img;
      display: grid;
      grid-template-columns: 1fr;
      grid-template-areas: "image";
      max-width: var(--sp-440);
      width: 100%;

      li {
        grid-area: image;
        visibility: hidden;
        opacity: 0;
        overflow: clip;
        transition:
          visibility var(--anime-time) var(--anime-func) allow-discrete,
          opacity var(--anime-time) var(--anime-func);
        
        img {
          height: 100%;
          object-fit: cover;
          transform: scale(1);
          transition: opacity 0.4s ease-in-out, transform 0.6s linear;
        }

        &.carousel__current-slide {
          visibility: visible;
          opacity: 1;

          img {
            opacity: 1;
            transform: scale(1.01);
          }
        }
      }
    }

    .carousel__track {
      --scroll-snap-align: start;

      grid-area: track;

      >li {
        padding-block: var(--sp-40-20);
        padding-inline-end: var(--sp-40-20);

        display: flex;
        flex-direction: column;
        justify-content: space-between;

        p+p {
          margin-block-start: var(--sp-4);
        }

        student-info {
          margin-block-start: var(--sp-20);
        }
      }
    }

    .carousel__navigation {
      display: none;
    }

    .carousel__pagination {
      grid-area: pagination;
      display: flex;
      flex-direction: row;
      height: fit-content;
      gap: var(--sp-12);
      padding-block-start: var(--sp-40-20);
      padding-inline-end: var(--sp-40-20);
      max-width: 80%;
      width: fit-content;

      li {
        display: grid;
        transition: 
          flex var(--anime-time) var(--anime-func),
          width var(--anime-time) var(--anime-func);
        
        button {
          position: relative;

          &::after {
            content: "";
            display: block;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: calc(var(--sp-24));
            height: calc(var(--sp-24));
          }
        }
      }

      /* li:has(~ li .carousel__current-slide) button {
        background-image: url('/assets/icons/testimonial-slider-left-icon.svg');
        background-repeat: no-repeat;
        background-position: center;
      }

      li:has(.carousel__current-slide) ~ li button {
        background-image: url('/assets/icons/testimonial-slider-right-icon.svg');
        background-repeat: no-repeat;
        background-position: center;
      }

      li:has(+li .carousel__current-slide) button {
        background-image: url('/assets/icons/testimonial-slider-prev-icon.svg');
        background-repeat: no-repeat;
        background-position: center;
      }

      li:has(.carousel__current-slide) {
        flex: 1;
        width: var(--sp-264);

        &+li button {
          background-image: url('/assets/icons/testimonial-slider-next-icon.svg');
          background-repeat: no-repeat;
          background-position: center;
        }
      } */

      button {
        min-width: var(--sp-44-32);
        width: 100%;
        height: var(--sp-44-32);
        border: none;
        background-color: var(--main-tint-8);
        border-radius: var(--sp-4);
        transition:
          width var(--anime-time) var(--anime-func),
          background-color var(--anime-time) var(--anime-func);

        &.carousel__current-slide {
          background-color: var(--main);
        }
      }
    }

    .carousel__pagination li:has(~ li .carousel__current-slide) button {
      background-image: url('/assets/icons/testimonial-slider-left-icon.svg');
      background-repeat: no-repeat;
      background-position: center;
    }

    .carousel__pagination li:has(.carousel__current-slide) ~ li button {
      background-image: url('/assets/icons/testimonial-slider-right-icon.svg');
      background-repeat: no-repeat;
      background-position: center;
    }

    .carousel__pagination li:has(+li .carousel__current-slide) button {
      background-image: url('/assets/icons/testimonial-slider-prev-icon.svg');
      background-repeat: no-repeat;
      background-position: center;
    }

    .carousel__pagination li:has(.carousel__current-slide) {
      flex: 1;
      width: var(--sp-264);

      &+li button {
        background-image: url('/assets/icons/testimonial-slider-next-icon.svg');
        background-repeat: no-repeat;
        background-position: center;
      }
    }
  }

  @container (inline-size < 31.25rem) {
    carousel-container {
      grid-template-columns: 1fr;
      grid-template-rows: auto auto auto;
      grid-template-areas:
        "img"
        "pagination"
        "track";
      row-gap: var(--sp-40-20);
    }

    carousel-container .testimonial-images {
      max-width: 100%;
    }

    carousel-container .carousel__track {
      li {
        padding-inline-start: var(--sp-40-20);
      }
    }

    carousel-container .carousel__pagination {
      padding-block-start: 0;
      padding-inline-start: var(--sp-40-20);
      width: 100%;
    }

    carousel-container .carousel__pagination li:has(.carousel__current-slide) {
      width: auto;
    }
  }
}

.review-carousel {
  display: block;
  container: carousel / inline-size;
  border-block-start: var(--border);

  carousel-container {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: var(--sp-20);
    align-items: center;

    .carousel__pagination {
      display: none;
    }

    .carousel__track {
      grid-column: span 9;
      padding-block: var(--sp-40);

      >li {
        display: grid;
        grid-template-columns: 1fr 2fr;
        gap: var(--sp-20);

        reviewer-info {
          display: block;
          place-content: center;
        }
        p {
          place-content: center;
        }
      }
    }

    .carousel__navigation {
      grid-column: span 3;
      margin-inline-start: auto;
    }

    @container (inline-size < 43.75rem) {
      .carousel__track {
        grid-column: span 12;
        padding-block-end: var(--sp-20);

        >li {
          grid-template-columns: 1fr;
        }
      }

      .carousel__navigation {
        grid-column: span 12;
      }
    }
  }
}

.partner-carousel {
  container: carousel / inline-size;

  carousel-container {
    display: flex;
    flex-direction: column-reverse;
    gap: var(--sp-20);

    .carousel__pagination {
      display: none;
    }

    .carousel__track {
      gap: var(--sp-20);

      >li {
        max-width: var(--sp-330);
        position: relative;

        a {
          display: block;
          border: var(--border);
          border-radius: var(--sp-8);
          width: 100%;
          aspect-ratio: 1 / 1;
          place-content: center;

          --logo-height: attr(data-height px);

          img, svg {
            height: var(--logo-height);
            width: auto;
            max-width: 80%;
            object-fit: contain;
            margin-inline: auto;
          }

          &::after {
            content: "";
            display: block;
            width: var(--sp-32);
            height: var(--sp-32);
            position: absolute;
            top: var(--sp-12);
            right: var(--sp-12);
          }

          &[data-type="external"]::after {
            background: url('/assets/icons/external-icon.svg') no-repeat center;
          }

          &[data-type="entry"]::after {
            background: url('/assets/icons/arrow-icon.svg') no-repeat center;
          }
        }

        partner-info {
          display: block;
          margin-block-start: var(--sp-12);
        }

        p+p {
          margin-block-start: var(--sp-4);
        }
      }
    }

    .carousel__navigation {
      margin-inline-start: auto;
      margin-inline-end: var(--sp-20);
    }
  }
}

.logo-stripe-carousel {
  display: block;
  container: carousel / inline-size;

  carousel-container {
    display: block;
    position: relative;
    border: var(--border);
    border-radius: var(--sp-8);
    padding-block: var(--sp-20);

    .carousel__track {
      gap: var(--sp-120-40);
      justify-content: space-between;
      max-width: calc(100% - (var(--sp-48) + var(--sp-120))* 2);
      margin-inline: auto;

      >li {
        flex: 0 0 fit-content;
        place-content: center;
      }
    }

    .carousel__navigation {
      li {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);

        &:nth-of-type(1) {
          left: var(--sp-40-20);
        }

        &:nth-of-type(2) {
          right: var(--sp-40-20);
        }
      }
    }

    .carousel__pagination {
      display: none;
    }

    @container (inline-size < 43.75rem) {
      border:none;
      padding-block: 0;

      .carousel__track {
        max-width: 100%;
        gap: var(--sp-16);
        margin-inline: unset;
        overflow: scroll;

        >li {
          flex: 0 0 calc((100% - var(--sp-16)) / 2);
          aspect-ratio: 1 / 1;
          border: var(--border);
          border-radius: var(--sp-8);

          a {
            display: block;
            height: 100%;
            place-content: center;
          }

          svg {
            margin-inline: auto;
            max-width: 90%;
          }
        }
      }

      .carousel__navigation {
        margin-block-start: var(--sp-20);
        justify-content: end;
        
        li {
          position: static;
          transform: none;
        }
      }
    }
  }
}