.fx { --fx: #D7AE5D; --fx-dark: #16163f; --fx-muted: #64748b; --fx-border: #e2e8f0; font-family: 'Segoe UI', system-ui, sans-serif; color: #1e293b; background: #fff; }
.fx *, .fx *::before, .fx *::after { box-sizing: border-box; }
.fx a { color: inherit; text-decoration: none; }
.fx-inner { max-width: 1140px; margin: 0 auto; padding: 0 20px; }
.fx-load { min-height: 100vh; display: flex; align-items: center; justify-content: center; }
.fx-spin { width: 36px; height: 36px; border: 3px solid #e2e8f0; border-top-color: var(--fx); border-radius: 50%; animation: fxSpin .7s linear infinite; }
@keyframes fxSpin { to { transform: rotate(360deg); } }
.fx-empty { text-align: center; color: var(--fx-muted); padding: 48px 0; }
.fx-tag { display: inline-block; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--fx); margin-bottom: 10px; }
.fx-tag--light { color: #5eead4; }
.fx-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 22px; border: none; border-radius: 6px; background: var(--fx); color: #fff; font-weight: 600; font-size: .9rem; cursor: pointer; transition: filter .2s, transform .2s; }
.fx-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.fx-btn--sm { padding: 8px 14px; font-size: .8rem; }
.fx-btn--block { width: 100%; }

/* NAV */
.fx-nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: #fff; box-shadow: 0 1px 0 var(--fx-border); transition: box-shadow .3s; }
.fx-nav.scrolled { box-shadow: 0 4px 24px rgba(0,0,0,.08); }
.fx-nav__row { display: flex; align-items: center; justify-content: space-between; height: 64px; }
.fx-nav__brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 1.05rem; color: var(--fx-dark); }
.fx-nav__logo { height: 34px; }
.fx-nav__links { display: flex; align-items: center; gap: 22px; }
.fx-nav__links a { font-size: .86rem; font-weight: 500; color: #475569; }
.fx-nav__links a:hover { color: var(--fx); }
.fx-nav__cta { background: var(--fx) !important; color: #fff !important; padding: 8px 14px; border-radius: 6px; font-weight: 600; }
.fx-nav__burger { display: none; background: none; border: none; cursor: pointer; padding: 4px; }
.fx-nav__burger span { display: block; width: 22px; height: 2px; background: var(--fx-dark); margin: 5px 0; }

/* HERO + SLIDES */
.fx-hero { position: relative; min-height: 560px; display: flex; align-items: center; justify-content: center; margin-top: 64px; background: var(--fx-dark); overflow: hidden; }
.fx-hero__slides { position: absolute; inset: 0; }
.fx-hero__slide {
  position: absolute; inset: 0;
  background: var(--fx-dark) center/cover no-repeat;
  opacity: 0;
  pointer-events: none;
}
.fx-hero__slide.active { opacity: 1; pointer-events: auto; }
/* fade (default) */
.fx-hero__slide--fade { transition: opacity 1.1s ease; transform: scale(1.04); }
.fx-hero__slide--fade.active { transform: scale(1); transition: opacity 1.1s ease, transform 6s ease-out; }
/* slide */
.fx-hero__slide--slide { transition: opacity .7s ease, transform .7s ease; transform: translateX(8%); }
.fx-hero__slide--slide.active { transform: translateX(0); }
/* zoom */
.fx-hero__slide--zoom { transition: opacity .9s ease, transform .9s ease; transform: scale(1.12); }
.fx-hero__slide--zoom.active { transform: scale(1); }
/* ken burns */
.fx-hero__slide--kenburns { transition: opacity 1.2s ease; transform: scale(1); }
.fx-hero__slide--kenburns.active { animation: fx-kenburns 7s ease-out forwards; }
@keyframes fx-kenburns {
  from { transform: scale(1); }
  to { transform: scale(1.1); }
}
.fx-hero__edit-banner {
  position: absolute; top: 78px; right: 16px; z-index: 5;
  border: none; border-radius: 8px; padding: 8px 12px;
  background: rgba(255,255,255,.92); color: #16163f; font-weight: 600; font-size: .78rem;
  cursor: pointer; box-shadow: 0 8px 24px rgba(0,0,0,.2);
}
.fx-hero__edit-banner:hover { background: #fff; }
body.is-editing .fx-hero__edit-banner { display: inline-flex !important; }
body.is-editing .fx-hero__slides { cursor: pointer; }
.fx-hero__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(26,29,33,.28), rgba(26,29,33,.45)); z-index: 0; pointer-events: none; }
.fx-hero__content { position: relative; z-index: 1; text-align: center; max-width: 780px; padding: 64px 20px 80px; }
.fx-hero__content h1 { font-size: clamp(1.7rem, 4vw, 2.6rem); font-weight: 700; color: #fff; margin: 0 0 12px; line-height: 1.2; text-shadow: 0 2px 18px rgba(0,0,0,.45); }
.fx-hero__content h1 em { font-style: normal; color: var(--fx); }
.fx-hero__content > p { color: rgba(255,255,255,.88); margin: 0 0 32px; font-size: 1.05rem; text-shadow: 0 1px 12px rgba(0,0,0,.4); }
.fx-hero__dots { display: flex; justify-content: center; gap: 8px; margin-top: 22px; }
.fx-hero__dot {
  width: 9px; height: 9px; border-radius: 50%; border: none;
  background: rgba(255,255,255,.35); cursor: pointer; padding: 0;
  transition: transform .2s, background .2s;
}
.fx-hero__dot.on { background: #fff; transform: scale(1.25); }
.fx-hero__dot:hover { background: rgba(255,255,255,.7); }

/* Search box */
.fx-search { background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 20px 50px rgba(0,0,0,.35); text-align: left; }
.fx-search__tabs { display: flex; border-bottom: 1px solid var(--fx-border); }
.fx-search__tabs button { flex: 1; padding: 12px; border: none; background: #f8fafc; font-weight: 600; font-size: .88rem; color: var(--fx-muted); cursor: pointer; border-bottom: 2px solid transparent; }
.fx-search__tabs button.on { background: #fff; color: var(--fx); border-bottom-color: var(--fx); }
.fx-search__fields { display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; padding: 16px; }
.fx-search__fields input { border: 1px solid var(--fx-border); border-radius: 6px; padding: 12px 14px; font-size: .9rem; outline: none; }
.fx-search__fields input:focus { border-color: var(--fx); }
.fx-search__btn { display: inline-flex; align-items: center; gap: 6px; padding: 12px 22px; background: var(--fx); color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer; white-space: nowrap; }

/* Sections */
.fx-sec { padding: 72px 0; }
.fx-sec--alt { background: #f8fafc; }
.fx-sec--dark { background: var(--fx-dark); color: #fff; }
.fx-sec__head { text-align: center; margin-bottom: 40px; }
.fx-sec__head span { display: block; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--fx); margin-bottom: 8px; }
.fx-sec__head h2 { margin: 0 0 8px; font-size: 1.75rem; font-weight: 700; color: var(--fx-dark); }
.fx-sec--dark .fx-sec__head h2 { color: #fff; }
.fx-sec__head p { margin: 0; color: var(--fx-muted); }
.fx-grid { display: grid; gap: 24px; }
.fx-grid--3 { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.fx-grid--4 { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }

/* Cards */
.fx-card { background: #fff; border: 1px solid var(--fx-border); border-radius: 10px; overflow: hidden; cursor: pointer; transition: transform .25s, box-shadow .25s; }
.fx-card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,.1); }
.fx-card__img { position: relative; aspect-ratio: 16/10; background: #e2e8f0; overflow: hidden; }
.fx-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.fx-card:hover .fx-card__img img { transform: scale(1.04); }
.fx-badge { position: absolute; top: 10px; font-size: .68rem; font-weight: 700; padding: 4px 9px; border-radius: 4px; color: #fff; }
.fx-badge--feat { left: 10px; background: #f59e0b; }
.fx-badge--type { right: 10px; }
.fx-badge--type[data-t="SALE"], .fx-badge--type[data-t="EXCLUSIVE_SALE"] { background: var(--fx); }
.fx-badge--type[data-t="RENT"], .fx-badge--type[data-t="RENT_TO_OWN"] { background: #0284c7; }
.fx-card__count { position: absolute; bottom: 8px; right: 8px; background: rgba(0,0,0,.55); color: #fff; font-size: .7rem; padding: 3px 8px; border-radius: 4px; }
.fx-card__body { padding: 16px 18px 18px; }
.fx-card__loc { font-size: .75rem; color: var(--fx-muted); margin-bottom: 4px; }
.fx-card__body h3 { margin: 0 0 10px; font-size: 1rem; font-weight: 650; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.fx-card__meta { display: flex; flex-wrap: wrap; gap: 10px; font-size: .78rem; color: var(--fx-muted); margin-bottom: 12px; }
.fx-card__foot { display: flex; justify-content: space-between; align-items: center; padding-top: 12px; border-top: 1px solid #f1f5f9; }
.fx-card__foot strong { color: var(--fx); font-size: 1.05rem; }
.fx-card__foot em { font-style: normal; font-size: .75rem; color: var(--fx-muted); }

/* Filters */
.fx-filters { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 28px; }
.fx-filters__tabs, .fx-filters__types { display: flex; flex-wrap: wrap; gap: 6px; }
.fx-filters button { padding: 8px 14px; border: 1px solid var(--fx-border); background: #fff; border-radius: 6px; font-size: .82rem; font-weight: 500; color: #475569; cursor: pointer; }
.fx-filters button.on { background: var(--fx); color: #fff; border-color: var(--fx); }
.fx-filters__q { flex: 1; min-width: 180px; padding: 9px 14px; border: 1px solid var(--fx-border); border-radius: 6px; font-size: .88rem; outline: none; }
.fx-filters__q:focus { border-color: var(--fx); }

/* Mortgage */
.fx-mort { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.fx-mort__info h2 { margin: 0 0 10px; font-size: 1.7rem; }
.fx-mort__info > p { color: var(--fx-muted); margin: 0 0 28px; }
.fx-mort__result { background: color-mix(in srgb, var(--fx) 10%, #fff); border: 1px solid color-mix(in srgb, var(--fx) 25%, #fff); border-radius: 10px; padding: 24px; }
.fx-mort__result span { display: block; font-size: .8rem; color: var(--fx-muted); margin-bottom: 6px; }
.fx-mort__result strong { font-size: 2rem; color: var(--fx); }
.fx-mort__form { display: grid; gap: 14px; background: #f8fafc; padding: 24px; border-radius: 10px; border: 1px solid var(--fx-border); }
.fx-mort__form label { display: flex; flex-direction: column; gap: 6px; font-size: .8rem; font-weight: 600; color: #475569; }
.fx-mort__form input { padding: 10px 12px; border: 1px solid var(--fx-border); border-radius: 6px; font-size: .95rem; outline: none; }
.fx-mort__form input:focus { border-color: var(--fx); }
.fx-mort__summary { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 4px; }
.fx-mort__summary div { background: #fff; border-radius: 6px; padding: 12px; border: 1px solid var(--fx-border); }
.fx-mort__summary span { display: block; font-size: .72rem; color: var(--fx-muted); }
.fx-mort__summary b { font-size: .95rem; color: var(--fx-dark); }

/* About */
.fx-about { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 40px; align-items: center; }
.fx-about h2 { margin: 0 0 12px; font-size: 1.7rem; }
.fx-about > div > p { color: var(--fx-muted); line-height: 1.65; }
.fx-about__list { list-style: none; padding: 0; margin: 20px 0 0; display: grid; gap: 8px; }
.fx-about__list li { padding-left: 22px; position: relative; font-weight: 500; }
.fx-about__list li::before { content: ''; position: absolute; left: 0; top: 7px; width: 10px; height: 10px; border-radius: 50%; background: var(--fx); }
.fx-about__visual {
  border-radius: 12px;
  overflow: hidden;
  aspect-ratio: 3 / 4;
  max-height: 520px;
  background: var(--fx-dark);
  justify-self: center;
  width: min(100%, 380px);
}
.fx-about__visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 12%;
  display: block;
}
@media (max-width: 900px) {
  .fx-about__visual { width: min(100%, 320px); max-height: 440px; }
}

/* Agents */
.fx-agent { text-align: center; padding: 28px 18px; background: #fff; border: 1px solid var(--fx-border); border-radius: 10px; }
.fx-agent__av { width: 64px; height: 64px; border-radius: 50%; background: color-mix(in srgb, var(--fx) 15%, #fff); color: var(--fx); font-weight: 700; font-size: 1.4rem; display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; }
.fx-agent h4 { margin: 0 0 6px; }
.fx-agent p { font-size: .82rem; color: var(--fx-muted); margin: 0 0 14px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* Contact */
.fx-contact { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.fx-contact h2 { margin: 0 0 10px; font-size: 1.7rem; }
.fx-contact > div > p { color: rgba(255,255,255,.65); }
.fx-contact__info { margin-top: 24px; display: grid; gap: 8px; }
.fx-contact__info a:hover { color: var(--fx); }
.fx-contact__form { display: grid; gap: 12px; }
.fx-contact__form input, .fx-contact__form textarea { padding: 12px 14px; border: 1px solid rgba(255,255,255,.15); border-radius: 6px; background: rgba(255,255,255,.06); color: #fff; font-size: .9rem; outline: none; font-family: inherit; }
.fx-contact__form input::placeholder, .fx-contact__form textarea::placeholder { color: rgba(255,255,255,.4); }
.fx-contact__form input:focus, .fx-contact__form textarea:focus { border-color: var(--fx); }

/* Footer */
.fx-foot { background: #111417; color: rgba(255,255,255,.7); padding: 40px 0 28px; font-size: .85rem; }
.fx-foot__row { display: grid; gap: 20px; }
.fx-foot strong { display: block; color: #fff; font-size: 1rem; margin-bottom: 6px; }
.fx-foot__links { display: flex; gap: 18px; flex-wrap: wrap; }
.fx-foot__links a:hover { color: var(--fx); }
.fx-foot__copy { margin: 8px 0 0; font-size: .78rem; }
.fx-foot__copy a { color: var(--fx); }

/* Modal */
.fx-modal {
  position: fixed; inset: 0; z-index: 200;
  background: rgba(15, 23, 42, .72);
  display: flex; align-items: center; justify-content: center;
  padding: 16px; overflow-y: auto;
}
.fx-modal__box {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  max-width: 1040px;
  width: 96%;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.06);
  overflow: hidden;
}
.fx-modal__header {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid #e2e8f0;
  flex-shrink: 0;
  background: #fff;
}
.fx-modal__header-title {
  margin: 0; flex: 1; min-width: 0;
  font-size: 1rem; font-weight: 650; color: #0f172a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fx-modal__x {
  flex-shrink: 0;
  width: 36px; height: 36px;
  border: 1px solid #e2e8f0; border-radius: 10px;
  background: #f8fafc; color: #334155;
  font-size: 1.35rem; line-height: 1; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s;
}
.fx-modal__x:hover { background: #e2e8f0; color: #0f172a; }
.fx-modal__scroll {
  flex: 1; min-height: 0; overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.fx-modal__gal { padding: 16px 18px 0; }
.fx-modal__main {
  position: relative;
  aspect-ratio: 16 / 10;
  border-radius: 12px;
  overflow: hidden;
  background: #e2e8f0;
}
.fx-modal__main > img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.fx-modal__placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  color: #94a3b8; font-size: .95rem; font-weight: 500;
  background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
}
.fx-modal__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px;
  border: none; border-radius: 50%;
  background: rgba(15, 23, 42, .55); color: #fff;
  font-size: 1.6rem; line-height: 1; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  backdrop-filter: blur(4px);
  transition: background .15s, transform .15s;
  z-index: 2;
}
.fx-modal__arrow:hover { background: rgba(15, 23, 42, .78); }
.fx-modal__arrow--prev { left: 12px; }
.fx-modal__arrow--next { right: 12px; }
.fx-modal__counter {
  position: absolute; bottom: 12px; right: 12px;
  background: rgba(15, 23, 42, .7); color: #fff;
  font-size: .78rem; font-weight: 600;
  padding: 5px 10px; border-radius: 999px;
  z-index: 2;
}
.fx-modal__thumbs {
  display: flex; gap: 8px;
  margin-top: 10px; padding-bottom: 4px;
  overflow-x: auto; scrollbar-width: thin;
}
.fx-modal__thumb {
  flex: 0 0 auto;
  width: 72px; height: 52px;
  padding: 0; border: 2px solid transparent; border-radius: 8px;
  overflow: hidden; cursor: pointer; background: #e2e8f0;
  opacity: .75; transition: opacity .15s, border-color .15s;
}
.fx-modal__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fx-modal__thumb:hover { opacity: 1; }
.fx-modal__thumb.is-active { border-color: var(--fx); opacity: 1; }
.fx-modal__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  padding: 20px 18px 24px;
}
@media (min-width: 900px) {
  .fx-modal__grid { grid-template-columns: 65% 1fr; gap: 28px; align-items: start; }
}
.fx-modal__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin-bottom: 10px;
}
.fx-modal__meta .fx-badge { position: static; display: inline-block; }
.fx-modal__ptype {
  font-size: .78rem; font-weight: 600; color: #64748b;
  background: #f1f5f9; padding: 4px 10px; border-radius: 999px;
}
.fx-modal__title {
  margin: 0 0 8px; font-size: 1.45rem; line-height: 1.25; color: #0f172a;
}
.fx-modal__loc {
  display: flex; align-items: flex-start; gap: 6px;
  color: var(--fx-muted); font-size: .88rem; margin: 0 0 12px; line-height: 1.4;
}
.fx-modal__loc svg { flex-shrink: 0; margin-top: 1px; color: var(--fx); }
.fx-modal__price {
  font-size: 1.75rem; font-weight: 750; color: var(--fx);
  margin: 0 0 18px; letter-spacing: -0.02em;
}
.fx-modal__feats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 10px;
  margin-bottom: 22px;
}
.fx-modal__feat {
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 12px 10px;
  text-align: center;
  background: #fafbfc;
}
.fx-modal__feat b {
  display: block; font-size: 1.15rem; color: #0f172a; margin-bottom: 2px;
}
.fx-modal__feat span {
  font-size: .72rem; color: #64748b; font-weight: 500;
}
.fx-modal__section { margin-bottom: 20px; }
.fx-modal__section h4 {
  margin: 0 0 8px; font-size: .95rem; font-weight: 700; color: #0f172a;
}
.fx-modal__desc {
  font-size: .9rem; line-height: 1.65; color: #475569;
  margin: 0; white-space: pre-wrap;
}
.fx-modal__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.fx-modal__tags span {
  font-size: .75rem; padding: 5px 11px;
  background: #f1f5f9; border: 1px solid #e2e8f0;
  border-radius: 999px; color: #475569;
}
.fx-modal__side { position: sticky; top: 0; }
.fx-modal__interest {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 18px;
  background: #fff;
}
.fx-modal__interest h4 {
  margin: 0 0 6px; font-size: 1.05rem; font-weight: 700; color: #0f172a;
}
.fx-modal__interest-help {
  margin: 0 0 14px; font-size: .82rem; color: #64748b; line-height: 1.45;
}
.fx-modal__cta {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; padding: 12px 16px;
  border-radius: 8px; font-weight: 650; font-size: .9rem;
  text-decoration: none; cursor: pointer;
  transition: filter .15s, transform .15s, background .15s;
  margin-bottom: 8px;
}
.fx-modal__cta:last-child { margin-bottom: 0; }
.fx-modal__cta--wa {
  background: #25d366; color: #fff; border: none;
}
.fx-modal__cta--wa:hover { filter: brightness(1.06); transform: translateY(-1px); }
.fx-modal__cta--sec {
  background: #fff; color: #0f172a;
  border: 1px solid #e2e8f0;
}
.fx-modal__cta--sec:hover { background: #f8fafc; }
.fx-modal__footer {
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 12px 18px;
  border-top: 1px solid #e2e8f0;
  background: #fff;
  box-shadow: 0 -4px 16px rgba(15, 23, 42, .06);
}
.fx-modal__footer-price span {
  display: block; font-size: .72rem; color: #64748b; font-weight: 500;
}
.fx-modal__footer-price strong {
  font-size: 1.1rem; color: var(--fx); font-weight: 750;
}
.fx-modal__footer-cta {
  width: auto; min-width: 140px; margin: 0; padding: 11px 20px;
}
@media (max-width: 640px) {
  .fx-modal { padding: 8px; align-items: flex-end; }
  .fx-modal__box { width: 100%; max-height: 96vh; border-radius: 14px 14px 10px 10px; }
  .fx-modal__title { font-size: 1.25rem; }
  .fx-modal__price { font-size: 1.45rem; }
  .fx-modal__arrow { width: 38px; height: 38px; font-size: 1.35rem; }
}

/* WA FAB + bubble */
.fx-wa { position: fixed; bottom: 24px; right: 24px; z-index: 90; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.fx-wa__bubble {
  background: #25d366;
  color: #fff;
  font-size: .88rem;
  font-weight: 650;
  padding: 10px 14px;
  border-radius: 14px 14px 4px 14px;
  box-shadow: 0 8px 28px rgba(37,211,102,.35);
  position: relative;
  animation: fxBubbleIn .6s ease both, fxBubbleBob 2.4s ease-in-out .6s infinite;
  white-space: nowrap;
}
.fx-wa__bubble::after {
  content: '';
  position: absolute;
  right: 14px; bottom: -6px;
  width: 12px; height: 12px;
  background: #25d366;
  transform: rotate(45deg);
}
@keyframes fxBubbleIn {
  from { opacity: 0; transform: translateY(8px) scale(.9); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes fxBubbleBob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

.fx-fab {
  position: relative;
  width: 56px; height: 56px; border-radius: 50%;
  background: #25d366;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 20px rgba(37,211,102,.4);
  transition: transform .2s;
  animation: fxFabPulse 2s ease-in-out infinite;
}
.fx-fab:hover { transform: scale(1.08); animation: none; }
.fx-fab svg { position: relative; z-index: 1; }
.fx-fab__ring {
  position: absolute; inset: 0; border-radius: 50%;
  border: 2px solid rgba(37,211,102,.55);
  animation: fxFabRing 2s ease-out infinite;
  pointer-events: none;
}
.fx-fab__ring--delay { animation-delay: 1s; }
@keyframes fxFabPulse {
  0%, 100% { box-shadow: 0 6px 20px rgba(37,211,102,.4); }
  50% { box-shadow: 0 6px 28px rgba(37,211,102,.65); }
}
@keyframes fxFabRing {
  0% { transform: scale(1); opacity: .7; }
  100% { transform: scale(1.7); opacity: 0; }
}

/* Promo modal */
.fx-promo {
  position: fixed; inset: 0; z-index: 180;
  background: rgba(15,23,42,.55);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  animation: fxPromoFade .35s ease;
}
@keyframes fxPromoFade { from { opacity: 0; } to { opacity: 1; } }
.fx-promo__box {
  position: relative;
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  max-width: 420px;
  width: 100%;
  box-shadow: 0 24px 60px rgba(0,0,0,.28);
  animation: fxPromoPop .4s cubic-bezier(.22,1,.36,1);
}
@keyframes fxPromoPop {
  from { opacity: 0; transform: translateY(16px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.fx-promo__x, .fx-promo__minimize {
  position: absolute; top: 10px; z-index: 2;
  width: 32px; height: 32px; border: none; border-radius: 50%;
  background: rgba(0,0,0,.45); color: #fff; font-size: 1.15rem;
  cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center;
}
.fx-promo__x { right: 10px; }
.fx-promo__minimize { right: 48px; font-size: 1.1rem; font-weight: 700; }
.fx-promo__img { aspect-ratio: 16/10; background: #e2e8f0; }
.fx-promo__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fx-promo__body { padding: 20px 22px 24px; text-align: center; }
.fx-promo__body h3 { margin: 0 0 8px; font-size: 1.25rem; color: var(--fx-dark); }
.fx-promo__body p { margin: 0 0 18px; font-size: .9rem; color: var(--fx-muted); line-height: 1.5; }

/* Promo minimized pill */
.fx-promo-pill {
  position: fixed; bottom: 24px; left: 24px; z-index: 95;
  display: flex; align-items: center; gap: 10px;
  padding: 8px 14px 8px 8px;
  background: #fff; border: 1px solid var(--fx-border);
  border-radius: 999px;
  box-shadow: 0 10px 30px rgba(0,0,0,.14);
  cursor: pointer; max-width: min(280px, calc(100vw - 100px));
  animation: fxPillIn .35s ease;
  font-family: inherit;
}
@keyframes fxPillIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
.fx-promo-pill img {
  width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
}
.fx-promo-pill span {
  font-size: .82rem; font-weight: 650; color: var(--fx-dark);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fx-promo-pill:hover { box-shadow: 0 12px 34px rgba(0,0,0,.18); }

/* Cookies banner */
.fx-cookies {
  position: fixed;
  left: 16px; right: 16px;
  bottom: 96px;
  z-index: 85;
  display: flex; justify-content: center;
  pointer-events: none;
  animation: fxCookiesIn .4s ease;
}
@keyframes fxCookiesIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
.fx-cookies__inner {
  pointer-events: auto;
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  max-width: 720px; width: 100%;
  background: #fff;
  border: 1px solid var(--fx-border);
  border-radius: 12px;
  padding: 14px 16px;
  box-shadow: 0 12px 40px rgba(0,0,0,.14);
}
.fx-cookies__text { flex: 1; min-width: 200px; }
.fx-cookies__text strong { display: block; font-size: .92rem; color: var(--fx-dark); margin-bottom: 4px; }
.fx-cookies__text p { margin: 0; font-size: .8rem; color: var(--fx-muted); line-height: 1.45; }
.fx-cookies__actions { display: flex; gap: 8px; flex-shrink: 0; }
.fx-cookies__accept, .fx-cookies__reject {
  border: none; border-radius: 6px; padding: 10px 16px;
  font-size: .82rem; font-weight: 600; cursor: pointer; font-family: inherit;
}
.fx-cookies__accept { background: var(--fx); color: #fff; }
.fx-cookies__reject { background: #f1f5f9; color: #475569; }
.fx-cookies__accept:hover { filter: brightness(1.06); }
.fx-cookies__reject:hover { background: #e2e8f0; }

/* Responsive */
@media (max-width: 900px) {
  .fx-mort, .fx-about, .fx-contact { grid-template-columns: 1fr; }
  .fx-search__fields { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .fx-nav__burger { display: block; }
  .fx-nav__links { display: none; position: absolute; top: 64px; left: 0; right: 0; background: #fff; flex-direction: column; padding: 16px 20px 20px; gap: 14px; box-shadow: 0 8px 24px rgba(0,0,0,.1); }
  .fx-nav__links.open { display: flex; }
  .fx-hero { min-height: 480px; }
  .fx-sec { padding: 52px 0; }
  .fx-cookies { bottom: 88px; left: 10px; right: 10px; }
  .fx-cookies__inner { flex-direction: column; align-items: stretch; }
  .fx-cookies__actions { width: 100%; }
  .fx-cookies__actions button { flex: 1; }
  .fx-promo-pill { left: 12px; bottom: 16px; max-width: calc(100vw - 90px); }
  .fx-wa { bottom: 16px; right: 16px; }
}

.fx-map { background: #fff; }
.fx-map__head { text-align: center; padding: 56px 20px 20px; }
.fx-map__head h2 { margin: 8px 0 8px; }
.fx-map__head p { color: #64748b; margin: 0; }
.fx-map__frame { width: 100%; height: min(420px, 55vh); }
.fx-map__frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.fx-social-float {
  position: fixed; left: 18px; top: 50%; transform: translateY(-50%);
  z-index: 55; display: flex; flex-direction: column; gap: 10px;
}
.fx-social-float__btn {
  width: 44px; height: 44px; border-radius: 12px;
  display: grid; place-items: center;
  background: #fff; color: #0f172a;
  border: 1px solid #e2e8f0;
  box-shadow: 0 10px 24px rgba(15,23,42,.12);
  transition: transform .2s ease, background .2s ease, color .2s ease;
}
.fx-social-float__btn:hover { transform: translateY(-2px) scale(1.04); background: #0d9488; color: #fff; border-color: #0d9488; }
@media (max-width: 720px) {
  .fx-social-float { left: 12px; top: auto; bottom: 100px; transform: none; }
}

/* ---- Piloto editor bridges ---- */
html, body { margin: 0; }
body.fx { font-family: 'Segoe UI', system-ui, sans-serif; }
#app.fx { min-height: 100vh; }
.section { position: relative; }
.section-handle {
  display: none;
  position: absolute; top: 8px; left: 50%; transform: translateX(-50%);
  z-index: 40; font-size: 11px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: #0f172a; background: #fff;
  border: 1px solid #e2e8f0; border-radius: 999px; padding: 4px 10px;
  box-shadow: 0 4px 14px rgba(15,23,42,.12); cursor: grab;
}
body.is-editing .section-handle { display: inline-flex; }
body.is-editing .section { outline: 1px dashed transparent; }
body.is-editing .section:hover { outline-color: color-mix(in srgb, var(--fx) 45%, #94a3b8); }
.media-empty {
  min-height: 160px; display: grid; place-items: center;
  background: #f1f5f9; color: #64748b; font-size: .85rem; font-weight: 600;
}
.fx-card__desc {
  margin: 10px 0 0; font-size: .8rem; color: var(--fx-muted);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.fx-card[hidden] { display: none !important; }

/* Nav shell (replaces topbar) */
.fx-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: #fff; box-shadow: 0 1px 0 var(--fx-border);
}
.fx-nav .fx-inner.fx-nav__row { display: flex; align-items: center; justify-content: space-between; height: 64px; gap: 16px; }
.fx-nav__brand { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 1.05rem; color: var(--fx-dark); text-decoration: none; }
.fx-nav__actions { display: flex; align-items: center; gap: 10px; }
.fx-nav .btn-login {
  font-size: .82rem; font-weight: 600; color: #64748b; padding: 8px 10px;
}
.fx-nav #btn-wa {
  background: var(--fx); color: #fff !important; padding: 8px 14px; border-radius: 6px; font-weight: 600; font-size: .82rem;
}
body.is-editing .fx-nav { top: 56px; }

/* Footer */
.fx-foot { background: #0B1024; color: rgba(255,255,255,.72); padding: 44px 0 30px; font-size: .85rem; }
.fx-foot__row { display: flex; align-items: flex-start; justify-content: space-between; gap: 28px; flex-wrap: wrap; }
.fx-foot__brand { display: inline-flex; align-items: center; text-decoration: none; }
.fx-foot__logo { width: min(220px, 70vw); height: auto; display: block; }
.fx-foot__copyblock { flex: 1; min-width: 220px; }
.fx-foot strong { display: block; color: #fff; font-size: 1rem; margin-bottom: 6px; }
.fx-foot__copy { margin: 8px 0 0; font-size: .78rem; color: rgba(215,174,93,.75); }
.fx-foot__meta { margin: 10px 0 0; opacity: .85; }
.fx-nav__logo { height: 40px; width: auto; object-fit: contain; }
@media (max-width: 720px) {
  .fx-foot__row { flex-direction: column; gap: 18px; }
  .fx-foot__logo { width: min(200px, 80vw); }
}

/* Solos / modules fallback */
.solos-layer { position: absolute; inset: 0; pointer-events: none; z-index: 30; }
.solos-layer .solo { pointer-events: auto; position: absolute; }
.solo-button { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border-radius: 6px; background: var(--fx); color: #fff; font-weight: 600; }
.solo-image img { width: 100%; display: block; border-radius: 8px; }
.solo-empty { padding: 24px; background: #f1f5f9; border-radius: 8px; text-align: center; color: #64748b; }
.solo-remove, .module-remove {
  display: none; border: none; background: #ef4444; color: #fff; border-radius: 999px;
  width: 22px; height: 22px; font-size: 12px; cursor: pointer; line-height: 1;
}
body.is-editing .solo-remove, body.is-editing .module-remove { display: inline-flex; align-items: center; justify-content: center; }
.section-module { padding: 56px 0; background: #fff; }
.section-module .section-inner { max-width: 1140px; margin: 0 auto; padding: 0 20px; }
.section-module .kicker { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--fx); }
.section-module h2 { margin: 8px 0 20px; font-size: 1.6rem; }
.module-cta { text-align: center; }
.btn-solid { display: inline-flex; align-items: center; justify-content: center; padding: 12px 20px; border-radius: 6px; background: var(--fx); color: #fff; font-weight: 600; text-decoration: none; }
.mod-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
.mod-gallery-media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 8px; }
.mod-video video, .mod-video iframe { width: 100%; min-height: 280px; border: 0; border-radius: 10px; }
.module-quote blockquote { font-size: 1.35rem; margin: 0 0 12px; }
.mod-counters { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; text-align: center; }
.mod-counter strong { display: block; font-size: 2rem; color: var(--fx); }
.wa-float {
  position: fixed; right: 24px; bottom: 24px; z-index: 90;
  display: inline-flex; align-items: center; gap: 8px;
  background: #25d366; color: #fff; padding: 12px 16px; border-radius: 999px;
  font-weight: 700; text-decoration: none; box-shadow: 0 8px 24px rgba(37,211,102,.35);
}
.wa-float-dot { width: 8px; height: 8px; border-radius: 50%; background: #fff; }
.brand-logo-wrap { position: relative; display: inline-flex; }
.logo-resize { display: none; }
body.is-editing .logo-resize {
  display: block; position: absolute; right: -6px; bottom: -6px;
  width: 12px; height: 12px; background: var(--fx); border-radius: 2px; cursor: nwse-resize;
}
.pl-el { --el-dx: 0px; --el-dy: 0px; }


/* Cancún & Playa brand tweaks */
.fx-nav #btn-wa { background: var(--fx); color: #16163f !important; }
.fx-search__btn, .fx-btn { color: #16163f; }
.fx-badge--type[data-t="SALE"], .fx-badge--type[data-t="EXCLUSIVE_SALE"] { background: #16163f; }
.fx-sec__head span, .fx-tag { color: #B8862F; }
.fx-card__foot strong, .fx-mort__result strong { color: #B8862F; }
.fx-agent__av--photo {
  overflow: hidden;
  padding: 0;
  background: #16163f;
  width: 96px;
  height: 96px;
}
.fx-agent__av--photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 10%;
  display: block;
}
body.fx-modal-open { overflow: hidden; }
.fx-wa { z-index: 120; }
body.is-editing .fx-wa { display: none; }
.wa-float { display: none !important; }
