.ftm-map,
.ftm-map * {
  box-sizing: border-box;
}

.ftm-map {
  width: min(calc(100% - clamp(32px, 6vw, 96px)), var(--ftm-map-max, 1200px));
  max-width: 100%;
  min-width: 0;
  margin-top: clamp(32px, 6vw, 80px);
  margin-bottom: clamp(32px, 6vw, 80px);
  padding: 0;
  color: inherit;
  font-family: inherit;
}

/* Alineación horizontal independiente del ancho. */
.ftm-map--align-start {
  margin-left: 0;
  margin-right: auto;
}

.ftm-map--align-center {
  margin-left: auto;
  margin-right: auto;
}

.ftm-map--align-end {
  margin-left: auto;
  margin-right: 0;
}

/* Full bleed real: rompe el ancho del contenedor padre y ocupa el viewport. */
.ftm-map.ftm-map--wide,
.ftm-map.ftm-map--wide.ftm-map--embedded {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

.ftm-map--embedded {
  width: min(100%, var(--ftm-map-max, 1200px));
  max-width: 100%;
  margin-top: clamp(22px, 4vw, 44px);
  margin-bottom: clamp(22px, 4vw, 44px);
}

.ftm-map--embedded.ftm-map--align-start {
  margin-left: 0;
  margin-right: auto;
}

.ftm-map--embedded.ftm-map--align-center {
  margin-left: auto;
  margin-right: auto;
}

.ftm-map--embedded.ftm-map--align-end {
  margin-left: auto;
  margin-right: 0;
}

.ftm-map__copy {
  margin: 0 0 clamp(18px, 3vw, 32px);
  color: inherit;
  font: inherit;
}

.ftm-map__title {
  margin-top: 0;
  color: inherit;
}

.ftm-map:not(.ftm-map--inherit) .ftm-map__title {
  margin-bottom: 12px;
  font-size: clamp(28px, 4vw, 52px);
  font-weight: 600;
  line-height: 1.08;
}

.ftm-map__text {
  max-width: 760px;
  margin: 0 0 20px;
  color: inherit;
  font: inherit;
  line-height: 1.7;
  opacity: .78;
}

.ftm-map__frame {
  position: relative;
  width: 100%;
  height: var(--ftm-map-h, 480px);
  overflow: hidden;
  border-radius: var(--ftm-map-radius, 20px);
  background: color-mix(in srgb, currentColor 7%, transparent);
}

.ftm-map--minimal .ftm-map__frame {
  border-radius: 0;
}

.ftm-map--card {
  padding: clamp(16px, 3vw, 32px);
  border: 1px solid color-mix(in srgb, currentColor 14%, transparent);
  border-radius: calc(var(--ftm-map-radius, 20px) + 8px);
  background: var(--card-background, #fff);
}

.ftm-map--shadow .ftm-map__frame {
  box-shadow: var(--card-shadow, 0 18px 46px rgba(0, 0, 0, .14));
}

.ftm-map iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.ftm-map__load {
  width: 100%;
  height: 100%;
  border: 0;
  background: color-mix(in srgb, currentColor 8%, transparent);
  color: inherit;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  transition: background-color .25s ease, color .25s ease;
}

.ftm-map__load:hover,
.ftm-map__load:focus-visible {
  background: color-mix(in srgb, currentColor 14%, transparent);
  outline: 3px solid currentColor;
  outline-offset: -6px;
}

.ftm-map__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.ftm-map[hidden] {
  display: none !important;
}

.ftm-map-target-source {
  display: contents;
}

@media (max-width: 1024px) {
  .ftm-map:not(.ftm-map--wide) {
    width: min(calc(100% - 40px), var(--ftm-map-max, 1200px));
  }

  .ftm-map--embedded:not(.ftm-map--wide) {
    width: min(100%, var(--ftm-map-max, 1200px));
  }

  .ftm-map__frame {
    height: var(--ftm-map-h-tablet, 420px);
  }
}

@media (max-width: 600px) {
  .ftm-map:not(.ftm-map--wide) {
    width: min(calc(100% - 28px), var(--ftm-map-max, 1200px));
    margin-top: 36px;
    margin-bottom: 36px;
  }

  .ftm-map--embedded:not(.ftm-map--wide) {
    width: min(100%, var(--ftm-map-max, 1200px));
    margin-top: 24px;
    margin-bottom: 24px;
  }

  .ftm-map__frame {
    height: var(--ftm-map-h-mobile, 340px);
  }

  .ftm-map--card {
    padding: 14px;
  }

  .ftm-map:not(.ftm-map--inherit) .ftm-map__title {
    font-size: 30px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ftm-map__load {
    transition: none;
  }
}
