body{margin:0;background:var(--surface-canvas);font-family:var(--font-core)}
#root{min-height:100vh}
img{dynamic-range-limit:standard}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-active);text-decoration:underline;text-underline-offset:3px}
.cm-header{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--border-hairline)}
.cm-header-in{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter-page);height:68px;display:flex;align-items:center;gap:32px}
.cm-wide .cm-header-in{max-width:none;padding:0 28px;gap:24px}
.cm-logo{flex:none;display:flex;align-items:center;height:68px}.cm-logo img{height:19px;display:block}
.cm-nav{flex:none;display:flex;align-items:center;gap:24px;margin-right:auto;height:68px}
.cm-nav a{display:inline-flex;align-items:center;gap:7px;line-height:1;font-size:var(--fs-body-sm);font-weight:500;color:var(--text-muted);text-decoration:none}
.cm-nav a:hover{color:var(--text-heading);text-decoration:none}
.cm-header-right{flex:none;position:relative;display:flex;align-items:center;gap:12px}
.cm-header-right button{white-space:nowrap}
.cm-account{display:flex;align-items:center;gap:8px;height:38px;padding:0 6px 0 12px;border:1px solid var(--border-hairline);border-radius:var(--radius-full);background:var(--surface-card);color:var(--text-body);cursor:pointer}
.cm-account:hover{box-shadow:var(--shadow-rest)}
.cm-avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);background:var(--text-heading);color:#fff;font-size:11px;font-weight:700;letter-spacing:.3px}
.cm-menu{position:absolute;top:48px;right:0;min-width:232px;background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-float);padding:8px;display:flex;flex-direction:column;z-index:50}
.cm-menu-head{padding:8px 12px 4px;font-size:var(--fs-caption-sm);color:var(--text-muted)}
.cm-menu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:none;background:none;border-radius:var(--radius-button);font-family:var(--font-core);font-size:var(--fs-body-sm);color:var(--text-body);text-align:left;cursor:pointer}
.cm-menu-item:hover{background:var(--surface-strong)}
.cm-menu-sep{height:1px;background:var(--border-hairline);margin:6px 4px}
.cm-card{cursor:pointer;display:block;color:inherit;text-decoration:none}.cm-card:hover{color:inherit}
.cm-card-photo{position:relative;aspect-ratio:1/1;border-radius:var(--radius-photo);overflow:hidden;background:var(--surface-strong)}
.cm-card-photo img{width:100%;height:100%;object-fit:cover;display:block}
.cm-card-photo.cm-slider{touch-action:pan-y}
.cm-card-photo.cm-slider img{position:absolute;inset:0;display:none}
.cm-card-photo.cm-slider img.is-on{display:block}
.cm-card-badge{position:absolute;top:12px;left:12px}
.cm-card-heart{position:absolute;top:10px;right:10px}
.cm-arrow{position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);border:none;background:rgba(255,255,255,.92);color:var(--ink-900);box-shadow:var(--shadow-rest);cursor:pointer;opacity:0;transition:opacity var(--dur-base,180ms) ease}
.cm-arrow.is-prev{left:10px}.cm-arrow.is-next{right:10px}
.cm-card:hover .cm-arrow{opacity:1}.cm-arrow:hover{background:#fff}
.cm-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:5px}
.cm-dots span{width:6px;height:6px;border-radius:var(--radius-full);background:rgba(255,255,255,.6);cursor:pointer}
.cm-dots span.is-on{background:#fff}
.cm-card-body{padding-top:12px;display:flex;flex-direction:column;gap:2px}
.cm-card-title{font-size:var(--fs-title-md);font-weight:var(--fw-title-md);color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-card-sub{font-size:var(--fs-body-sm);color:var(--text-muted)}
.cm-card-price{margin-top:4px;font-size:var(--fs-title-md);font-weight:700;color:var(--text-price)}
.cm-footer{margin-top:var(--space-section);border-top:1px solid var(--border-hairline)}
.cm-footer-in{max-width:var(--container-max);margin:0 auto;padding:52px var(--gutter-page) 36px;display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:var(--space-lg);align-items:start}
.cm-footer-brand{display:flex;flex-direction:column;align-items:flex-start}
.cm-footer-brand img{height:18px;display:block;margin:0 0 14px}
.cm-footer-tag{margin:0;font-size:var(--fs-body-sm);color:var(--text-muted)}
.cm-footer-wa{display:inline-flex;align-items:center;gap:7px;margin-top:12px;font-size:var(--fs-body-sm);font-weight:600;color:var(--text-heading)}
.cm-footer-wa:hover{color:var(--accent)}
.cm-footer-h{font-size:var(--fs-title-sm);font-weight:var(--fw-title-sm);color:var(--text-heading);margin-bottom:14px}
.cm-footer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.cm-footer-list a{font-size:var(--fs-body-sm);color:var(--text-body)}
.cm-footer-legal{border-top:1px solid var(--border-hairline);max-width:var(--container-max);margin:0 auto;padding:16px var(--gutter-page) 22px;display:flex;align-items:center;gap:20px;font-size:var(--fs-caption-sm);color:var(--text-muted)}
.cm-footer-social{display:flex;gap:16px;align-items:center;margin-left:auto}
.cm-footer-social a{color:var(--text-muted);display:inline-flex}
.cm-footer-social a:hover{color:var(--text-heading)}
.cm-agency{font-family:'Cormorant Garamond',Georgia,serif;font-size:18px;line-height:1;color:rgba(14,20,32,.45);text-decoration:none;transition:color var(--dur-base,180ms) ease}
.cm-agency:hover{color:rgba(14,20,32,.75);text-decoration:none}
.cm-agency i{font-style:normal;color:#C4876A}
.cm-bar{display:none}
.cm-roles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cm-role{display:flex;gap:12px;align-items:flex-start;text-align:left;padding:16px;cursor:pointer;border-radius:var(--radius-card);background:var(--surface-card);border:1px solid var(--border-hairline);font-family:var(--font-core)}
.cm-role.is-on{border:2px solid var(--text-heading);padding:15px}
.cm-role-t{display:block;font-size:var(--fs-title-sm);font-weight:600;color:var(--text-heading)}
.cm-role-s{display:block;margin-top:2px;font-size:var(--fs-body-sm);color:var(--text-muted)}
/* Tablet y móvil: los 40px de margen lateral del escritorio dejan las fotos y
   las fichas demasiado angostas en pantallas pequeñas. */
@media (max-width:1100px){:root{--gutter-page:24px}}
@media (max-width:820px){:root{--gutter-page:16px}}
@media (max-width:1080px){.cm-footer-in{grid-template-columns:1fr 1fr}}
@media (max-width:820px){
 .cm-nav,.cm-hide-sm{display:none}
 .cm-logo{margin-right:auto}
 .cm-arrow{opacity:1}
 .cm-footer-legal{padding-bottom:88px;flex-wrap:wrap}
 .cm-roles{grid-template-columns:1fr}
 body.cm-sheet-open .cm-bar{display:none}
 .cm-bar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:60;gap:10px;align-items:center}
 .cm-bar-main{flex:1;display:flex;justify-content:space-around;background:rgba(255,255,255,.82);backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(18px) saturate(180%);border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-full);box-shadow:var(--shadow-float);padding:8px 4px}
 .cm-bar-main a{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:64px;min-height:44px;justify-content:center;font-size:11px;font-weight:600;color:var(--text-muted);text-decoration:none}
 .cm-bar-main a:active{color:var(--text-heading)}
 .cm-bar-wa{flex:none;width:56px;height:56px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--verified);color:#fff;box-shadow:var(--shadow-float);text-decoration:none}
 .cm-bar-wa:hover,.cm-bar-wa:active{color:#fff;text-decoration:none}
}
@media (max-width:520px){.cm-footer-in{grid-template-columns:1fr;gap:28px}:root{--gutter-page:14px}}
/* Overlay de gestos de Google Maps: no aporta y tapa el mapa. */
.gm-style-moc,.gm-style-mot{display:none!important;opacity:0!important;pointer-events:none!important}

.cm-chips{display:flex;flex-wrap:wrap;gap:8px}
.cm-chip{border:1px solid var(--border-hairline);background:var(--surface-card);color:var(--text-body);font-family:var(--font-core);font-size:var(--fs-body-sm);cursor:pointer;border-radius:var(--radius-full);padding:8px 14px}
.cm-chip:hover{background:var(--surface-strong)}
.cm-chip.is-on{background:var(--text-heading);color:#fff;border-color:var(--text-heading)}
.cm-flabel{display:inline-flex;align-items:center;gap:7px;margin-bottom:-1px;font-size:var(--fs-caption);font-weight:var(--fw-caption);color:var(--text-muted)}
.cm-gaccount{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--radius-card);background:var(--surface-soft)}
.cm-gaccount>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column;font-size:var(--fs-caption-sm);color:var(--text-muted);overflow:hidden}
.cm-gaccount strong{font-size:var(--fs-body-sm);color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-gavatar{flex:none;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-full);background:var(--text-heading);color:#fff;overflow:hidden}
.cm-gavatar img{width:100%;height:100%;object-fit:cover}
.cm-linkbtn{border:none;background:none;padding:0;font-family:var(--font-core);font-size:var(--fs-body-sm);font-weight:600;color:var(--accent);cursor:pointer}
.cm-linkbtn:hover{color:var(--accent-active);text-decoration:underline;text-underline-offset:3px}
.cm-p-switch{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:4px}
.cm-p-switch>span{display:flex;flex-direction:column;font-size:var(--fs-body-sm);color:var(--text-muted)}
.cm-p-switch strong{font-size:var(--fs-title-sm);color:var(--text-heading)}
.cm-p-dlg{display:flex;gap:10px;justify-content:flex-end}
.cm-err{font-size:var(--fs-caption-sm);color:var(--text-error,#c0341c)}
.cm-hint{font-size:var(--fs-caption-sm);color:var(--text-muted)}
/* Skeleton genérico: cualquier elemento con esta clase se ve como una barra
   que respira, sin texto, mientras carga. No había ninguno antes en el sitio;
   las tarjetas de propiedad, por ejemplo, solo mostraban una caja gris fija. */
.cm-skel{background:linear-gradient(90deg,var(--surface-strong) 25%,var(--surface-soft) 37%,var(--surface-strong) 63%);background-size:400% 100%;animation:cm-shimmer 1.4s ease infinite;color:transparent!important;pointer-events:none;border-color:transparent!important}
.cm-skel *{visibility:hidden}
@keyframes cm-shimmer{0%{background-position:100% 50%}100%{background-position:0% 50%}}
@media (prefers-reduced-motion:reduce){.cm-skel{animation:none;background:var(--surface-strong)}}
