.aspc-root,
.aspc-root * {
  box-sizing: border-box;
}

/*
 * Modo BOXED real para Elementor/Gutenberg.
 * O carrossel nunca usa 100vw, nunca usa margem negativa e nunca mede fora do widget.
 * O scroll do carrossel fica preso dentro do próprio box.
 */
.aspc-root {
  inline-size: 100% !important;
  width: 100% !important;
  max-inline-size: min(100%, var(--aspc-container-width, 1200px)) !important;
  max-width: min(100%, var(--aspc-container-width, 1200px)) !important;
  min-inline-size: 0 !important;
  min-width: 0 !important;
  margin: 0 auto !important;
  padding: 0 !important;
  background: transparent !important;
  position: relative;
  display: block;
  overflow-x: hidden !important;
  overflow-y: visible !important;
  font: inherit;
  isolation: isolate;
  contain: inline-size layout;
  --aspc-gap: 24px;
  --aspc-card-width: 270px;
  --aspc-card-basis: calc((100% - 48px) / 3);
  --aspc-columns: 3;
  --aspc-font-size: inherit;
  --aspc-container-width: 1200px;
}

/* Classes adicionadas via JS nos pais do Elementor para impedir que o flex do Elementor seja alargado pelo carrossel. */
.aspc-elementor-boxed-context,
.aspc-elementor-boxed-context > .elementor-widget-container,
.aspc-elementor-boxed-context > .elementor-container,
.aspc-elementor-boxed-context > .e-con-inner {
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
}

.elementor-widget-aspc_simple_property_carousel,
.elementor-widget-aspc_simple_property_carousel > .elementor-widget-container,
.elementor-widget-shortcode,
.elementor-widget-shortcode > .elementor-widget-container,
.elementor-widget-shortcode .elementor-shortcode,
.elementor-widget-html,
.elementor-widget-html > .elementor-widget-container {
  width: 100%;
  max-width: 100% !important;
  min-width: 0 !important;
}

.elementor-widget-aspc_simple_property_carousel > .elementor-widget-container,
.elementor-widget-shortcode .elementor-shortcode:has(.aspc-root),
.elementor-widget-html .elementor-widget-container:has(.aspc-root) {
  overflow-x: hidden !important;
}

