/*
 * Batch 2 layout styles: background_image, gallery_carousel, images,
 * logos_layout, slider, background_video, promo_boxes, pricing_tables,
 * call_to_actions.
 *
 * Structural grid/tabs/accordion/carousel primitives live in
 * template-parts/flexible/flexible-base.css - this file only adds the
 * visual styling specific to each layout, scoped under its own
 * .flex-{name} root class.
 */

/* ==========================================================================
   background_image - "Background Image + Text"
   ========================================================================== */
.flex-background_image {
  position: relative;
  min-height: 420px;
  display: flex;
  align-items: center;
  overflow: hidden;
  border-radius: 16px;
}

.flex-background_image.is-full-height {
  min-height: 100vh;
}

.flex-background_image__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}

.flex-background_image__overlay {
  position: absolute;
  inset: 0;
  background: rgba(14, 10, 66, 0.55);
  z-index: 1;
}

.flex-background_image__content {
  position: relative;
  z-index: 2;
  padding: 56px;
  color: #fff;
  max-width: 720px;
}

.flex-background_image.is-centered .flex-background_image__content {
  margin: 0 auto;
  text-align: center;
  max-width: 780px;
}

.flex-background_image__content h1,
.flex-background_image__content h2,
.flex-background_image__content h3,
.flex-background_image__content h4 {
  color: #fff;
}

.flex-background_image__content p {
  color: rgba(255, 255, 255, 0.9);
}

@media (max-width: 600px) {
  .flex-background_image__content {
    padding: 32px 24px;
  }
}

/* ==========================================================================
   gallery_carousel - "Gallery Carousel"
   ========================================================================== */
.flex-gallery_carousel .gallery-carousel-item {
  width: 280px;
  margin: 0;
  border-radius: 14px;
  overflow: hidden;
  background: var(--color-bg-alt);
}

.flex-gallery_carousel .gallery-carousel-item img {
  display: block;
  width: 100%;
  height: 280px;
  object-fit: cover;
}

.flex-gallery_carousel .gallery-carousel-item figcaption {
  padding: 12px 4px 0;
  font-size: 0.85rem;
  color: var(--color-muted);
}

/* ==========================================================================
   images - "Images"
   ========================================================================== */
.flex-images .images-item img {
  display: block;
  width: 100%;
  height: 260px;
  object-fit: cover;
  border-radius: 12px;
}

.flex-images .flex-grid.no-crop .images-item img {
  height: auto;
  object-fit: contain;
}

/* ==========================================================================
   logos_layout - "Logos"
   ========================================================================== */
.flex-logos_layout .logo-item {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
}

.flex-logos_layout .logo-item img {
  max-width: 100%;
  max-height: 72px;
  width: auto;
  object-fit: contain;
  filter: grayscale(1);
  opacity: 0.75;
  transition: filter 0.15s ease, opacity 0.15s ease;
}

.flex-logos_layout .logo-item a {
  display: flex;
  align-items: center;
  justify-content: center;
}

.flex-logos_layout .logo-item:hover img {
  filter: grayscale(0);
  opacity: 1;
}

.flex-logos_layout .carousel-track .logo-item {
  flex: 0 0 auto;
  width: 180px;
}

/* ==========================================================================
   slider - "Slider"
   ========================================================================== */
.flex-slider .carousel-track {
  gap: 0;
  scroll-snap-type: x mandatory;
}

.flex-slider .slider-slide {
  position: relative;
  flex: 0 0 100%;
  width: 100%;
  min-height: 480px;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center;
  background-color: var(--color-navy);
  border-radius: 16px;
  overflow: hidden;
}

.flex-slider .slider-slide__overlay {
  position: absolute;
  inset: 0;
  background: rgba(14, 10, 66, 0.5);
  z-index: 0;
}

.flex-slider .slider-slide__content {
  position: relative;
  z-index: 1;
  padding: 56px;
  max-width: 640px;
  color: #fff;
}

.flex-slider .slider-slide__content h3 {
  color: #fff;
  font-size: 2rem;
  margin: 0 0 16px;
}

.flex-slider .slider-slide__text {
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: 24px;
}

