/* Shared progressive enhancement for case, news and customer-review carousels. */
.content-carousel { --carousel-columns: 1; --carousel-gap: 0px; min-width: 0; }
.news-carousel, .projects-carousel { --carousel-columns: 3; --carousel-gap: 24px; }
.carousel-viewport { min-width: 0; }
.content-carousel[data-carousel-ready] .carousel-viewport { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; }
.content-carousel[data-carousel-ready] .carousel-viewport::-webkit-scrollbar { display: none; }
.content-carousel[data-carousel-ready] .carousel-track { display: flex; gap: var(--carousel-gap); align-items: stretch; margin: 0; }
.content-carousel[data-carousel-ready] .carousel-track > * { flex: 0 0 calc((100% - (var(--carousel-columns) - 1) * var(--carousel-gap)) / var(--carousel-columns)); min-width: 0; scroll-snap-align: start; }
.carousel-navigation { display: flex; align-items: center; justify-content: center; gap: 18px; margin-top: 24px; }
.carousel-navigation > .icon-button { border: 1px solid var(--color-line); background: var(--color-paper); color: var(--color-ink); }
.carousel-navigation > .icon-button:hover:not(:disabled) { border-color: var(--color-accent); color: var(--color-accent); background: var(--color-accent-soft); }
.carousel-navigation > .icon-button:disabled { opacity: .38; cursor: default; }
.carousel-dots { display: flex; justify-content: center; gap: 0; flex-wrap: wrap; }
.carousel-dot { display: inline-flex; align-items: center; justify-content: center; width: 44px; min-height: 44px; border: 0; padding: 0; background: none; }
.carousel-dot::before { content: ''; display: block; width: 7px; height: 7px; border-radius: 50%; background: #8797ae; transition: background var(--motion-fast), transform var(--motion-fast); }
.carousel-dot[aria-pressed="true"]::before { background: var(--color-action); transform: scale(1.4); }
.carousel-dot:hover::before { background: var(--color-action); }
.reviews-carousel { position: relative; margin-top: 30px; padding-inline: 74px; }
.review-stack { position: relative; isolation: isolate; }
.reviews-carousel[data-carousel-ready] .review-stack::before, .reviews-carousel[data-carousel-ready] .review-stack::after { content: ''; position: absolute; z-index: -1; inset: 12px 10px; border: 1px solid var(--color-line); border-radius: 16px; background: #e1e8f2; transform: rotate(-2.3deg); }
.reviews-carousel[data-carousel-ready] .review-stack::after { background: #ecf0f7; transform: rotate(2.3deg); }
.reviews-carousel[data-carousel-ready] .carousel-viewport { border-radius: 16px; }
.reviews-carousel .carousel-previous, .reviews-carousel .carousel-next { position: absolute; top: calc(50% - 44px); }
.reviews-carousel .carousel-previous { left: 0; }
.reviews-carousel .carousel-next { right: 0; }
@media (max-width: 1023px) { .news-carousel, .projects-carousel { --carousel-columns: 2; } .reviews-carousel { padding-inline: 58px; } }
@media (max-width: 767px) {
  .news-carousel, .projects-carousel { --carousel-columns: 1; --carousel-gap: 20px; }
  .reviews-carousel { padding-inline: 8px; }
  .reviews-carousel .carousel-previous, .reviews-carousel .carousel-next { position: static; }
  .carousel-navigation { gap: 8px; margin-top: 18px; }
  .news-carousel .carousel-navigation, .projects-carousel .carousel-navigation { flex-wrap: wrap; }
  .news-carousel .carousel-dots, .projects-carousel .carousel-dots { order: 1; flex-basis: 100%; display: grid; grid-template-columns: repeat(4, 44px); }
}