.aspc-mobile-swipe-hint {
  display: none;
  width: 100%;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
  padding: 0;
  background: transparent !important;
  color: var(--aspc-text-color, #3f484d);
  font-family: inherit;
  font-size: 0.82em;
  line-height: 1.3;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-align: center;
}

.aspc-mobile-swipe-hint[hidden] {
  display: none !important;
}

.aspc-mobile-swipe-arrow {
  display: inline-block;
  color: var(--aspc-location-color, #8a681f);
  font-size: 1.08em;
  line-height: 1;
  animation: aspc-mobile-swipe-nudge 1.35s ease-in-out infinite;
}

.aspc-mobile-swipe-arrow:first-child {
  animation-delay: .16s;
}

@keyframes aspc-mobile-swipe-nudge {
  0%, 100% { transform: translateX(0); opacity: .55; }
  50% { transform: translateX(4px); opacity: 1; }
}

.aspc-carousel-shell {
  position: relative;
  inline-size: 100%;
  width: 100%;
  max-inline-size: 100%;
  max-width: 100%;
  min-inline-size: 0;
  min-width: 0;
  margin-inline: auto;
  background: transparent !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
}

.aspc-track {
  inline-size: 100%;
  width: 100%;
  max-inline-size: 100%;
  max-width: 100%;
  min-inline-size: 0;
  min-width: 0;
  display: flex;
  gap: var(--aspc-gap);
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  padding: 2px 0 10px !important;
  margin: 0 auto !important;
  -webkit-overflow-scrolling: touch;
}

.aspc-track.is-centered {
  justify-content: center;
}

.aspc-track::-webkit-scrollbar {
  display: none;
}

.aspc-card {
  flex: 0 0 var(--aspc-card-basis);
  inline-size: var(--aspc-card-basis);
  width: var(--aspc-card-basis);
  max-inline-size: var(--aspc-card-basis);
  max-width: var(--aspc-card-basis);
  min-inline-size: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  scroll-snap-align: start;
  overflow: hidden;
  border: 1px solid var(--aspc-border-color, #e8ecef);
  border-radius: 7px;
  background: #ffffff;
  box-shadow: 0 8px 22px rgba(18, 31, 38, 0.035);
  font-family: inherit;
  font-size: var(--aspc-font-size);
  line-height: 1.45;
}

.aspc-single-card-wrap {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  display: flex;
  justify-content: center;
}

.aspc-single-card-wrap .aspc-card {
  flex-basis: min(100%, var(--aspc-card-width));
  width: min(100%, var(--aspc-card-width));
  max-width: min(100%, var(--aspc-card-width));
}

.aspc-media {
  position: relative;
  height: 0;
  padding-bottom: 72%;
  background: var(--aspc-media-bg, #17313f);
  overflow: hidden;
}

.aspc-slides,
.aspc-slide,
.aspc-slide img,
.aspc-image-shade {
  position: absolute;
  inset: 0;
}

.aspc-slide {
  background: var(--aspc-media-bg, #17313f);
}

.aspc-slide[hidden] {
  display: none !important;
}

.aspc-slide img {
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}

.aspc-image-shade {
  background: linear-gradient(180deg, rgba(11, 31, 41, 0.04), rgba(11, 31, 41, 0.13));
}

.aspc-placeholder {
  width: 100%;
  height: 100%;
  min-height: 160px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, 0.24);
  text-align: center;
}

.aspc-placeholder .aspc-icon {
  width: 34px;
  height: 34px;
  color: rgba(255, 255, 255, 0.24);
}

.aspc-placeholder span {
  font-size: 0.92em;
  line-height: 1.2;
  color: rgba(255, 255, 255, 0.28);
}

.aspc-badge {
  position: absolute;
  z-index: 4;
  top: 14px;
  left: 14px;
  display: inline-flex;
  align-items: center;
  max-width: calc(100% - 28px);
  min-height: 20px;
  padding: 5px 10px;
  background: var(--aspc-badge-bg, #005b66);
  color: var(--aspc-badge-color, #ffffff);
  border-radius: 2px;
  font-size: 0.68em;
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.aspc-gallery-arrow,
.aspc-main-arrow {
  appearance: none;
  border: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
  transition: transform .2s ease, opacity .2s ease, background .2s ease, color .2s ease;
}

.aspc-gallery-arrow {
  position: absolute;
  z-index: 5;
  top: 50%;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background: rgba(5, 19, 27, 0.68);
  color: #ffffff;
  transform: translateY(-50%);
}

.aspc-gallery-arrow:hover,
.aspc-gallery-arrow:focus-visible {
  background: rgba(5, 19, 27, 0.86);
  transform: translateY(-50%) scale(1.04);
}

.aspc-gallery-prev { left: 10px; }
.aspc-gallery-next { right: 10px; }

.aspc-gallery-dots {
  position: absolute;
  z-index: 5;
  bottom: 12px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 5px;
  align-items: center;
  justify-content: center;
}

.aspc-gallery-dot {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  border: 0;
  padding: 0;
  background: rgba(255, 255, 255, 0.42);
  cursor: pointer;
}

.aspc-gallery-dot.is-active {
  background: #ffffff;
}

.aspc-gallery-count {
  position: absolute;
  z-index: 5;
  right: 12px;
  bottom: 10px;
  min-width: 40px;
  height: 26px;
  padding: 0 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(5, 19, 27, 0.70);
  color: rgba(255, 255, 255, 0.88);
  font-size: 0.88em;
  letter-spacing: 0.01em;
}

.aspc-body {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  background: #ffffff;
  padding: 18px 14px 16px;
}

.aspc-title {
  margin: 0 0 5px !important;
  padding: 0 !important;
  color: var(--aspc-title-color, #005261);
  font-family: inherit;
  font-size: 1.08em;
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: 0;
  overflow-wrap: normal;
}

.aspc-title-text {
  color: inherit !important;
  text-decoration: none !important;
}

.aspc-location {
  margin: 0 0 15px !important;
  color: var(--aspc-location-color, #8a681f);
  font-size: 0.72em;
  line-height: 1.35;
  letter-spacing: 0.035em;
  text-transform: uppercase;
  font-weight: 500;
  overflow-wrap: normal;
}

.aspc-stats {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  margin: 0 0 20px;
  padding: 0;
  border: 0;
  min-width: 0;
}

.aspc-stat {
  min-width: 0;
  flex: 1 1 0;
  display: flex;
  align-items: flex-start;
  gap: 4px;
  color: var(--aspc-text-color, #3f484d);
}

.aspc-stat .aspc-icon {
  flex: 0 0 13px;
  width: 13px;
  height: 13px;
  color: var(--aspc-muted-color, #8b9398);
}

.aspc-stat-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
  overflow: visible;
}

.aspc-stat strong {
  display: block;
  color: var(--aspc-text-color, #3f484d);
  font-size: 0.75em;
  line-height: 1.18;
  font-weight: 400;
  white-space: normal;
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  word-break: normal;
  overflow-wrap: break-word;
}

.aspc-stat span {
  display: block;
  color: var(--aspc-muted-color, #8b9398);
  font-size: 0.68em;
  line-height: 1.18;
  word-break: normal;
  overflow-wrap: break-word;
  hyphens: none;
}

.aspc-description {
  margin: 0 !important;
  max-width: none;
  min-height: 0;
  color: var(--aspc-text-color, #3f484d);
  font-size: 0.86em;
  font-weight: 400;
  line-height: 1.55;
  letter-spacing: 0;
  display: block;
  overflow: visible;
  overflow-wrap: break-word;
  word-break: normal;
}

.aspc-footer {
  margin-top: auto;
  padding-top: 20px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 14px;
  min-width: 0;
}

.aspc-footer-label {
  margin: 0 !important;
  color: var(--aspc-muted-color, #8b9398);
  text-transform: uppercase;
  font-size: 0.68em;
  line-height: 1.2;
  font-weight: 500;
  letter-spacing: 0.025em;
  overflow-wrap: normal;
}

.aspc-cta {
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  border-radius: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--aspc-button-bg, #ffd782);
  color: var(--aspc-button-color, #7a5d18) !important;
  text-decoration: none !important;
  transition: transform .2s ease, filter .2s ease;
}

.aspc-cta:hover,
.aspc-cta:focus-visible {
  transform: translateY(-1px);
  filter: brightness(1.02);
}

.aspc-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  color: currentColor;
}

.aspc-icon svg {
  width: 100%;
  height: 100%;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.aspc-cta .aspc-icon,
.aspc-gallery-arrow .aspc-icon,
.aspc-main-arrow .aspc-icon {
  width: 16px;
  height: 16px;
}

.aspc-main-arrow {
  position: absolute;
  z-index: 10;
  top: 50%;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(18, 31, 38, 0.08);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.86);
  color: rgba(18, 31, 38, 0.48);
  box-shadow: 0 6px 18px rgba(18, 31, 38, 0.06);
}

.aspc-main-prev { left: 8px; transform: translateY(-50%); }
.aspc-main-next { right: 8px; transform: translateY(-50%); }

.aspc-main-arrow:hover,
.aspc-main-arrow:focus-visible {
  background: #ffffff;
  color: rgba(18, 31, 38, 0.78);
}

.aspc-empty {
  margin: 0;
  color: #697177;
  background: transparent;
}

@media (max-width: 1024px) {
  .aspc-carousel-shell {
    max-width: 100%;
  }

  .aspc-card {
    flex-basis: calc((100% - var(--aspc-gap)) / 2);
    width: calc((100% - var(--aspc-gap)) / 2);
    max-width: calc((100% - var(--aspc-gap)) / 2);
  }

  .aspc-cols-1 .aspc-card {
    flex-basis: min(100%, var(--aspc-card-width));
    width: min(100%, var(--aspc-card-width));
    max-width: min(100%, var(--aspc-card-width));
  }
}

@media (max-width: 767px) {
  .aspc-root {
    --aspc-gap: 14px;
    inline-size: 100% !important;
    width: 100% !important;
  }

  .aspc-mobile-swipe-hint {
    display: flex;
  }

  .aspc-track {
    gap: var(--aspc-gap);
    padding: 2px 0 8px !important;
    scroll-padding-left: 0;
    touch-action: pan-x;
  }

  .aspc-card,
  .aspc-cols-1 .aspc-card,
  .aspc-cols-2 .aspc-card,
  .aspc-cols-3 .aspc-card,
  .aspc-cols-4 .aspc-card {
    flex-basis: min(88%, 360px);
    width: min(88%, 360px);
    max-width: min(88%, 360px);
  }

  .aspc-track.is-centered .aspc-card {
    flex-basis: 100%;
    width: 100%;
    max-width: 100%;
  }

  .aspc-media {
    padding-bottom: 72%;
  }

  .aspc-body {
    padding: 24px 22px 22px;
  }

  .aspc-title {
    font-size: 1.12em;
  }

  .aspc-location {
    font-size: 0.76em;
    margin-bottom: 16px !important;
  }

  .aspc-stats {
    gap: 12px;
    margin-bottom: 22px;
  }

  .aspc-stat .aspc-icon {
    width: 16px;
    height: 16px;
    flex-basis: 16px;
  }

  .aspc-description {
    min-height: 0;
  }

  .aspc-main-arrow {
    display: none;
  }
}

@media (max-width: 480px) {
  .aspc-body {
    padding: 22px 18px 20px;
  }

  .aspc-badge {
    top: 12px;
    left: 12px;
    max-width: calc(100% - 24px);
    font-size: 0.66em;
  }

  .aspc-stats {
    gap: 8px;
  }

  .aspc-stat {
    gap: 4px;
  }

  .aspc-stat .aspc-icon {
    width: 14px;
    height: 14px;
    flex-basis: 14px;
  }
}


/* Ajuste anti-corte: nenhum texto do card usa reticências ou clamp. */
.aspc-card,
.aspc-body,
.aspc-title,
.aspc-location,
.aspc-stats,
.aspc-stat,
.aspc-stat-copy,
.aspc-description,
.aspc-footer-label {
  text-overflow: clip !important;
}

.aspc-title,
.aspc-location,
.aspc-stat strong,
.aspc-stat span,
.aspc-description,
.aspc-footer-label {
  overflow: visible !important;
  white-space: normal !important;
  word-break: normal !important;
  hyphens: none !important;
}