@media (max-width: 600px) {
  .flex-slider .slider-slide {
    min-height: 380px;
  }
  .flex-slider .slider-slide__content {
    padding: 32px 24px;
  }
}

/* ==========================================================================
   background_video - "Background Video"
   ========================================================================== */
.flex-background_video {
  position: relative;
  min-height: 480px;
  display: flex;
  align-items: center;
  overflow: hidden;
  border-radius: 16px;
  background: var(--color-navy);
}

.flex-background_video__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}

.flex-background_video__overlay {
  position: absolute;
  inset: 0;
  background: rgba(14, 10, 66, 0.55);
  z-index: 1;
}

.flex-background_video__content {
  position: relative;
  z-index: 2;
  padding: 56px;
  color: #fff;
  max-width: 720px;
}

.flex-background_video__content h1,
.flex-background_video__content h2,
.flex-background_video__content h3,
.flex-background_video__content h4 {
  color: #fff;
}

.flex-background_video__content p {
  color: rgba(255, 255, 255, 0.9);
}

@media (max-width: 600px) {
  .flex-background_video__content {
    padding: 32px 24px;
  }
}

/* ==========================================================================
   promo_boxes - "Promo Boxes"
   ========================================================================== */
.flex-promo_boxes .promo-box {
  position: relative;
  display: block;
  min-height: 260px;
  border-radius: 16px;
  overflow: hidden;
  color: #fff;
  text-decoration: none;
  background: var(--color-navy);
}

.flex-promo_boxes .promo-box__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 0.25s ease;
  z-index: 0;
}

.flex-promo_boxes a.promo-box:hover .promo-box__bg {
  transform: scale(1.05);
}

.flex-promo_boxes .promo-box__overlay {
  position: absolute;
  inset: 0;
  background: rgba(14, 10, 66, 0.5);
  z-index: 1;
}

.flex-promo_boxes .promo-box__content {
  position: relative;
  z-index: 2;
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 260px;
}

.flex-promo_boxes .promo-box__title {
  color: #fff;
  margin: 0 0 8px;
}

.flex-promo_boxes .promo-box__desc {
  color: rgba(255, 255, 255, 0.9);
  font-size: 0.95rem;
}

.flex-promo_boxes .promo-box__desc p:last-child {
  margin-bottom: 0;
}

/* ==========================================================================
   pricing_tables - "Pricing Tables"
   ========================================================================== */
.flex-pricing_tables .pricing-table {
  display: flex;
  flex-direction: column;
  padding: 36px 28px;
  text-align: center;
}

.flex-pricing_tables .pricing-table__title {
  margin: 0 0 8px;
}

.flex-pricing_tables .pricing-table__price {
  font-size: 2.25rem;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: 20px;
}

.flex-pricing_tables .pricing-table__features {
  list-style: none;
  margin: 0 0 28px;
  padding: 0;
  text-align: left;
  flex-grow: 1;
}

.flex-pricing_tables .pricing-table__features li {
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-text);
}

.flex-pricing_tables .pricing-table__features li:last-child {
  border-bottom: none;
}

.flex-pricing_tables .pricing-table__features li.is-included::before {
  content: "\2713";
  color: var(--color-primary);
  font-weight: 700;
  margin-right: 10px;
}

.flex-pricing_tables .pricing-table__features li.is-excluded {
  color: var(--color-muted);
}

.flex-pricing_tables .pricing-table__features li.is-excluded::before {
  content: "\2715";
  color: var(--color-muted);
  margin-right: 10px;
}

.flex-pricing_tables .pricing-table .hero-button {
  align-self: center;
  margin-top: auto;
}

/* ==========================================================================
   call_to_actions - "Multiple Call to Actions"
   ========================================================================== */
.flex-call_to_actions .cta-box {
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
}

.flex-call_to_actions .cta-box__number {
  font-size: 2.5rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1;
  margin-bottom: 12px;
}

.flex-call_to_actions .cta-box__title {
  margin: 0 0 12px;
}

.flex-call_to_actions .cta-box__text {
  color: var(--color-muted);
  margin-bottom: 20px;
  flex-grow: 1;
}

.flex-call_to_actions .cta-box .hero-button {
  align-self: flex-start;
}
