.carousel-section {
  padding: 0rem 20vw; }
  @media (max-width: 1024px) {
    .carousel-section {
      padding: 0rem 5vw; } }
  @media (max-width: 768px) {
    .carousel-section {
      padding: 0rem 2vw; } }
.carousel-title {
  margin-bottom: 0rem; }

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

.carousel-wrapper {
  display: grid;
  gap: 1rem;
  margin-top: -2rem; }
  .carousel-wrapper.has-text {
    grid-template-columns: 1.1fr 1fr;
    align-items: start; }
  .carousel-wrapper:not(.has-text) {
    grid-template-columns: 1fr;
    justify-items: center; }
  .carousel-wrapper.has-vertical-layout {
    grid-template-columns: auto 1fr;
    gap: 2rem;
    align-items: start;
    margin-top: 0; }
    .carousel-wrapper.has-vertical-layout .vertical-title {
      writing-mode: vertical-rl;
      transform: rotate(180deg);
      white-space: nowrap;
      padding: 2rem 1rem;
      display: flex;
      align-items: center; }
      .carousel-wrapper.has-vertical-layout .vertical-title h1 {
        margin: 0; }
    .carousel-wrapper.has-vertical-layout .carousel {
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 2rem;
      flex-direction: row; }
    .carousel-wrapper.has-vertical-layout .carousel__slides {
      order: 1; }
    .carousel-wrapper.has-vertical-layout .carousel__thumbs {
      order: 2;
      flex-direction: column;
      max-width: 150px;
      margin: 0 0 0 0;
      height: 100%; }
      .carousel-wrapper.has-vertical-layout .carousel__thumbs ul {
        flex-direction: column;
        width: 100%;
        transform: none !important;
        gap: 0.5rem; }
      .carousel-wrapper.has-vertical-layout .carousel__thumbs li {
        width: 100%; }
        .carousel-wrapper.has-vertical-layout .carousel__thumbs li label img {
          width: 100%;
          aspect-ratio: 4 / 3; }
  .carousel-wrapper .carousel {
    width: 100%;
    max-width: 90vw;
    justify-self: center; }
  .carousel-wrapper .carousel-text {
    width: 100%;
    padding: 4rem 1rem 1rem 1rem;
    text-align: justify; }
  @media (max-width: 1024px) {
    .carousel-wrapper.has-text {
      grid-template-columns: 1fr;
      gap: 2rem; } }
.carousel {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0;
  text-align: center; }
  .carousel input[type="radio"] {
    display: none; }
  @media (min-width: 1024px) {
    .carousel.vertical-thumbs {
      display: grid;
      grid-template-columns: 1fr 180px;
      gap: 1.5rem;
      align-items: center; }
      .carousel.vertical-thumbs .carousel__slides {
        order: 1; }
      .carousel.vertical-thumbs .carousel__thumbs {
        order: 2;
        max-width: none;
        width: 100%;
        height: auto;
        margin: 0;
        padding-top: 20rem;
        overflow-y: auto;
        max-height: 500px; }
        .carousel.vertical-thumbs .carousel__thumbs ul {
          flex-direction: column;
          width: 100%;
          height: auto;
          transform: none !important;
          gap: 0.75rem; }
        .carousel.vertical-thumbs .carousel__thumbs li {
          width: 100%;
          flex: 0 0 auto; }
          .carousel.vertical-thumbs .carousel__thumbs li label img {
            width: 100%;
            margin: 0;
            aspect-ratio: 4 / 3; } }
  @media (max-width: 1023px) {
    .carousel.vertical-thumbs {
      display: flex;
      flex-direction: column; }
      .carousel.vertical-thumbs .carousel__thumbs {
        max-width: 100%;
        margin: -2rem auto 0 auto; }
        .carousel.vertical-thumbs .carousel__thumbs ul {
          flex-direction: row;
          gap: 0.3rem; }
        .carousel.vertical-thumbs .carousel__thumbs li {
          flex: 0 0 calc(25% - 0.3rem); } }
  .carousel .carousel__slides {
    position: relative;
    overflow: hidden;
    display: flex;
    width: 100%;
    height: auto; }
  .carousel .carousel__slide {
    flex: 0 0 100%;
    opacity: 0;
    transform: scale(0.96);
    transition: opacity 0.4s ease, transform 0.4s ease;
    position: absolute;
    inset: 0; }
    .carousel .carousel__slide img {
      width: 80%;
      aspect-ratio: calc(var(--size));
      border-radius: 12px;
      margin: 0 auto;
      display: block; }
    .carousel .carousel__slide figcaption {
      margin-top: 0.5rem;
      font-size: 1rem;
      color: #333;
      padding: 0 1rem; }
  .carousel .carousel__thumbs {
    position: relative;
    width: 100%;
    max-width: 700px;
    margin: -2rem auto 0 auto;
    overflow: hidden;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 10; }
    .carousel .carousel__thumbs ul {
      display: flex;
      gap: 0.5rem;
      padding: 0;
      margin: 0;
      list-style: none;
      transition: transform 0.6s ease;
      width: calc(var(--slides-count) * 25% + 1rem); }
    .carousel .carousel__thumbs li {
      flex: 0 0 calc(25% - 0.5rem);
      scroll-snap-align: center; }
      .carousel .carousel__thumbs li label {
        display: block;
        border-radius: 10px;
        overflow: hidden;
        cursor: pointer;
        opacity: 0.6;
        transition: all 0.3s ease; }
        .carousel .carousel__thumbs li label img {
          width: 100%;
          max-width: 100%;
          aspect-ratio: 16 / 9;
          object-fit: cover;
          border-radius: 8px;
          margin: 0 auto;
          display: block; }
        .carousel .carousel__thumbs li label:hover {
          opacity: 0.9;
          transform: scale(1.05); }
  @media (max-width: 768px) {
    .carousel .carousel__thumbs {
      max-width: 100%; }
      .carousel .carousel__thumbs ul {
        gap: 0.3rem; }
      .carousel .carousel__thumbs li {
        flex: 0 0 calc(25% - 0.3rem); } }
  @media (max-width: 480px) {
    .carousel .carousel__thumbs ul {
      gap: 0.25rem; }
    .carousel .carousel__thumbs li {
      flex: 0 0 calc(25% - 0.25rem); } }
.carousel__slide-inner {
  width: 100%;
  aspect-ratio: calc(var(--size));
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden; }

.carousel__slide-inner img {
  max-width: 80%;
  max-height: 80%;
  object-fit: contain; }

.tight-spacing {
  margin-top: 0rem !important;
  margin-bottom: -3rem !important;
  padding-top: 1rem !important;
  padding-bottom: 3rem !important; }
