/* PROP v3 · sistema de diseño del rediseño, generado desde los CSS de los prototipos. Todo vive bajo la clase .v3 del <html>, que el layout pone solo en las páginas ya rediseñadas: así no choca con los estilos del sitio actual. Orden: tokens, componentes, fichas, listados, home (bajo .v3-home), páginas institucionales y barrios (bajo .v3-inst), guías de zona (bajo .v3-zona), perfiles de asesor y desarrollador (bajo .v3-perfil), celular e interacción. Lo que es propio del tema va en theme.css. */
/*  --- tokens-fonts.css ---  *//* PROP · tokens del rediseño v3
   Fuente: guía de marca PROP (skill prop-brand). Todo color, tipografía y
   medida del sitio sale de acá; los componentes no usan valores sueltos. */

@font-face {
    font-family: "Gotham";
    src: url("../themes/prop/assets/fonts/prop/Gotham-Book.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Gotham";
    src: url("../themes/prop/assets/fonts/prop/Gotham-Medium.woff2") format("woff2");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

.v3 {
    /* Color institucional y de soporte */
    --ink: #1a1a1a;
    --body: #5b5b5b;
    --muted: #8c8c8c;
    --line: #dcdcdc;
    --surface: #ededed;
    --surface-soft: #f6f6f6;
    --white: #ffffff;
    --on-dark-muted: #cfcfcf;

    /* Código semántico por operación */
    --venta: #f05b72;
    --venta-ink: #c93a52;      /* texto chico sobre blanco con contraste AA */
    --venta-soft: #fdeef0;
    --alquiler: #6f4ea0;
    --alquiler-ink: #6f4ea0;
    --alquiler-soft: #f1edf7;

    /* Acento activo: por defecto venta; [data-op] lo cambia */
    --accent: var(--venta);
    --accent-ink: var(--venta-ink);
    --accent-soft: var(--venta-soft);

    /* Estados */
    --error: #c62828;
    --ok: #1a1a1a;
    --focus: 0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);

    /* Tipografía: una familia, dos pesos */
    --font: "Gotham", "Montserrat", Arial, sans-serif;
    --w-book: 400;
    --w-medium: 500;

    --fs-xs: 0.75rem;                               /* 12 etiquetas */
    --fs-sm: 0.875rem;                              /* 14 secundario */
    --fs-md: 1rem;                                  /* 16 texto */
    --fs-lg: clamp(1.125rem, 1.05rem + 0.3vw, 1.25rem);   /* 18-20 */
    --fs-xl: clamp(1.25rem, 1.15rem + 0.4vw, 1.5rem);     /* 20-24 */
    --fs-2xl: clamp(1.5rem, 1.25rem + 0.9vw, 2rem);       /* 24-32 */
    --fs-3xl: clamp(2rem, 1.5rem + 1.8vw, 2.875rem);      /* 32-46 hero */

    --lh-tight: 1.1;
    --lh-snug: 1.3;
    --lh-body: 1.6;
    --tracking-label: 0.05em;

    /* Espaciado, escala de 4 */
    --s-1: 4px;
    --s-2: 8px;
    --s-3: 12px;
    --s-4: 16px;
    --s-5: 24px;
    --s-6: 32px;
    --s-7: 48px;
    --s-8: 64px;
    --s-9: 96px;

    /* Radios: tres valores + la burbuja de marca */
    --r-sm: 6px;
    --r-md: 12px;
    --r-pill: 6px;            /* botones, chips y etiquetas: apenas redondeados */
    --r-bubble: 50% 50% 50% 0;

    /* Sombras y movimiento */
    --shadow-1: 0 1px 2px rgb(0 0 0 / 0.06), 0 2px 8px rgb(0 0 0 / 0.05);
    --shadow-2: 0 8px 32px rgb(0 0 0 / 0.12);
    --t-fast: 140ms ease;
    --t-base: 240ms cubic-bezier(0.2, 0.7, 0.2, 1);

    /* Layout */
    --container: 1280px;
    --gutter: clamp(16px, 4vw, 40px);
    --header-h: 64px;
}

/* Monitores grandes (2K o 1920 px y más): el contenido se abre a 1520 px para no quedar
   como una columna angosta en el medio de la pantalla. */
@media (min-width: 1600px) {
    .v3 { --container: 1520px; }
}

/* Breakpoints (mobile-first, solo min-width): 640 · 1024 · 1440 */

.v3 [data-op="venta"] {
    --accent: var(--venta);
    --accent-ink: var(--venta-ink);
    --accent-soft: var(--venta-soft);
}

.v3 [data-op="alquiler"] {
    --accent: var(--alquiler);
    --accent-ink: var(--alquiler-ink);
    --accent-soft: var(--alquiler-soft);
}

/* Proyectos usan salmón (decisión vigente: el verde no se usa) */
.v3 [data-op="proyecto"] {
    --accent: var(--venta);
    --accent-ink: var(--venta-ink);
    --accent-soft: var(--venta-soft);
}

@media (prefers-reduced-motion: reduce) {
    .v3 {
        --t-fast: 0ms linear;
        --t-base: 0ms linear;
    }
}

/*  --- components.css ---  */

/* PROP · componentes del rediseño v3
   Usa solo variables de tokens.css. Una clase por componente, con
   modificadores --variante. Sin !important. */

/* ---------- Base ---------- */

.v3 *,
.v3 *::before,
.v3 *::after {
    box-sizing: border-box;
}

.v3 {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

.v3 body {
    margin: 0;
    font-family: var(--font);
    font-weight: var(--w-book);
    font-size: var(--fs-md);
    line-height: var(--lh-body);
    color: var(--body);
    background: var(--white);
    -webkit-font-smoothing: antialiased;
}

.v3 h1, .v3 h2, .v3 h3, .v3 h4 {
    margin: 0;
    color: var(--ink);
    font-weight: var(--w-medium);
    line-height: var(--lh-snug);
}

.v3 p {
    margin: 0 0 var(--s-4);
}

.v3 a {
    color: inherit;
}

/* Si Safari igual detecta un dato y lo vuelve link, va con el subrayado gris y fino del sitio, no el del navegador */
.v3 a[x-apple-data-detectors] {
    color: inherit !important;
    text-decoration: underline 1.5px var(--line) !important;
    text-underline-offset: 4px;
}

.v3 img {
    display: block;
    max-width: 100%;
}

.v3 button,
.v3 input,
.v3 select,
.v3 textarea {
    font: inherit;
    color: inherit;
}

.v3 :focus-visible {
    outline: none;
    box-shadow: var(--focus);
    border-radius: var(--r-sm);
}

.v3 .container {
    width: 100%;
    max-width: var(--container);
    margin-inline: auto;
    padding-inline: var(--gutter);
}

.v3 .visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

/* ---------- Título de sección: etiqueta + título ----------
   La etiqueta dice dónde estás (chica, en mayúscula, con el punto-burbuja en el color de la operación);
   el título dice qué ofrecemos (grande, en Book). El tamaño se fija en .title y lo hereda el título. */

.v3 .title {
    display: grid;
    justify-items: start;
    gap: 0;
    font-size: clamp(1.375rem, 1.2rem + 0.75vw, 1.875rem);
    line-height: 1.1;
    letter-spacing: -0.02em;
}

.v3 .title__section {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    margin-bottom: var(--s-2);
    color: var(--ink);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    line-height: 1;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* Punto-burbuja: subido 1 px para quedar centrado con las mayúsculas de Gotham */

.v3 .title__section::before {
    content: "";
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: var(--r-bubble);
    background: var(--accent);
    transform: translateY(-1px);
}

.v3 .title__main {
    font-weight: var(--w-book);
    color: var(--ink);
    text-wrap: balance; /* si el título baja de línea, reparte las palabras y no deja una sola abajo */
}

.v3 .title--ink .title__section::before {
    background: var(--ink);
}

.v3 .title--sm {
    font-size: clamp(1.375rem, 1.25rem + 0.5vw, 1.625rem);
}

.v3 .title--on-dark .title__section,
.v3 .title--on-dark .title__main {
    color: var(--white);
}

.v3 .label {
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: var(--muted);
}

/* ---------- Botones ---------- */

.v3 .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--s-2);
    min-height: 48px;
    padding: 0 var(--s-5);
    border: 1px solid transparent;
    border-radius: var(--r-pill);
    font-size: var(--fs-md);
    font-weight: var(--w-medium);
    text-decoration: none;
    cursor: pointer;
    transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast), transform var(--t-fast);
    white-space: nowrap;
}

.v3 .btn:active {
    transform: scale(0.98);
}

.v3 .btn svg {
    width: 20px;
    height: 20px;
    flex: none;
}

.v3 .btn--primary {
    background: var(--ink);
    color: var(--white);
}

.v3 .btn--accent {
    background: var(--accent);
    color: var(--white);
}

.v3 .btn--secondary {
    background: var(--white);
    color: var(--ink);
    border-color: var(--ink);
}

.v3 .btn--ghost {
    background: transparent;
    color: var(--ink);
    padding-inline: var(--s-3);
}

.v3 .btn--sm {
    min-height: 36px;
    padding: 0 var(--s-4);
    font-size: var(--fs-sm);
}

.v3 .btn--icon {
    width: 44px;
    min-height: 44px;
    padding: 0;
}

.v3 .btn--block {
    width: 100%;
}

.v3 .btn--whatsapp {
    background: var(--white);
    color: var(--ink);
    border-color: var(--line);
}

.v3 .btn--whatsapp svg {
    color: #25d366;
}

/* ---------- Badges y chips ---------- */

.v3 .badge {
    display: inline-flex;
    align-items: center;
    gap: var(--s-1);
    padding: 4px 10px;
    border-radius: var(--r-pill);
    background: var(--accent);
    color: var(--white);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: 0.02em;
    line-height: 1.4;
}

.v3 .badge--soft {
    background: var(--accent-soft);
    color: var(--accent-ink);
}

.v3 .badge--neutral {
    background: var(--white);
    color: var(--ink);
}

.v3 .badge--dark {
    background: var(--ink);
    color: var(--white);
}

.v3 .op-dot {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: var(--ink);
}

.v3 .op-dot::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: var(--r-bubble);
    background: var(--accent);
}

.v3 .chip {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    min-height: 40px;
    padding: 0 var(--s-4);
    border: 1px solid var(--line);
    border-radius: var(--r-pill);
    background: var(--white);
    color: var(--ink);
    font-size: var(--fs-sm);
    cursor: pointer;
    transition: border-color var(--t-fast), background var(--t-fast);
}

.v3 .chip[aria-pressed="true"],
.v3 .chip.is-active {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--white);
}

.v3 .chip--removable::after {
    content: "×";
    font-size: 1.1em;
    line-height: 1;
}

/* ---------- Datos clave (specs) ---------- */

.v3 .specs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2) var(--s-5);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .specs li {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    color: var(--ink);
    font-size: var(--fs-sm);
}

.v3 .specs svg {
    width: 18px;
    height: 18px;
    color: var(--muted);
}

/* ---------- Precio ---------- */

.v3 .price {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--s-1) var(--s-3);
}

.v3 .price__from {
    font-size: var(--fs-sm);
    color: var(--body);
}

.v3 .price__value {
    font-size: var(--fs-xl);
    font-weight: var(--w-medium);
    color: var(--ink);
    letter-spacing: -0.01em;
}

.v3 .price__old {
    font-size: var(--fs-sm);
    color: var(--muted);
    text-decoration: line-through;
}

.v3 .price--deal .price__value {
    color: var(--accent-ink);
}

/* ---------- Cards ---------- */

.v3 .card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--white);
    border-radius: var(--r-md);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: box-shadow var(--t-base), transform var(--t-base);
}

.v3 .card__media {
    position: relative;
    aspect-ratio: 4 / 3;
    background: var(--surface);
    border-radius: var(--r-md);
    overflow: hidden;
}

.v3 .card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.v3 .card__badges {
    position: absolute;
    top: var(--s-3);
    left: var(--s-3);
    right: calc(var(--s-2) + 48px); /* deja libre el botón de guardar: si no entran, bajan de línea */
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-1);
}

.v3 .card__save {
    position: absolute;
    top: var(--s-2);
    right: var(--s-2);
    z-index: 3;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 50%;
    background: rgb(255 255 255 / 0.92);
    color: var(--ink);
    box-shadow: var(--shadow-1);
    cursor: pointer;
    transition: transform var(--t-fast), color var(--t-fast);
}

.v3 .card__save svg {
    width: 18px;
    height: 18px;
    transition: fill var(--t-fast);
}

.v3 .card__body {
    display: grid;
    gap: var(--s-2);
    padding: var(--s-4) var(--s-1) var(--s-2);
}

.v3 .card__title {
    font-size: var(--fs-lg);
    font-weight: var(--w-medium);
    color: var(--ink);
}

.v3 .card__place {
    font-size: var(--fs-sm);
    color: var(--body);
}

.v3 .card__status {
    font-size: var(--fs-sm);
    color: var(--ink);
}

/* Caja plana de la marca (#EDEDED, sin borde) */

.v3 .box {
    padding: var(--s-5);
    border-radius: var(--r-md);
    background: var(--surface-soft);
}

/* ---------- Campos de formulario ---------- */

.v3 .field {
    display: grid;
    gap: var(--s-1);
}

.v3 .field__label {
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    color: var(--ink);
}

.v3 .field__input {
    width: 100%;
    min-height: 52px;
    padding: 0 var(--s-4);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    background: var(--white);
    color: var(--ink);
    font-size: var(--fs-md);   /* 16px: iOS no hace zoom */
    transition: border-color var(--t-fast), box-shadow var(--t-fast);
}

.v3 textarea.field__input {
    min-height: 112px;
    padding: var(--s-3) var(--s-4);
    resize: vertical;
    line-height: var(--lh-body);
}

.v3 .field__input::placeholder {
    color: var(--muted);
}

.v3 .field__input:hover {
    border-color: var(--muted);
}

.v3 .field__input:focus {
    outline: none;
    border-color: var(--ink);
    box-shadow: none; /* sutil, como el buscador */
}

.v3 .field__hint {
    font-size: var(--fs-xs);
    color: var(--muted);
}

.v3 .field__error {
    display: none;
    font-size: var(--fs-xs);
    color: var(--error);
}

.v3 .field.is-invalid .field__input {
    border-color: var(--error);
}

.v3 .field.is-invalid .field__error {
    display: block;
}

.v3 .field.is-valid .field__input {
    border-color: var(--ink);
}

.v3 .field-row {
    display: grid;
    gap: var(--s-3);
}

@media (min-width: 640px) {
    .v3 .field-row--2 {
        grid-template-columns: 1fr 1fr;
    }
}

.v3 .check {
    display: flex;
    gap: var(--s-2);
    align-items: flex-start;
    font-size: var(--fs-sm);
}

.v3 .check input {
    width: 18px;
    height: 18px;
    margin-top: 2px;
    accent-color: var(--ink);
}

/* ---------- Pasos (discovery) ---------- */

.v3 .steps {
    display: flex;
    gap: var(--s-1);
}

.v3 .steps__bar {
    flex: 1;
    height: 3px;
    border-radius: var(--r-pill);
    background: var(--surface);
    overflow: hidden;
}

.v3 .steps__bar.is-done {
    background: var(--ink);
}

.v3 .steps__bar.is-current {
    background: linear-gradient(90deg, var(--ink) 50%, var(--surface) 50%);
}

/* ---------- Avance de obra (solo con dato confirmado) ---------- */

.v3 .progress {
    display: grid;
    gap: var(--s-2);
}

.v3 .progress__track {
    height: 6px;
    border-radius: var(--r-pill);
    background: var(--surface);
    overflow: hidden;
}

.v3 .progress__fill {
    height: 100%;
    background: var(--venta);
    border-radius: inherit;
}

/* ---------- Asesor ---------- */

.v3 .agent {
    display: flex;
    align-items: center;
    gap: var(--s-3);
}

.v3 .agent__photo {
    flex: none;
    width: 56px;
    height: 56px;
    border-radius: var(--r-bubble);
    background: var(--ink);
    object-fit: cover;
    display: grid;
    place-items: center;
    overflow: hidden;
}

.v3 .agent__photo svg {
    width: 26px;
    height: 26px;
}

.v3 .agent__name {
    font-weight: var(--w-medium);
    color: var(--ink);
}

.v3 .agent__role {
    font-size: var(--fs-sm);
}

/* ---------- Header ---------- */

.v3 .site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    height: var(--header-h);
    background: rgb(255 255 255 / 0.92);
    backdrop-filter: saturate(1.4) blur(12px);
    border-bottom: 1px solid transparent;
    transition: border-color var(--t-base);
}

.v3 .site-header.is-scrolled {
    border-bottom-color: var(--surface);
}

.v3 .site-header__inner {
    display: flex;
    align-items: center;
    gap: var(--s-5);
    height: 100%;
}

.v3 .site-header__logo img {
    height: 26px;
    width: auto;
}

@media (min-width: 1024px) { .v3 .site-header__logo img { height: 28px; } }

/* Menú: a la izquierda las tres puertas principales; a la derecha, en gris, lo secundario.
   La sección donde estás lleva adelante el punto-burbuja salmón, como las etiquetas de sección. */

.v3 .site-nav {
    display: none;
    flex: 1;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-4);
    margin-left: var(--s-4);
}

.v3 .site-nav__main,
.v3 .site-nav__more { display: flex; align-items: center; gap: var(--s-1); }

.v3 .site-nav a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: var(--s-2) var(--s-3);
    font-size: var(--fs-sm);
    color: var(--ink);
}

.v3 .site-nav__main a { font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .site-nav__more a { color: var(--body); }

.v3 .site-nav a[aria-current="page"]::before {
    content: "";
    width: 7px;
    height: 7px;
    flex: none;
    border-radius: var(--r-bubble);
    background: var(--accent);
}

.v3 .site-header__owner { display: none; }

@media (min-width: 1024px) { .v3 .site-header__owner { display: inline-flex; margin-right: var(--s-2); } }

.v3 .site-header__actions {
    display: flex;
    align-items: center;
    gap: var(--s-1);
    margin-left: auto;
}

@media (min-width: 1024px) { .v3 .site-header__actions { margin-left: var(--s-4); } }

.v3 .site-header__menu {
    display: inline-flex;
}

@media (min-width: 1024px) {
    .v3 .site-nav {
        display: flex;
    }

    .v3 .site-header__menu {
        display: none;
    }
}

/* ---------- Barra de acción fija (mobile) ---------- */

.v3 .action-bar {
    position: sticky;
    bottom: 0;
    z-index: 40;
    display: flex;
    gap: var(--s-2);
    padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom));
    background: rgb(255 255 255 / 0.96);
    backdrop-filter: blur(12px);
    border-top: 1px solid var(--surface);
}

.v3 .action-bar .btn {
    flex: 1;
}

@media (min-width: 1024px) {
    .v3 .action-bar {
        display: none;
    }
}

/* ---------- Tabla de tipologías ---------- */

.v3 .units {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm);
}

.v3 .units th {
    padding: var(--s-3) var(--s-2);
    text-align: left;
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: var(--muted);
    border-bottom: 1px solid var(--line);
}

.v3 .units td {
    padding: var(--s-4) var(--s-2);
    border-bottom: 1px solid var(--surface);
    color: var(--ink);
}

.v3 .units tr:hover td {
    background: var(--surface-soft);
}

.v3 .units td:last-child,
.v3 .units th:last-child {
    text-align: right;
}

/* ---------- Línea de tiempo ---------- */

.v3 .timeline {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .timeline li {
    position: relative;
    display: grid;
    gap: 2px;
    padding: 0 0 var(--s-5) var(--s-6);
}

.v3 .timeline li::before {
    content: "";
    position: absolute;
    left: 5px;
    top: 10px;
    bottom: 0;
    width: 2px;
    background: var(--surface);
}

.v3 .timeline li:last-child::before {
    display: none;
}

.v3 .timeline li::after {
    content: "";
    position: absolute;
    left: 0;
    top: 4px;
    width: 12px;
    height: 12px;
    border-radius: var(--r-bubble);
    background: var(--accent);
}

.v3 .timeline strong {
    font-weight: var(--w-medium);
    color: var(--ink);
}

/* ---------- Amenities ---------- */

.v3 .amenities {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s-3) var(--s-4);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .amenities li {
    display: flex;
    align-items: center;
    gap: var(--s-3);
    color: var(--ink);
    font-size: var(--fs-sm);
}

.v3 .amenities svg {
    width: 22px;
    height: 22px;
    flex: none;
    color: var(--accent);
}

@media (min-width: 640px) {
    .v3 .amenities {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* ---------- Footer ---------- */

.v3 .site-footer {
    padding: var(--s-8) 0 var(--s-6);
    background: var(--ink);
    color: var(--on-dark-muted);
    font-size: var(--fs-sm);
}

.v3 .site-footer a {
    color: var(--white);
    text-decoration: none;
}

.v3 .site-footer__grid {
    display: grid;
    gap: var(--s-6);
}

@media (min-width: 1024px) {
    .v3 .site-footer__grid {
        grid-template-columns: 2fr 1fr 1fr 1fr;
    }
}

.v3 .site-footer h4 {
    margin-bottom: var(--s-3);
    color: var(--white);
    font-size: var(--fs-sm);
}

.v3 .site-footer ul {
    display: grid;
    gap: var(--s-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

/* ---------- Burbuja como recurso gráfico ---------- */

.v3 .bubble-mask {
    border-radius: var(--r-bubble);
    overflow: hidden;
}

/* ---------- Reseñas ---------- */

.v3 .reviews {
    display: grid;
    gap: var(--s-4);
}

.v3 .review {
    display: grid;
    align-content: start;
    gap: var(--s-3);
    padding: var(--s-5);
    border-radius: var(--r-md);
    background: var(--white);
}

.v3 .review__stars {
    color: var(--venta);
    letter-spacing: 2px;
}

.v3 .review__text {
    margin: 0;
    color: var(--ink);
    font-size: var(--fs-md);
    line-height: var(--lh-body);
    /* Las reseñas largas se cortan a seis líneas; «Ver más» (js/v3/site.js) las abre */
    display: -webkit-box;
    -webkit-line-clamp: 6;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.v3 .review.is-open .review__text {
    display: block;
    overflow: visible;
}

.v3 .review__more {
    justify-self: start;
    padding: 0;
    border: 0;
    background: none;
    color: var(--ink);
    font: inherit;
    font-size: var(--fs-sm);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

.v3 .review__more[hidden] { display: none; }

.v3 .review__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-1) var(--s-2);
    font-size: var(--fs-xs);
    color: var(--muted);
}

.v3 .review__agent {
    display: inline-flex;
    align-items: center;
    gap: var(--s-1);
    padding: 2px 8px;
    border-radius: var(--r-pill);
    background: var(--surface-soft);
    color: var(--ink);
}

@media (min-width: 1024px) {
    .v3 .reviews {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* ---------- Card de proyecto: ficha técnica (opción B elegida) ---------- */

/* El encabezado toma el espacio sobrante: así la ficha técnica y el precio quedan a la misma altura en toda la fila */

.v3 .cb .card__body { flex: 1; grid-template-rows: 1fr; gap: var(--s-3); }

.v3 .cb__head { display: grid; align-content: start; gap: 2px; }

.v3 .cb__data { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: var(--s-3) 0; border-top: 1px solid var(--surface); border-bottom: 1px solid var(--surface); }

.v3 .cb__data div { display: grid; gap: 2px; padding-right: var(--s-2); }

.v3 .cb__data div + div { padding-left: var(--s-2); border-left: 1px solid var(--surface); }

.v3 .cb__data dt { font-size: 0.6875rem; font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }

.v3 .cb__data dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); white-space: nowrap; }

/* Card de proyecto: el precio "Desde" va en su propia fila, más grande, y debajo entrega y
   tipologías. Así entra cualquier precio (hasta USD 1.000.000 o más) sin pisar la columna de al lado. */

.v3 .cb:not(.cb--prop) .cb__data { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--s-3); }

.v3 .cb:not(.cb--prop) .cb__data div:first-child { grid-column: 1 / -1; padding-right: 0; }

.v3 .cb:not(.cb--prop) .cb__data div:first-child dd { font-size: var(--fs-lg); white-space: normal; }

.v3 .cb:not(.cb--prop) .cb__data div:nth-child(2) { padding-left: 0; border-left: 0; }

.v3 .cb:not(.cb--prop) .cb__data dd { overflow: hidden; text-overflow: ellipsis; }

/* Sin precio (proyecto sin unidades en venta), la entrega queda primera: en su tamaño, no en el del precio */

.v3 .cb:not(.cb--prop) .cb__data div.cb__data--icon:first-child dd { font-size: var(--fs-sm); }

.v3 .cb__dev { font-size: var(--fs-xs); color: var(--muted); }

.v3 .cb__dev b { color: var(--body); font-weight: var(--w-medium); }

.v3 .icon-actions { display: flex; gap: var(--s-1); flex: none; }

/* Card de propiedad: misma ficha técnica, precio al pie */

.v3 .cb__data dd small { display: block; font-size: var(--fs-xs); font-weight: var(--w-book); color: var(--muted); }

.v3 .cb__foot { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-3); }

.v3 .cb__price { color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); letter-spacing: -0.01em; }

.v3 .cb__state { font-size: var(--fs-xs); color: var(--muted); white-space: nowrap; }

.v3 .cb--prop .card__title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.3;
}

@media (min-width: 640px) {
    .v3 .cb--prop .card__title { min-height: calc(2 * 1.3em); }
}

/* ---------- Pie: marca y contacto, links, franja legal ---------- */

.v3 .site-footer__brand { display: grid; gap: var(--s-4); align-content: start; max-width: 36ch; }

.v3 .site-footer__logo { height: 28px; width: auto; }

.v3 .site-footer__claim { margin: 0; color: var(--white); font-size: var(--fs-md); line-height: 1.5; }

.v3 .site-footer__contact { display: grid; gap: var(--s-1); margin: 0; padding: 0; list-style: none; }

.v3 .site-footer__contact a { white-space: nowrap; }

/* Redes de PROP (v3/social): íconos de 40px, en el pie sobre negro y en Contacto con borde */

.v3 .social,
.v3 .site-footer .social { display: flex; flex-direction: row; flex-wrap: wrap; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }

.v3 .social a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast); }

.v3 .social svg { width: 20px; height: 20px; }

.v3 .social--footer a { border: 1px solid rgb(255 255 255 / 0.25); color: var(--white); }

.v3 .social--contact a { border: 1px solid var(--line); color: var(--ink); }

@media (hover: hover) and (pointer: fine) {
    .v3 .social--footer a:hover { border-color: var(--white); background: var(--white); color: var(--ink); }
    .v3 .social--contact a:hover { border-color: var(--ink); background: var(--ink); color: var(--white); }
}

.v3 .social a:focus-visible { outline: 2px solid var(--venta); outline-offset: 2px; }

.v3 .site-footer__legal {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2) var(--s-5);
    margin-top: var(--s-7);
    padding-top: var(--s-5);
    border-top: 1px solid rgb(255 255 255 / 0.12);
    font-size: var(--fs-xs);
    color: rgb(255 255 255 / 0.55);
}

.v3 .site-footer__legal a { color: rgb(255 255 255 / 0.75); }

.v3 .cb__per { font-size: var(--fs-sm); font-weight: var(--w-book); color: var(--muted); }

/* ---------- Card de propiedad (venta y alquiler) ----------
   Precio primero; los datos en una línea; la ubicación en gris. Cada línea ocupa siempre
   una sola línea, así todas las cards miden lo mismo. Sin título: el título largo del portal
   queda para la ficha y como nombre accesible del link. */

.v3 .cp .card__body { gap: 4px; padding-top: var(--s-3); }

.v3 .cp__price { color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: 1.2; letter-spacing: -0.01em; }

.v3 .cp__price small { color: var(--muted); font-size: var(--fs-sm); font-weight: var(--w-book); letter-spacing: 0; }

.v3 .cp__specs,
.v3 .cp__place,
.v3 .cp__name { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

.v3 .cp__specs { color: var(--ink); font-size: var(--fs-sm); }

.v3 .cp__place { color: var(--muted); font-size: var(--fs-sm); }

/* Variante con nombre: el edificio (o el tipo, si no tiene) arriba de la ubicación */

.v3 .cp__name { margin-top: 2px; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .cp__name + .cp__place { margin-top: -2px; }

/* ---------- Slider de fotos en la card ----------
   Las fotos se pasan con las flechas, no deslizando: en celular el deslizamiento ya mueve
   el carrusel de cards, y dos gestos iguales uno adentro del otro confunden. En desktop las
   flechas aparecen al pasar el mouse; en pantallas táctiles están siempre visibles. */

.v3 .card__slides {
    display: flex;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.v3 .card__slides img { flex: 0 0 100%; width: 100%; height: 100%; object-fit: cover; }

.v3 .card__nav {
    position: absolute;
    top: 50%;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    margin-top: -16px;
    border-radius: 50%;
    background: rgb(255 255 255 / 0.92);
    color: var(--ink);
    box-shadow: var(--shadow-1);
    cursor: pointer;
    transition: opacity var(--t-fast), background var(--t-fast);
}

.v3 .card__nav svg { width: 16px; height: 16px; }

.v3 .card__nav--prev { left: var(--s-2); }

.v3 .card__nav--next { right: var(--s-2); }

.v3 .card__nav[hidden] { display: none; }

/* Área táctil de 44 px sin agrandar el círculo */

.v3 .card__nav::after { content: ""; position: absolute; inset: -6px; }

.v3 .card__dots {
    position: absolute;
    bottom: var(--s-2);
    left: 50%;
    z-index: 2;
    display: flex;
    gap: 5px;
    transform: translateX(-50%);
    pointer-events: none;
}

.v3 .card__dots i { width: 6px; height: 6px; border-radius: 50%; background: rgb(255 255 255 / 0.55); transition: background var(--t-fast), transform var(--t-fast); }

.v3 .card__dots i.is-on { background: var(--white); transform: scale(1.2); }

@media (hover: hover) and (pointer: fine) {
    .v3 .card__nav { opacity: 0; }
    .v3 .card:hover .card__nav,
    .v3 .card__nav:focus-visible { opacity: 1; }
    .v3 .card__nav:hover { background: var(--white); }
}

/* ================= Piezas compartidas por home, ficha y listados =================
   Encabezado de sección, grilla de cards, carrusel del celular (una card entera por vez,
   con puntos) y la card "Ver todos" que cierra cada carrusel. */

.v3 .section {
    padding: var(--s-8) 0;
}

.v3 .section--soft {
    background: var(--surface-soft);
}

@media (max-width: 639px) {
    .v3 .section { padding: var(--s-6) 0; }  /* 32 px por lado: con los fondos alternados alcanza para separar */
}

/* Encabezado de sección: el título manda y nunca se aprieta.
   Si el link entra al lado, va a la derecha alineado con la última línea;
   si no entra, baja a su propio renglón, alineado a la izquierda. */

.v3 .section__head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-end;
    column-gap: var(--s-6);
    row-gap: var(--s-2);
    margin-bottom: var(--s-6);
}

.v3 .section__head .title { flex: 1 1 36rem; min-width: 0; }

.v3 .section__head > .btn--ghost {
    flex: none;
    min-height: 44px;
    padding-inline: 0;
}

/* Grilla de cards */

.v3 .grid-cards {
    display: grid;
    gap: var(--s-6) var(--s-5);
    grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 640px) {
    .v3 .grid-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .v3 .grid-cards {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 639px) {
    /* 1 · Proyectos y apartamentos en carrusel: se ve la próxima card */
    .v3 .grid-cards,
    .v3 .reviews {
        grid-auto-flow: column;
        grid-template-columns: none;
        grid-auto-columns: 84%;
        gap: var(--s-3);
        margin-inline: calc(var(--gutter) * -1);
        padding-inline: var(--gutter);
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: var(--gutter);
        scrollbar-width: none;
    }

    .v3 .grid-cards::-webkit-scrollbar,
    .v3 .reviews::-webkit-scrollbar { display: none; }

    .v3 .grid-cards > *,
    .v3 .reviews > * { scroll-snap-align: start; }

    .v3 .grid-cards,
    .v3 .reviews {
        grid-auto-columns: 100%;
        gap: var(--s-4);
    }

    .v3 .section__head { margin-bottom: var(--s-4); }
    .v3 .section__head .title { font-size: 1.375rem; }
}

.v3 .dots {
    display: flex;
    justify-content: center;
    gap: 2px;
    margin-top: var(--s-3);
}

.v3 .dots button {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
}

.v3 .dots button::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: var(--r-pill);
    background: var(--line);
    transition: width var(--t-fast), background var(--t-fast);
}

.v3 .dots button[aria-current="true"]::before {
    width: 20px;
    background: var(--ink);
}

@media (min-width: 640px) {
    .v3 .dots { display: none; }
}

/* Última card de los carruseles en celular: lleva a ver todo sin volver al link de arriba */

.v3 .card-more { display: none; }

@media (max-width: 639px) {
    .v3 .card-more {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: var(--s-2);
        padding: var(--s-6);
        border: 1px solid var(--line);
        border-radius: var(--r-md);
        background: var(--white);
        color: var(--ink);
        text-align: center;
        text-decoration: none;
        scroll-snap-align: start;
    }
    .v3 .card-more strong { max-width: 18ch; font-size: var(--fs-lg); font-weight: var(--w-medium); text-wrap: balance; }
    .v3 .card-more span:last-child { color: var(--body); font-size: var(--fs-sm); }
    .v3 .card-more__icon { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: var(--s-2); border-radius: var(--r-bubble); background: var(--accent); color: var(--white); }
    .v3 .card-more__icon svg { width: 24px; height: 24px; }
    .v3 .card-more:active { background: var(--surface-soft); }
}

/* Notas del prototipo: no son parte del diseño, explican qué falta o cómo se integra.
   Ocultas por defecto para no ensuciar los diseños; se ven agregando ?notas a la dirección. */

.v3:not(.show-notes) .proto-note { display: none !important; }

.v3 .proto-note {
    margin: var(--s-3) 0 0;
    padding: var(--s-2) var(--s-3);
    border: 1px dashed var(--line);
    border-radius: var(--r-sm);
    color: var(--muted);
    font-size: var(--fs-xs);
}

.v3 .proto-note::before { content: "Nota del prototipo · "; font-weight: var(--w-medium); }

/* Botón de consulta: el único salmón de la página, para que la acción principal se vea primero.
   Salmón de marca (#F05B72). Al pasar el mouse el color no cambia: aparece una flecha. */

.v3 .btn--cta { background: var(--venta); color: var(--white); }

.v3 [data-op="alquiler"] .btn--cta { background: var(--alquiler); }

/* en todo lo que es alquiler, el mismo botón en violeta */

.v3 .btn--cta .btn__go { width: 0; margin-left: calc(var(--s-2) * -1); opacity: 0; transition: width var(--t-fast), margin var(--t-fast), opacity var(--t-fast); }

/* Card de proyecto: barrio y dirección en una sola línea; si no entra, termina en "…" */

.v3 .cb .card__place { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

/* Cards en grilla: siempre con su contenedor (borde fino), como en los listados.
   Sobre fondo blanco separa cada card; sobre gris, la card blanca ya se recorta igual */

.v3 .grid-cards > .card { border: 1px solid var(--surface); background: var(--white); transition: border-color var(--t-fast), box-shadow var(--t-fast); }

.v3 .grid-cards > .card .card__media { border-radius: 0; }

.v3 .grid-cards > .card .card__body { padding: var(--s-3) var(--s-4) var(--s-4); }

@media (hover: hover) and (pointer: fine) {
    .v3 .grid-cards > .card:hover { border-color: var(--line); box-shadow: var(--shadow-1); }
}

/* Solo celular / solo tablet y desktop: más cards y reseñas para deslizar en el celular;
   en pantallas grandes la grilla queda como estaba */

@media (min-width: 640px) { .v3 .only-m { display: none !important; } }

@media (max-width: 639px) { .v3 .hide-m { display: none !important; } }

/* ---------- Cards con íconos (los arma js/card-icons.js; sin JS queda el texto) ---------- */

.v3 .cp__specs--icons { display: none; flex-wrap: wrap; align-items: center; gap: 2px 10px; margin: 0; padding: 0; list-style: none; }

.v3 .cp__specs--icons li { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }

.v3 .cp__specs--icons svg { width: 16px; height: 16px; flex: none; color: var(--muted); stroke-width: 1.6; }

.v3.icons .cp__specs--icons { display: flex; }

.v3.icons .cp__specs--text { display: none; }

.v3 .cb__data--icon dd svg { display: none; }

.v3.icons .cb__data--icon dt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.v3.icons .cb__data--icon dd { display: flex; align-items: flex-start; gap: 4px; overflow: visible; white-space: normal; }

.v3.icons .cb__data--icon dd svg { margin-top: 2px; }

.v3.icons .cb__data--icon dd svg { display: block; width: 14px; height: 14px; flex: none; color: var(--muted); }

.v3.icons .cb:not(.cb--prop) .cb__data--icon { align-content: center; }

/* Íconos en color: toman el color de la operación (salmón en venta y proyectos, violeta en alquiler) */

.v3.icons-color .cp__specs--icons svg, .v3.icons-color .cb__data--icon dd svg { color: var(--accent); }

/*  --- proyecto.css ---  */

/* Ficha de proyecto */

.v3 .crumbs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-4) 0 var(--s-3);
    font-size: var(--fs-sm);
    color: var(--muted);
}

.v3 .crumbs a {
    text-decoration: none;
}

/* Encabezado */

.v3 .p-head {
    display: grid;
    gap: var(--s-4);
    padding-bottom: var(--s-5);
}

.v3 .p-head__badges {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    align-items: center;
}

.v3 .p-head h1 {
    font-size: var(--fs-3xl);
    font-weight: var(--w-medium);
    line-height: var(--lh-tight);
    letter-spacing: -0.02em;
}

.v3 .p-head__place {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-1) var(--s-4);
    font-size: var(--fs-md);
}

.v3 .p-head__place span {
    display: inline-flex;
    align-items: center;
    gap: var(--s-1);
}

.v3 .p-head__place svg {
    width: 18px;
    height: 18px;
    color: var(--muted);
}

.v3 .p-head__actions {
    display: flex;
    gap: var(--s-2);
}

@media (min-width: 1024px) {
    .v3 .p-head {
        grid-template-columns: 1fr auto;
        align-items: end;
    }
}

/* Galería: carrusel con scroll-snap en mobile, mosaico en desktop */

.v3 .gallery {
    position: relative;
    margin-inline: calc(var(--gutter) * -1);
}

.v3 .gallery__track {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--gutter);
    scrollbar-width: none;
}

.v3 .gallery__track::-webkit-scrollbar {
    display: none;
}

.v3 .gallery__item {
    flex: 0 0 100%;
    scroll-snap-align: start;
    aspect-ratio: 4 / 3;
    margin: 0;
    background: var(--surface);
    overflow: hidden;
    cursor: zoom-in;
}

.v3 .gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.v3 .gallery__count {
    position: absolute;
    right: var(--s-4);
    bottom: var(--s-4);
    padding: 4px 10px;
    border-radius: var(--r-pill);
    background: rgb(26 26 26 / 0.72);
    color: var(--white);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
}

.v3 .gallery__all {
    display: none;
}

@media (min-width: 1024px) {
    .v3 .gallery {
        margin-inline: 0;
    }

    .v3 .gallery__track {
        display: grid;
        grid-template-columns: 2fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        gap: var(--s-2);
        height: min(62vh, 560px);
        overflow: hidden;
        border-radius: var(--r-md);
    }

    .v3 .gallery__item {
        aspect-ratio: auto;
    }


    .v3 .gallery__item:first-child {
        grid-row: span 2;
    }

    .v3 .gallery__item:nth-child(n + 6) {
        display: none;
    }

    .v3 .gallery__count {
        display: none;
    }

    .v3 .gallery__all {
        display: inline-flex;
        position: absolute;
        right: var(--s-4);
        bottom: var(--s-4);
        box-shadow: var(--shadow-1);
    }
}

/* Datos rápidos */

.v3 .facts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s-1);
    margin: var(--s-6) 0 0;
    padding: 0;
    list-style: none;
}

.v3 .facts li {
    display: grid;
    gap: 2px;
    padding: var(--s-4);
    border-radius: var(--r-md);
    background: var(--surface-soft);
}

.v3 .facts strong {
    color: var(--ink);
    font-size: var(--fs-lg);
    font-weight: var(--w-medium);
    line-height: var(--lh-snug);
}

@media (min-width: 640px) {
    .v3 .facts {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* Cuerpo en dos columnas */

.v3 .p-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s-7);
    padding: var(--s-6) 0 var(--s-8);
}

@media (min-width: 1024px) {
    .v3 .p-body {
        grid-template-columns: minmax(0, 1fr) 380px;
        gap: var(--s-8);
    }
}

/* Subnavegación por secciones */

.v3 .subnav {
    position: sticky;
    top: var(--header-h);
    z-index: 30;
    margin-inline: calc(var(--gutter) * -1);
    padding: 0 var(--gutter);
    background: rgb(255 255 255 / 0.96);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--surface);
}

.v3 .subnav ul {
    display: flex;
    gap: var(--s-5);
    margin: 0;
    padding: 0;
    list-style: none;
    overflow-x: auto;
    scrollbar-width: none;
}

.v3 .subnav a {
    display: block;
    padding: var(--s-4) 0;
    border-bottom: 2px solid transparent;
    font-size: var(--fs-sm);
    color: var(--body);
    text-decoration: none;
    white-space: nowrap;
}

.v3 .subnav a.is-active {
    color: var(--ink);
    border-bottom-color: var(--accent);
}

@media (min-width: 1024px) {
    .v3 .subnav {
        margin-inline: 0;
        padding: 0;
    }
}

.v3 .p-section {
    padding-top: var(--s-7);
    scroll-margin-top: calc(var(--header-h) + 72px);
}

.v3 .p-section > .title {
    margin-bottom: var(--s-5);
}

.v3 .p-lead {
    font-size: var(--fs-lg);
    line-height: var(--lh-snug);
    color: var(--ink);
}

.v3 .prose {
    max-width: 64ch;
}

.v3 .more {
    border: 0;
    padding: 0;
    background: none;
    color: var(--ink);
    font-weight: var(--w-medium);
    text-decoration: underline;
    text-underline-offset: 4px;
    cursor: pointer;
}

/* Tipologías */

.v3 .units__type {
    display: flex;
    align-items: center;
    gap: var(--s-3);
}

.v3 .units__type span {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: var(--r-bubble);
    background: var(--accent-soft);
    color: var(--accent-ink);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
}

.v3 .units .units__price {
    font-weight: var(--w-medium);
}

.v3 .units__note {
    margin-top: var(--s-3);
    font-size: var(--fs-sm);
}

/* Costos */

.v3 .costs {
    display: grid;
    gap: var(--s-3);
}

@media (min-width: 640px) {
    .v3 .costs {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.v3 .costs .box strong {
    display: block;
    margin-top: var(--s-1);
    font-size: var(--fs-lg);
    font-weight: var(--w-medium);
    color: var(--ink);
}

/* Bloque "pendiente de dato" */

.v3 .pending {
    position: relative;
    padding: var(--s-5);
    border: 1px dashed var(--line);
    border-radius: var(--r-md);
}

.v3 .pending__tag {
    position: absolute;
    top: calc(var(--s-3) * -1);
    left: var(--s-4);
    padding: 2px 8px;
    background: var(--white);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: var(--muted);
}

.v3 .pending .timeline {
    opacity: 0.55;
}

/* Promovida */

.v3 .promo {
    display: grid;
    gap: var(--s-3);
    padding: var(--s-6);
    border-radius: var(--r-md);
    background: var(--ink);
    color: var(--on-dark-muted);
}

.v3 .promo .title__section,
.v3 .promo .title__main {
    color: var(--white);
}

/* Mapa */

.v3 .map {
    position: relative;
    display: grid;
    place-items: center;
    aspect-ratio: 16 / 9;
    border-radius: var(--r-md);
    overflow: hidden;
    background:
        linear-gradient(90deg, rgb(0 0 0 / 0.04) 1px, transparent 1px) 0 0 / 48px 48px,
        linear-gradient(rgb(0 0 0 / 0.04) 1px, transparent 1px) 0 0 / 48px 48px,
        var(--surface-soft);
}

.v3 .map::before {
    content: "";
    position: absolute;
    inset: 46% -10% auto;
    height: 18px;
    background: var(--white);
    transform: rotate(-12deg);
}

.v3 .map__pin {
    position: relative;
    display: grid;
    place-items: center;
    width: 56px;
    height: 56px;
    border-radius: var(--r-bubble);
    background: var(--accent);
    color: var(--white);
    box-shadow: 0 0 0 10px color-mix(in srgb, var(--accent) 20%, transparent);
}

.v3 .map__pin svg {
    width: 26px;
    height: 26px;
}

.v3 .map__open {
    position: absolute;
    left: var(--s-4);
    bottom: var(--s-4);
    box-shadow: var(--shadow-1);
}

.v3 .near {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    margin-top: var(--s-4);
}

/* Columna de consulta */

.v3 .ask {
    display: none;
}

@media (min-width: 1024px) {
    .v3 .ask {
        display: block;
        position: sticky;
        top: calc(var(--header-h) + var(--s-5));
        align-self: start;
        padding: var(--s-6);
        border-radius: var(--r-md);
        background: var(--white);
        border: 1px solid var(--line);
    }
}

.v3 .ask__price {
    padding-bottom: var(--s-5);
    margin-bottom: var(--s-5);
    border-bottom: 1px solid var(--surface);
}

.v3 .ask__actions {
    display: grid;
    gap: var(--s-2);
    margin: var(--s-5) 0;
}

.v3 .ask__trust {
    display: grid;
    gap: var(--s-2);
    margin: var(--s-5) 0 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-sm);
}

.v3 .ask__trust li {
    display: flex;
    gap: var(--s-2);
}

.v3 .ask__trust svg {
    width: 18px;
    height: 18px;
    flex: none;
    color: var(--accent);
    margin-top: 2px;
}

/* Sheet de consulta (mobile) */

.v3 .sheet {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    align-items: end;
    visibility: hidden;
}

.v3 .sheet__backdrop {
    position: absolute;
    inset: 0;
    background: rgb(0 0 0 / 0.4);
    opacity: 0;
    transition: opacity var(--t-base);
}

.v3 .sheet__panel {
    position: relative;
    max-height: 92vh;
    overflow-y: auto;
    padding: var(--s-3) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));
    border-radius: var(--r-md) var(--r-md) 0 0;
    background: var(--white);
    transform: translateY(100%);
    transition: transform var(--t-base);
}

.v3 .sheet__grip {
    width: 40px;
    height: 4px;
    margin: 0 auto var(--s-4);
    border-radius: var(--r-pill);
    background: var(--line);
}

/* Título del formulario de consulta: el nombre de la publicación puede ser largo; va al tamaño
   de un subtítulo y usa todo el ancho; solo el primer renglón deja lugar para la cruz */
.v3 .sheet .title--sm { font-size: var(--fs-lg); line-height: var(--lh-snug); }
.v3 .sheet .title--sm .title__main { display: block; margin-top: var(--s-1); text-wrap: pretty; }
/* Lugar para la cruz solo en el primer renglón: el resto del título usa todo el ancho */
.v3 .sheet .title--sm .title__main::before { content: ""; float: right; width: var(--s-6); height: 1em; }

.v3 .sheet__close {
    position: absolute;
    top: var(--s-3);
    right: var(--s-3);
}

.v3 .sheet.is-open {
    visibility: visible;
}

.v3 .sheet.is-open .sheet__backdrop {
    opacity: 1;
}

.v3 .sheet.is-open .sheet__panel {
    transform: none;
}

@media (min-width: 1024px) {
    .v3 .sheet {
        align-items: center;
        justify-items: center;
    }

    .v3 .sheet__panel {
        width: 480px;
        border-radius: var(--r-md);
        transform: translateY(24px);
        opacity: 0;
        transition: transform var(--t-base), opacity var(--t-base);
    }

    .v3 .sheet.is-open .sheet__panel {
        opacity: 1;
    }

    .v3 .sheet__grip {
        display: none;
    }
}

/* Visor de fotos */

.v3 .viewer {
    position: fixed;
    inset: 0;
    z-index: 110;
    display: none;
    background: var(--ink);  /* negro de marca, también en el visor de fotos */
    color: var(--white);
}

.v3 .viewer.is-open {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);  /* la foto entra entera en la pantalla, sin cortarse abajo */
}

.v3 .viewer__bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--s-3) var(--gutter);
    font-size: var(--fs-sm);
}

.v3 .viewer__bar .btn {
    color: var(--white);
}

.v3 .viewer__track {
    display: flex;
    min-height: 0;
    padding-bottom: var(--s-5);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--gutter);
    scrollbar-width: none;
}

.v3 .viewer__track img {
    flex: 0 0 100%;
    width: 100%;
    height: 100%;
    object-fit: contain;
    scroll-snap-align: center;
}

.v3 .units .units__price {
    white-space: nowrap;
}

.v3 .units__ask span {
    display: none;
}

.v3 .units tbody tr {
    cursor: pointer;
}

@media (min-width: 640px) {
    .v3 .units__ask span {
        display: inline;
    }

    .v3 .units__ask svg {
        display: none;
    }
}

.v3 .p-head__updated {
    margin: var(--s-2) 0 0;
    font-size: var(--fs-xs);
    color: var(--muted);
}

.v3 .p-head__place a {
    color: var(--ink);
    text-underline-offset: 3px;
}

/* Desarrollador con PROP: cifras en una fila liviana, separadas por líneas finas */

.v3 .dev-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0 0 var(--s-5);
    padding: var(--s-4) 0;
    border-block: 1px solid var(--surface);
    list-style: none;
}

.v3 .dev-stats li { display: grid; align-content: start; gap: 2px; padding-inline: var(--s-3); }

.v3 .dev-stats li:first-child { padding-left: 0; }

.v3 .dev-stats li + li { border-left: 1px solid var(--surface); }

.v3 .dev-stats strong { color: var(--ink); font-size: var(--fs-2xl); font-weight: var(--w-medium); line-height: 1.1; }

.v3 .dev-stats span { font-size: var(--fs-xs); line-height: 1.35; }

.v3 .dev-more { margin-top: var(--s-3); padding-inline: 0; }

.v3 .dev-track {
    display: grid;
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .dev-track li {
    display: grid;
    grid-template-columns: 56px 1fr auto;
    gap: var(--s-3);
    align-items: baseline;
    padding: var(--s-3) 0;
    border-bottom: 1px solid var(--surface);
    font-size: var(--fs-sm);
}

.v3 .dev-track__year {
    color: var(--muted);
    font-weight: var(--w-medium);
}

.v3 .dev-track__name {
    color: var(--ink);
}

.v3 .dev-track__state {
    font-size: var(--fs-xs);
    text-align: right;
}

.v3 .dev-track li.is-current .dev-track__name,
.v3 .dev-track li.is-current .dev-track__state {
    color: var(--accent-ink);
    font-weight: var(--w-medium);
}

/* Consulta: aclaración y rating */

.v3 .ask__legal {
    margin: var(--s-2) 0 0;
    font-size: var(--fs-xs);
    color: var(--muted);
}

.v3 .ask__rating {
    display: inline-flex;
    gap: var(--s-2);
    margin-top: var(--s-4);
    font-size: var(--fs-sm);
    color: var(--ink);
    text-decoration: none;
}

.v3 .ask__rating .review__stars {
    font-size: var(--fs-xs);
}

/* ---------- Encabezado con datos clave (opción B elegida) ---------- */

.v3 .hb { display: grid; gap: var(--s-4); }

.v3 .hb__top { display: flex; justify-content: space-between; align-items: start; gap: var(--s-4); }

.v3 .hb h1 { font-size: var(--fs-3xl); line-height: var(--lh-tight); letter-spacing: -0.02em; }

.v3 .hb__sub { margin-top: var(--s-1); font-size: var(--fs-md); color: var(--body); }

.v3 .hb__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }

.v3 .hb__facts div { display: grid; gap: 2px; padding: var(--s-3) var(--s-4); }

.v3 .hb__facts div:nth-child(odd) { border-right: 1px solid var(--line); }

.v3 .hb__facts div:nth-child(n + 3) { border-top: 1px solid var(--line); }

.v3 .hb__facts dt { font-size: 0.6875rem; font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }

.v3 .hb__facts dd { margin: 0; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .hb__facts dd a { color: inherit; text-underline-offset: 3px; }

.v3 .hb__facts dd small { display: block; font-size: var(--fs-xs); font-weight: var(--w-book); color: var(--muted); }

@media (min-width: 1024px) {
    .v3 .hb__facts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .v3 .hb__facts div { border-right: 1px solid var(--line); }
    .v3 .hb__facts div:last-child { border-right: 0; }
    .v3 .hb__facts div:nth-child(n + 3) { border-top: 0; }
}

.v3 .p-head-b { padding: var(--s-2) 0 var(--s-5); }

/* ---------- Celular: la foto primero ----------
   Como en Compass o Airbnb: la galería a todo el ancho arriba, después el nombre y los
   datos clave. Las migas se ocultan (siguen en el JSON-LD para Google). */

@media (max-width: 1023px) {
    .v3 main > .container:first-child { display: flex; flex-direction: column; }
    .v3 main > .container:first-child > .gallery { order: -1; margin-bottom: var(--s-5); }
    .v3 main > .container:first-child > .p-body { width: 100%; }
}

@media (max-width: 639px) {
    .v3 .crumbs { display: none; }
    .v3 .gallery { margin-top: 0; }
    .v3 .hb h1 { font-size: 1.875rem; }
    .v3 .p-head-b { padding-bottom: 0; }
    .v3 .p-body { padding-top: var(--s-4); }

    /* Subnavegación: fundido a la derecha para que se note que hay más secciones */
    .v3 .subnav ul {
        -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 40px), transparent);
        mask-image: linear-gradient(90deg, #000 calc(100% - 40px), transparent);
        padding-right: var(--s-6);
    }

    .v3 .dev-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--s-4); }
    .v3 .dev-stats li:nth-child(3) { padding-left: 0; border-left: 0; }
}

/* =====================================================================
   Ficha de proyecto · versión con Helios Atlántico
   Orden pedido: descripción, amenities, unidades y precios, ubicación, desarrollador.
   Títulos de sección en una línea, como en el sitio actual.
   ===================================================================== */

/* Encabezado */

.v3 .fp-head { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--s-4); padding: var(--s-2) 0 var(--s-5); }

.v3 .fp-tags { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); margin-bottom: var(--s-2); }

.v3 .fp-tags__text { color: var(--body); font-size: var(--fs-sm); }

.v3 .fp-head h1 { font-size: clamp(1.625rem, 1.2rem + 1.6vw, 2.5rem); font-weight: var(--w-medium); line-height: 1.1; letter-spacing: -0.02em; }

.v3 .fp-head__addr { display: flex; align-items: center; gap: 6px; margin: var(--s-2) 0 0; color: var(--body); font-size: var(--fs-md); }

.v3 .fp-head__addr svg { width: 18px; height: 18px; flex: none; color: var(--muted); }

/* Celular: precio y consulta debajo de la foto (en desktop lo hace la caja lateral) */

.v3 .fp-buy { display: grid; gap: var(--s-3); padding: var(--s-4) 0; border-bottom: 1px solid var(--surface); }

.v3 .fp-buy__price span { display: block; color: var(--muted); font-size: var(--fs-xs); }

.v3 .fp-buy__price strong { display: block; color: var(--ink); font-size: 1.5rem; font-weight: var(--w-medium); line-height: 1.2; letter-spacing: -0.01em; }

.v3 .fp-buy__price small { display: block; color: var(--body); font-size: var(--fs-sm); }

.v3 .fp-buy__actions { display: flex; gap: var(--s-2); }

.v3 .fp-buy__actions .btn--cta { flex: 1; }

@media (min-width: 1024px) { .v3 .fp-buy { display: none; } }

/* Datos clave: cuatro datos con ícono, en una fila liviana */

.v3 .fp-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4) var(--s-3); margin: 0; padding: var(--s-4) 0; border-bottom: 1px solid var(--surface); }

/* Cada dato es una columna alineada a la izquierda: ícono arriba, etiqueta y valor debajo, todo desde arriba */

.v3 .fp-facts div { display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 2px; }

.v3 .fp-facts svg { width: 20px; height: 20px; margin-bottom: var(--s-2); color: var(--accent); }

.v3 .fp-facts dt { color: var(--muted); font-size: var(--fs-xs); }

.v3 .fp-facts dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); line-height: 22px; font-weight: var(--w-medium); }

@media (min-width: 1024px) {
    .v3 .fp-facts { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: var(--s-5); padding: var(--s-5) 0; border-top: 1px solid var(--surface); }
    .v3 .fp-facts dd { font-size: var(--fs-md); line-height: 24px; }
}

/* Secciones: título de una línea y una línea fina entre secciones */

.v3 .fp-section { padding-top: var(--s-6); }

.v3 .fp-section + .fp-section { margin-top: var(--s-6); border-top: 1px solid var(--surface); }
/* Una lista que cierra la sección no lleva línea en su última fila: ya la separa el borde de la sección siguiente */
.v3 .fp-section > .fp-terms:last-child > div:last-child,
.v3 .fp-section > .fp-units:last-child > li:last-child { border-bottom: 0; }

.v3 .fp-h2 { margin: 0 0 var(--s-4); color: var(--ink); font-size: 1.1875rem; font-weight: var(--w-medium); line-height: 1.25; letter-spacing: -0.01em; }

@media (min-width: 1024px) { .v3 .fp-h2 { font-size: 1.375rem; } }

.v3 .section__head .fp-h2 { flex: 1 1 20rem; margin: 0; }

/* «?» de m² APPCU junto a «Superficie»: un círculo chico con el aviso al pasar el mouse o con foco.
   Se sube un 35 % de la letra del título menos 2,9 px para quedar centrado en las mayúsculas (12 px en el resumen, 19 y 22 px en la sección) */

.v3 .fp-help { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; margin-left: 6px; border: 1px solid currentColor; border-radius: 50%; color: var(--muted); font-size: 10px; font-weight: var(--w-medium); line-height: 1; letter-spacing: 0; text-decoration: none; vertical-align: calc(0.35 * var(--fs-xs) - 2.9px); cursor: help; }

.v3 a.fp-help { cursor: pointer; }

.v3 .fp-h2 .fp-help { vertical-align: calc(0.35 * 1.1875rem - 2.9px); }

@media (min-width: 1024px) { .v3 .fp-h2 .fp-help { vertical-align: calc(0.35 * 1.375rem - 2.9px); } }

.v3 .fp-help:hover, .v3 .fp-help:focus-visible { color: var(--accent); }

.v3 .fp-help::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 6px); left: 50%; z-index: 5; padding: 4px 8px; border-radius: 4px; background: var(--ink); color: var(--white); font-size: var(--fs-xs); font-weight: var(--w-medium); line-height: 1.4; white-space: nowrap; opacity: 0; pointer-events: none; transform: translate(-50%, 2px); transition: opacity .15s, transform .15s; }

.v3 .fp-help:hover::after, .v3 .fp-help:focus-visible::after { opacity: 1; transform: translate(-50%, 0); }

.v3 .fp-section__sub { margin: calc(var(--s-2) * -1) 0 var(--s-4); color: var(--body); font-size: var(--fs-sm); }

/* Descripción */

.v3 .fp-lead { margin: 0 0 var(--s-4); color: var(--ink); font-size: var(--fs-md); line-height: 1.55; }

@media (min-width: 1024px) { .v3 .fp-lead { font-size: var(--fs-lg); } }

.v3 .fp-highlights { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }

.v3 .fp-highlights li { display: flex; gap: var(--s-2); color: var(--body); font-size: var(--fs-sm); line-height: 1.5; }

.v3 .fp-highlights svg { width: 18px; height: 18px; flex: none; margin-top: 1px; color: var(--accent); }

.v3 .fp-more { margin-top: var(--s-4); }

.v3 .fp-more summary { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); cursor: pointer; list-style: none; text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }

.v3 .fp-more summary::-webkit-details-marker { display: none; }

.v3 .fp-more[open] summary { display: none; }

.v3 .fp-more .prose p { font-size: var(--fs-sm); }

/* Amenities más compactos */

.v3 .fp-amenities { gap: var(--s-3) var(--s-4); }

.v3 .fp-amenities svg { width: 20px; height: 20px; }

/* Unidades y precios: una fila por tipología, toda la fila abre la consulta */

.v3 .fp-units { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--surface); }

/* Cada fila: tipología a la izquierda; precio en una línea y botón "Consultar" a la derecha,
   todo centrado en la fila. El contenido arranca en el mismo borde que el título; el fondo
   del hover se extiende un poco a los costados. */

.v3 .fp-units li { position: relative; z-index: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: var(--s-5); padding: var(--s-4) 0; border-bottom: 1px solid var(--surface); cursor: pointer; }

.v3 .fp-units li::before { content: ""; position: absolute; inset: 0 calc(var(--s-3) * -1); z-index: -1; border-radius: var(--r-sm); transition: background var(--t-fast); }

@media (hover: hover) and (pointer: fine) {
    .v3 .fp-units li:hover { background: none; }
    .v3 .fp-units li:hover::before { background: var(--surface-soft); }
}

.v3 .fp-units__type strong { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .fp-units__type .badge { margin-left: var(--s-2); vertical-align: 2px; }

.v3 .fp-units__type > span:last-child { display: block; color: var(--muted); font-size: var(--fs-xs); }

.v3 .fp-units__price { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); text-align: right; white-space: nowrap; }

.v3 .fp-units__price span { margin-right: 2px; color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }

.v3 .fp-units__ask svg { display: none; }

.v3 .fp-costs { margin: var(--s-4) 0 0; color: var(--body); font-size: var(--fs-sm); }

.v3 .fp-note { margin: var(--s-1) 0 0; color: var(--muted); font-size: var(--fs-xs); }

/* Forma de pago: el texto del asesor, dentro de Unidades y precios */
.v3 .fp-h3 { margin: var(--s-6) 0 var(--s-2); color: var(--ink); font-size: 1rem; font-weight: var(--w-medium); line-height: 1.3; }
.v3 .fp-section__sub + .fp-h3 { margin-top: var(--s-4); }

/* Fila sin precio (garaje incluido, por ejemplo): la aclaración va en lugar del precio */
.v3 .fp-units__price--note { color: var(--muted); font-size: var(--fs-sm); font-weight: var(--w-book); white-space: normal; }

/* Descripción completa (la con IA plegada o la del asesor): al tamaño de los demás textos largos
   del sitio (.fp-more, guías), no al del cuerpo */
.v3 .fp-section .fp-prose p,
.v3 .fp-section .fp-prose li { font-size: var(--fs-sm); line-height: 1.65; }

/* Forma de pago sin condiciones ordenadas: el texto del asesor, al tamaño del resto de la sección */
.v3 .fp-pay p { margin: 0 0 var(--s-2); color: var(--body); font-size: var(--fs-sm); line-height: 1.6; }
.v3 .fp-pay p:last-child { margin-bottom: 0; }

/* Cómo se paga: mismas filas que las condiciones de la ficha de propiedad (.fp-terms);
   la forma de pago puede tener varias frases, una por línea */
.v3 .fp-terms dd span { display: block; }
.v3 .fp-terms dd span + span { margin-top: var(--s-1); }
.v3 .fp-terms__notes { margin: var(--s-3) 0 0; padding-left: 1.1em; color: var(--body); font-size: var(--fs-sm); }
.v3 .fp-terms__notes li + li { margin-top: var(--s-1); }
.v3 .fp-terms__more { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-3); margin-top: var(--s-4); padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: var(--surface-soft); }
.v3 .fp-terms__more p { margin: 0; color: var(--ink); font-size: var(--fs-sm); }

/* Cómo es el precio publicado (la nota del asterisco), pegado a los precios */
.v3 .fp-basis { margin: var(--s-3) 0 0; padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: var(--surface-soft); color: var(--body); font-size: var(--fs-sm); }
.v3 .fp-basis strong { color: var(--ink); font-weight: var(--w-medium); }

/* Financiación: cada plan en pasos, de izquierda a derecha */
.v3 .fp-plan__intro { margin: calc(var(--s-2) * -1) 0 var(--s-3); color: var(--body); font-size: var(--fs-sm); }
.v3 .fp-plan + .fp-plan { margin-top: var(--s-4); }
.v3 .fp-plan__name { margin: 0 0 var(--s-2); color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .fp-plan__steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.v3 .fp-plan__steps li { padding: var(--s-3); border-radius: var(--r-sm); background: var(--surface-soft); text-align: center; }
.v3 .fp-plan__steps strong { display: block; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }
.v3 .fp-plan__steps span { display: block; color: var(--body); font-size: var(--fs-xs); }
.v3 .fp-plan__steps small { display: block; margin-top: 2px; color: var(--muted); font-size: var(--fs-xs); }
.v3 .fp-plan__note { margin: var(--s-2) 0 0; color: var(--body); font-size: var(--fs-sm); }

/* Lo que el precio no incluye, y las promociones aparte */
.v3 .fp-excl { margin-top: var(--s-5); padding: var(--s-3) var(--s-4) 0; border: 1px solid var(--surface); border-radius: var(--r-sm); }
.v3 .fp-excl__title { margin: 0; color: var(--muted); font-size: var(--fs-xs); }
.v3 .fp-excl .fp-terms { border-top: 0; }
.v3 .fp-excl .fp-terms div:last-child { border-bottom: 0; }
.v3 .fp-offer { margin-top: var(--s-4); padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: var(--accent-soft); }
.v3 .fp-offer p { margin: 0; color: var(--ink); font-size: var(--fs-sm); }
.v3 .fp-offer__title { font-weight: var(--w-medium); }
.v3 .fp-offer__title span { color: var(--body); font-weight: var(--w-book); }

/* Ventas de dueños y alquileres del proyecto: tarjetas de propiedad en la columna de la ficha */
@media (min-width: 640px) { .v3 .grid-cards.fp-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.v3 .fp-section__sub + .fp-cards { margin-top: var(--s-4); }

/* Ubicación con el mapa real */

.v3 .fp-map { position: relative; display: block; border-radius: var(--r-md); overflow: hidden; background: var(--surface); }

.v3 .fp-map img { display: block; width: 100%; height: auto; aspect-ratio: 640 / 300; object-fit: cover; }

.v3 .fp-map__btn { position: absolute; left: var(--s-3); bottom: var(--s-3); background: var(--white); }

/* Desarrollador */

.v3 .fp-dev { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-4); }

.v3 .fp-dev__logo { display: grid; place-items: center; width: 56px; height: 56px; flex: none; border-radius: 50%; background: var(--surface); color: var(--ink); font-size: 1.375rem; font-weight: var(--w-medium); }

.v3 .fp-dev__name { display: block; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .fp-dev__meta { display: block; color: var(--body); font-size: var(--fs-sm); }

.v3 .fp-dev .btn--ghost { margin-left: auto; padding-inline: 0; }

/* Caja lateral (desktop): más presencia, precio grande y la consulta en salmón */

@media (min-width: 1024px) {
    .v3 .ask { box-shadow: var(--shadow-2); border-color: var(--surface); }
}

.v3 .ask .ask__price { padding-bottom: 0; margin-bottom: 0; border-bottom: 0; }

.v3 .ask__amount { display: block; margin-top: 2px; color: var(--ink); font-size: 2rem; font-weight: var(--w-medium); line-height: 1.1; letter-spacing: -0.02em; }

.v3 .ask__from { display: block; margin-top: var(--s-1); color: var(--body); font-size: var(--fs-sm); }

.v3 .ask__list { display: grid; gap: var(--s-2); margin: var(--s-4) 0 0; padding: var(--s-3) 0; list-style: none; border-block: 1px solid var(--surface); font-size: var(--fs-sm); }

.v3 .ask__list li { display: flex; justify-content: space-between; gap: var(--s-3); }

.v3 .ask__list b { color: var(--ink); font-weight: var(--w-medium); }

.v3 .ask .ask__actions { margin: var(--s-5) 0 0; }

.v3 .ask .ask__actions .btn--cta { min-height: 52px; font-size: var(--fs-md); }

/* Barra fija del celular: precio + consulta; aparece cuando el bloque de precio sale de vista */

@media (max-width: 1023px) {
    .v3 .fp-bar { position: fixed; left: 0; right: 0; bottom: 0; align-items: center; transition: transform var(--t-base); }
    .v3 .fp-bar.is-hidden { transform: translateY(110%); }
    .v3 .fp-bar .btn { flex: none; }
    .v3 .fp-bar .btn--cta { flex: 1; }
    .v3 .fp-bar__price { display: grid; flex: none; margin-right: var(--s-1); line-height: 1.15; }
    .v3 .fp-bar__price span { color: var(--muted); font-size: var(--fs-xs); }
    .v3 .fp-bar__price strong { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }
    .v3 body:has(.fp-bar) { padding-bottom: 80px; }
}

/* Celular: escala más chica en toda la ficha */

@media (max-width: 639px) {
    .v3 .fp-head { padding: var(--s-1) 0 var(--s-3); }
    .v3 .fp-head__addr { font-size: var(--fs-sm); }
    .v3 .fp-section { padding-top: var(--s-5); }
    .v3 .fp-section + .fp-section { margin-top: var(--s-5); }
    .v3 .fp-units li { gap: var(--s-3); }
    .v3 .fp-units__ask { width: 40px; min-height: 40px; padding: 0; justify-content: center; }
    .v3 .fp-units__ask svg { display: block; width: 18px; height: 18px; }
    .v3 .fp-units__ask span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    .v3 .fp-dev .btn--ghost { margin-left: 0; }
    .v3 .amenities.fp-amenities li { font-size: var(--fs-sm); }
}

/* Desktop: precio y consulta también arriba, al lado del nombre */

.v3 .fp-head__side { display: flex; align-items: center; gap: var(--s-4); }

.v3 .fp-head__price, .v3 .fp-head__cta { display: none; }

@media (min-width: 1024px) {
    .v3 .fp-head__price { display: grid; text-align: right; line-height: 1.15; }
    .v3 .fp-head__price span { color: var(--muted); font-size: var(--fs-xs); }
    .v3 .fp-head__price strong { color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); letter-spacing: -0.01em; }
    .v3 .fp-head__cta { display: inline-flex; }
}

/* Las tres líneas de abajo de la lista arrancan en el mismo borde: sin ícono adelante */

.v3 .fp-extra { margin: var(--s-4) 0 0; color: var(--ink); font-size: var(--fs-sm); }

.v3 .fp-extra + .fp-costs { margin-top: var(--s-2); }

/* Flechas del visor: a los costados, centradas en la foto. También se navega con ← y → */

.v3 .viewer__nav {
    position: absolute;
    top: 50%;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    margin-top: -24px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgb(255 255 255 / 0.12);
    color: var(--white);
    cursor: pointer;
    transition: background var(--t-fast), opacity var(--t-fast);
}

.v3 .viewer__nav svg { width: 22px; height: 22px; }

.v3 .viewer__nav--prev { left: var(--s-5); }

.v3 .viewer__nav--next { right: var(--s-5); }

.v3 .viewer__nav[hidden] { display: none; }

.v3 .viewer__nav:focus-visible { outline: 2px solid var(--white); outline-offset: 3px; }

@media (hover: hover) and (pointer: fine) {
    .v3 .viewer__nav:hover { background: rgb(255 255 255 / 0.24); }
}

@media (max-width: 639px) {
    .v3 .viewer__nav { width: 40px; height: 40px; margin-top: -20px; }
    .v3 .viewer__nav--prev { left: var(--s-2); }
    .v3 .viewer__nav--next { right: var(--s-2); }
}

/* Celular y tablet: sin menú de secciones fijo. La ficha es corta y la barra de consulta
   ya queda fija abajo; tres barras fijas a la vez se comen la pantalla. */

@media (max-width: 1023px) {
    .v3 .subnav { display: none; }
    .v3 .fp-section:first-of-type { padding-top: var(--s-5); }
    .v3 .p-section { scroll-margin-top: calc(var(--header-h) + var(--s-4)); }
}

/* ---------- Discovery 5WH después de enviar la consulta ---------- */

.v3 .dsc { display: grid; gap: var(--s-3); padding-top: var(--s-2); }

.v3 .dsc__sent { display: flex; align-items: center; gap: var(--s-2); margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .dsc__sent svg { width: 22px; height: 22px; flex: none; padding: 4px; border-radius: 50%; background: var(--accent); color: var(--white); }

.v3 .dsc__intro { margin: 0 0 var(--s-2); color: var(--body); font-size: var(--fs-sm); }

.v3 .dsc__progress { height: 4px; border-radius: 2px; background: var(--surface); overflow: hidden; }

.v3 .dsc__progress span { display: block; height: 100%; background: var(--accent); transition: width var(--t-base); }

.v3 .dsc__count, .v3 .dsc__label { margin: 0; color: var(--muted); font-size: var(--fs-xs); }

.v3 .dsc__label { margin-top: var(--s-2); }

.v3 .dsc__q { margin: 0; color: var(--ink); font-size: 1.25rem; font-weight: var(--w-medium); line-height: 1.25; }

.v3 .dsc__help { margin: -4px 0 0; color: var(--body); font-size: var(--fs-sm); }

.v3 .dsc__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .dsc__chips .chip { min-height: 44px; padding: 0 var(--s-4); font-size: var(--fs-sm); }

.v3 .dsc__nav { display: flex; justify-content: space-between; margin-top: var(--s-2); }

.v3 .dsc__link { min-height: 44px; padding: 0; border: 0; background: none; color: var(--ink); font-size: var(--fs-sm); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; cursor: pointer; }

.v3 .dsc__modes { display: grid; gap: var(--s-2); }

.v3 .dsc__mode { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-3) var(--s-4); border: 1.5px solid var(--line); border-radius: var(--r-sm); background: var(--white); text-align: left; cursor: pointer; }

.v3 .dsc__mode svg { width: 22px; height: 22px; flex: none; color: var(--muted); }

.v3 .dsc__mode span { display: grid; }

.v3 .dsc__mode b { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .dsc__mode small { color: var(--body); font-size: var(--fs-xs); }

.v3 .dsc__mode[aria-checked="true"] { border-color: var(--ink); }

.v3 .dsc__mode[aria-checked="true"] svg { color: var(--accent); }

.v3 .dsc__go { margin-top: var(--s-3); }

.v3 .dsc__later { justify-self: center; }

.v3 .dsc__summary { padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: var(--surface-soft); }

.v3 .dsc__summary ul { display: grid; gap: 4px; margin: var(--s-2) 0 0; padding: 0; list-style: none; font-size: var(--fs-sm); color: var(--ink); }

.v3 .dsc__summary li span { display: inline-block; min-width: 64px; color: var(--muted); font-size: var(--fs-xs); }

@media (hover: hover) and (pointer: fine) {
    .v3 .dsc__link:hover { text-decoration-color: var(--venta); }
    .v3 .dsc__mode:hover { border-color: var(--muted); }
    .v3 .dsc__mode[aria-checked="true"]:hover { border-color: var(--ink); }
}

/*  --- propiedad.css ---  */

/* Ficha de propiedad (venta usada y alquiler)
   Se carga después de proyecto.css: reutiliza galería, visor, panel de consulta, .fp-* y la
   barra fija del celular. Acá va solo lo que la ficha de proyecto no tiene. */

/* Referencia de la propiedad al lado de las etiquetas */

.v3 .fp-tags__ref { color: var(--muted); font-size: var(--fs-xs); letter-spacing: 0.02em; }

/* Precio por mes: "/ mes" más chico y en gris, en todos los lugares donde aparece el precio */

.v3 .fp-head__price strong small,
.v3 .fp-buy__price strong small,
.v3 .fp-bar__price strong small,
.v3 .ask__amount small {
    display: inline;  /* proyecto.css pone en bloque el small de .fp-buy__price: acá va al lado del precio */
    color: var(--muted);
    font-size: var(--fs-sm);
    font-weight: var(--w-book);
    letter-spacing: 0;
}

/* Aclaración debajo de la galería (por ejemplo, fotos amobladas con IA) */

.v3 .fp-photo-note {
    display: flex;
    gap: var(--s-2);
    margin: var(--s-3) 0 0;
    color: var(--body);
    font-size: var(--fs-xs);
    line-height: 1.45;
}

.v3 .fp-photo-note svg { width: 16px; height: 16px; flex: none; margin-top: 1px; color: var(--accent); }

/* Datos clave: cinco datos en una fila en desktop */

@media (min-width: 1024px) {
    .v3 .fp-facts--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* Comodidades separadas en dos grupos (la unidad y el edificio) */

.v3 .fp-group + .fp-group { margin-top: var(--s-5); }

.v3 .fp-subh { margin: 0 0 var(--s-3); color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; }

/* Para alquilar: condiciones en filas, etiqueta a la izquierda y valor a la derecha */

.v3 .fp-terms { margin: 0; border-top: 1px solid var(--surface); }

.v3 .fp-terms div { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-4); padding: var(--s-3) 0; border-bottom: 1px solid var(--surface); }

.v3 .fp-terms dt { color: var(--body); font-size: var(--fs-sm); }

.v3 .fp-terms dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); text-align: right; }

/* Caja lateral: datos de la propiedad debajo del precio */

.v3 .ask__specs { display: block; margin-top: var(--s-1); color: var(--body); font-size: var(--fs-sm); }

/* Celular: la foto va primero (proyecto.css la sube con order: -1); la aclaración la acompaña */

@media (max-width: 1023px) {
    .v3 main > .container:first-child > .fp-photo-note { order: -1; margin: calc(var(--s-5) * -1 + var(--s-2)) 0 var(--s-4); }
}

/* Asesor asignado: foto en círculo, "Te atiende", nombre (link a su perfil) y zona */

.v3 .fp-agent { display: flex; align-items: center; gap: var(--s-3); }

.v3 .fp-agent__photo { width: 56px; height: 56px; flex: none; border-radius: 50%; object-fit: cover; background: var(--surface); }

.v3 .fp-agent > div { display: grid; line-height: 1.3; }

.v3 .fp-agent__label { color: var(--muted); font-size: var(--fs-xs); }

.v3 .fp-agent__name { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); text-decoration: underline 1.5px var(--line); text-underline-offset: 3px; }

.v3 .fp-agent__meta { color: var(--body); font-size: var(--fs-xs); }

.v3 .fp-agent--ask { margin-top: var(--s-4); padding-top: var(--s-4); border-top: 1px solid var(--surface); }

.v3 .fp-agent--buy .fp-agent__photo { width: 44px; height: 44px; }

@media (hover: hover) and (pointer: fine) { .v3 .fp-agent__name:hover { text-decoration-color: var(--venta); } }

/* Superficie: los m² totales arriba y los edificados debajo, más chicos */

.v3 .fp-facts dd small { display: block; color: var(--body); font-size: var(--fs-xs); font-weight: var(--w-book); }

/* Encabezado de las fichas de propiedad: los títulos son más largos que el nombre de un proyecto
   ("Apartamento de 1 dormitorio en Tres Cruces"). Un poco más chico, llenando cada renglón
   (no en líneas parejas, que dejan medio ancho vacío) y sin una palabra sola abajo; el precio "/ mes" nunca se corta.
   El título va a todo el ancho; el precio, la consulta y los íconos bajan a la altura de la dirección. */

.v3 .fp-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 var(--s-4); align-items: end; }

.v3 .fp-head__main { display: contents; }

.v3 .fp-head .fp-tags, .v3 .fp-head h1 { grid-column: 1 / -1; }

.v3 .fp-head .fp-head__addr, .v3 .fp-head .fp-head__project { grid-column: 1; }

.v3 .fp-head__addr { margin-top: var(--s-3); }

.v3 .fp-head__side { grid-column: 2; grid-row: 3 / span 2; align-self: end; margin-top: var(--s-3); }

.v3 .fp-head h1 { font-size: clamp(1.5rem, 1.15rem + 1.2vw, 2.125rem); text-wrap: pretty; }

.v3 .fp-head__price strong { white-space: nowrap; }

/* En la computadora el estado y los badges van sobre la primera foto, como en el celular, y en propiedades la Ref.
   a la derecha de las migas: el título sube y no queda un renglón casi vacío arriba. «Usado» no se muestra.
   En proyectos la entrega sale del cabezal: está en los datos, apenas debajo de las fotos. Las landings no cambian. */

.v3 .crumbs__ref { display: none; }

@media (min-width: 1024px) {
    .v3 #property-page-wrapper:not(.lp) .crumbs__ref { display: inline; margin-left: auto; font-size: var(--fs-xs); letter-spacing: 0.02em; }
    .v3 :is(#property-page-wrapper, #project-page-wrapper):not(.lp) .fp-head .fp-tags { display: none; }
    .v3 :is(#property-page-wrapper, #project-page-wrapper):not(.lp) .fp-head__side { grid-row: 2 / span 2; }
    .v3 :is(#property-page-wrapper, #project-page-wrapper):not(.lp) .gallery__tags { position: absolute; left: var(--s-4); bottom: var(--s-4); z-index: 1; display: flex; flex-wrap: wrap; gap: 6px; max-width: 45%; }
    .v3 :is(#property-page-wrapper, #project-page-wrapper):not(.lp) .gallery__tags span { display: inline-flex; align-items: center; padding: 5px 11px; border-radius: var(--r-pill); background: rgb(255 255 255 / 0.95); color: var(--accent-ink); font-size: var(--fs-xs); font-weight: var(--w-medium); line-height: 1.3; }
    .v3 :is(#property-page-wrapper, #project-page-wrapper):not(.lp) .gallery__tags span.is-plain { color: var(--ink); }

    /* El nombre del proyecto es corto: el precio, la consulta y compartir van a su lado, no abajo */
    .v3 #project-page-wrapper:not(.lp) .fp-head h1 { grid-column: 1; }
    .v3 #project-page-wrapper:not(.lp) .fp-head__side { grid-row: 1 / span 2; align-self: center; margin-top: 0; }
}

/*  --- listado.css ---  */

/* Listados: propiedades (listado.html) y proyectos (proyectos.html).
   Migas, título con la cantidad, barra de filtros, chips activos, grilla vertical,
   vista con mapa, paginación, estado vacío y texto SEO. El panel de filtros es el
   .sheet de la ficha de proyecto (copiado acá porque esta página no carga proyecto.css). */

.v3 { --bar-h: 64px; }

/* El atributo hidden gana sobre los display de los componentes (botones, grilla, paginación) */

.v3 .lst-active [hidden],
.v3 .lst-body [hidden] { display: none; }

/* ---------- Migas y encabezado ---------- */

.v3 .lst-page .crumbs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-4) 0 var(--s-2);
    font-size: var(--fs-sm);
    color: var(--muted);
}

.v3 .lst-page .crumbs a { text-decoration: none; color: var(--body); }

.v3 .lst-page .crumbs [aria-current] { color: var(--ink); }

.v3 .lst-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--s-1) var(--s-4);
    padding-bottom: var(--s-4);
}

.v3 .lst-head h1 {
    font-size: var(--fs-2xl);
    font-weight: var(--w-medium);
    letter-spacing: -0.02em;
    line-height: 1.15;
    text-wrap: balance;
}

.v3 .lst-count { margin: 0; color: var(--body); font-size: var(--fs-sm); }

.v3 .lst-count strong { color: var(--ink); font-weight: var(--w-medium); }

/* ---------- Barra de filtros (fija debajo del header) ---------- */

.v3 .lst-bar {
    position: sticky;
    top: var(--header-h);
    z-index: 30;
    background: rgb(255 255 255 / 0.96);
    backdrop-filter: blur(12px);
    border-top: 1px solid var(--surface);
    border-bottom: 1px solid var(--surface);
}

.v3 .lst-bar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2) var(--s-4);
    min-height: var(--bar-h);
    padding-block: var(--s-3);
}

.v3 .lst-filters { display: none; flex-wrap: wrap; align-items: center; gap: var(--s-2); }

.v3 .lst-tools { display: none; align-items: center; gap: var(--s-3); margin-left: auto; }

/* Select y botón con borde: misma caja */

.v3 .lst-select { position: relative; display: inline-flex; }

.v3 .lst-select select,
.v3 .lst-pick {
    appearance: none;
    -webkit-appearance: none;
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    min-height: 40px;
    padding: 0 32px 0 var(--s-3);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;
    color: var(--ink);
    font-size: var(--fs-sm);
    font-weight: var(--w-book);
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    field-sizing: content; /* el select mide lo que la opción elegida, no la más larga */
    transition: background-color var(--t-fast), border-color var(--t-fast);
}

.v3 .lst-pick--plain { padding-right: var(--s-3); background-image: none; }

.v3 .lst-pick svg { width: 18px; height: 18px; }

.v3 .lst-select select.is-set,
.v3 .lst-pick.is-set { border-color: var(--ink); font-weight: var(--w-medium); }

.v3 .lst-pick__n {
    display: inline-grid;
    place-items: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: var(--r-pill);
    background: var(--ink);
    color: var(--white);
    font-size: 0.6875rem;
    font-weight: var(--w-medium);
}

.v3 .lst-pick__n:empty { display: none; }

.v3 .lst-sort { display: inline-flex; align-items: center; gap: var(--s-2); color: var(--body); font-size: var(--fs-sm); white-space: nowrap; }

/* Lista / Mapa: selector segmentado */

.v3 .lst-view {
    display: inline-grid;
    grid-auto-flow: column;
    gap: 2px;
    padding: 3px;
    border-radius: var(--r-sm);
    background: var(--surface);
}

.v3 .lst-view button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 34px;
    padding: 0 var(--s-3);
    border: 0;
    border-radius: calc(var(--r-sm) - 2px);
    background: transparent;
    color: var(--body);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    cursor: pointer;
}

.v3 .lst-view button svg { width: 16px; height: 16px; }

.v3 .lst-view button[aria-pressed="true"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }

/* Celular: dos botones que ocupan la fila */

.v3 .lst-mbar { display: flex; flex: 1; gap: var(--s-2); }

.v3 .lst-mbar .btn { flex: 1; min-height: 44px; }

.v3 .lst-mbar .btn svg { width: 18px; height: 18px; }

@media (min-width: 1024px) {
    .v3 .lst-filters, .v3 .lst-tools { display: flex; }
    .v3 .lst-mbar { display: none; }
}

/* ---------- Filtros activos ---------- */

.v3 .lst-active {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2);
    padding: var(--s-4) 0 0;
}

.v3 .lst-active .chip { min-height: 36px; padding: 0 var(--s-3); background: var(--surface-soft); border-color: transparent; }

.v3 .lst-active .chip--removable::after { margin-left: 2px; color: var(--body); }

.v3 .lst-active .btn--ghost { min-height: 36px; padding-inline: var(--s-2); font-size: var(--fs-sm); }

.v3 .lst-active:not(:has(.chip)) .lst-clear { display: none; }

/* ---------- Resultados y mapa ---------- */

.v3 .lst-body {
    display: grid;
    gap: var(--s-6);
    padding: var(--s-5) 0 var(--s-8);
}

.v3 .lst-grid {
    display: grid;
    gap: var(--s-6) var(--s-5);
    grid-template-columns: minmax(0, 1fr);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .lst-grid > li { display: grid; min-width: 0; }

@media (min-width: 640px) { .v3 .lst-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

@media (min-width: 1024px) { .v3 .lst-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

@media (min-width: 1200px) { .v3 .lst-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* como la home: 4 por fila en pantallas grandes */

@media (min-width: 1600px) { .v3 .lst-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

/* monitores grandes: una columna más */

/* En el listado no hay carrusel de cards: las fotos de cada card sí se deslizan con el dedo */

.v3 .lst-grid .card__slides {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    overscroll-behavior-x: contain;
}

.v3 .lst-grid .card__slides::-webkit-scrollbar { display: none; }

.v3 .lst-grid .card__slides img { scroll-snap-align: start; }

/* Card resaltada desde el mapa */

.v3 .lst-grid .card.is-hot .card__media { box-shadow: 0 0 0 2px var(--ink); }

.v3 .lst-map { display: none; }

.v3 .lst-body[data-view="mapa"] .lst-map { display: block; }

.v3 .lst-map__canvas {
    position: relative;
    height: calc(100svh - var(--header-h) - var(--bar-h) - 96px);
    min-height: 420px;
    border-radius: var(--r-md);
    overflow: hidden;
    /* Calles dibujadas: es un recuadro de prototipo, en el sitio va Google Maps */
    background:
        radial-gradient(120% 70% at 85% 115%, #d9dee2 0 45%, transparent 45.5%),
        repeating-linear-gradient(28deg, transparent 0 58px, rgb(255 255 255 / 0.9) 58px 61px),
        repeating-linear-gradient(-62deg, transparent 0 74px, rgb(255 255 255 / 0.9) 74px 77px),
        var(--surface);
}

.v3 .lst-map__label {
    position: absolute;
    left: var(--s-4);
    bottom: var(--s-4);
    color: var(--muted);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
}

.v3 .pin {
    position: absolute;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 var(--s-2);
    border: 0;
    border-radius: var(--r-sm);
    background: var(--white);
    color: var(--ink);
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    white-space: nowrap;
    text-decoration: none;
    box-shadow: var(--shadow-1), 0 0 0 1px rgb(0 0 0 / 0.06);
    transform: translate(-50%, -100%);
    transition: background var(--t-fast), color var(--t-fast);
}

.v3 .pin::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -5px;
    width: 10px;
    height: 10px;
    background: inherit;
    transform: translateX(-50%) rotate(45deg);
    border-radius: 0 0 2px 0;
    z-index: -1;
}

.v3 .pin.is-hot { z-index: 3; background: var(--ink); color: var(--white); }

.v3 .lst-map .proto-note { margin-top: var(--s-2); }

/* Desktop con mapa: lista a la izquierda (2 columnas), mapa fijo a la derecha */

@media (min-width: 1024px) {
    .v3 .lst-body[data-view="mapa"] { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: start; }
    .v3 .lst-body[data-view="mapa"] .lst-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .v3 .lst-body[data-view="mapa"] .lst-map { position: sticky; top: calc(var(--header-h) + var(--bar-h) + var(--s-4)); }
}

/* Celular y tablet con mapa: el mapa reemplaza a la lista */

@media (max-width: 1023px) {
    .v3 { --bar-h: 68px; }
    .v3 .lst-body[data-view="mapa"] .lst-results { display: none; }
    .v3 .lst-map__canvas { height: calc(100svh - var(--header-h) - var(--bar-h) - 140px); min-height: 360px; }
}

/* Botón flotante Lista / Mapa (celular y tablet) */

.v3 .lst-fab {
    position: fixed;
    left: 50%;
    bottom: calc(var(--s-5) + env(safe-area-inset-bottom));
    z-index: 45;
    transform: translateX(-50%);
    box-shadow: var(--shadow-2);
}

.v3 .lst-fab svg { width: 18px; height: 18px; }

@media (min-width: 1024px) { .v3 .lst-fab { display: none; } }

/* ---------- Paginación ---------- */

.v3 .pager {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--s-1) var(--s-2);
    margin-top: var(--s-7);
    font-size: var(--fs-sm);
}

.v3 .pager ol { display: flex; gap: var(--s-1); margin: 0; padding: 0; list-style: none; }

.v3 .pager a,
.v3 .pager span {
    display: inline-grid;
    place-items: center;
    min-width: 44px;
    min-height: 44px;
    padding: 0 var(--s-2);
    border-radius: var(--r-sm);
    color: var(--ink);
    text-decoration: none;
}

.v3 .pager ol a[aria-current="page"] { background: var(--ink); color: var(--white); font-weight: var(--w-medium); }

.v3 .pager .pager__step { display: inline-flex; align-items: center; gap: var(--s-1); }

.v3 .pager__step svg { width: 16px; height: 16px; }

.v3 .pager [aria-disabled="true"] { color: var(--line); pointer-events: none; }

.v3 .pager__gap { color: var(--muted); }

.v3 .pager__info { flex-basis: 100%; margin: var(--s-2) 0 0; color: var(--muted); font-size: var(--fs-xs); text-align: center; }

/* ---------- Estado vacío ---------- */

.v3 .lst-empty {
    display: grid;
    justify-items: center;
    gap: var(--s-3);
    max-width: 520px;
    margin: var(--s-6) auto;
    padding: var(--s-7) var(--s-5);
    border-radius: var(--r-md);
    background: var(--surface-soft);
    text-align: center;
}

.v3 .lst-empty[hidden] { display: none; }

.v3 .lst-empty__icon { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--white); }

.v3 .lst-empty__icon svg { width: 24px; height: 24px; }

.v3 .lst-empty h2 { font-size: var(--fs-xl); }

.v3 .lst-empty p { margin: 0; font-size: var(--fs-sm); }

.v3 .lst-empty__tips { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-2); margin: var(--s-2) 0; }

.v3 .lst-empty__tips .chip { text-decoration: none; }

.v3 .lst-empty__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-2); }

/* ---------- Búsquedas relacionadas (links internos para buscadores) ----------
   Franja baja a todo el ancho: un grupo por fila, rótulo a la izquierda y los links corridos con «·».
   El anchor text va completo ("Apartamentos en Cordón"); el separador lo pone el CSS. */

.v3 .seo-links { padding: var(--s-6) 0; }

.v3 .seo-links .title__section { margin-bottom: var(--s-4); }

.v3 .seo-links__text { max-width: 68ch; margin: 0 0 var(--s-4); color: var(--body); font-size: var(--fs-sm); line-height: var(--lh-body); }

/* La guía del barrio en «Ubicación» de la ficha: como el resto de los links del sitio */
.v3 .fp-guide-link { margin: calc(-1 * var(--s-2)) 0 var(--s-4); font-size: var(--fs-sm); }
.v3 .fp-guide-link a { color: var(--ink); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; transition: text-decoration-color var(--t-fast); }

/* Como el resto de los links del sitio: subrayado gris fino que pasa a salmón en hover */
.v3 .seo-links__text a { color: var(--ink); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; transition: text-decoration-color var(--t-fast); }

.v3 .seo-links__row { display: grid; gap: var(--s-1); padding: var(--s-3) 0; border-top: 1px solid var(--line); }

.v3 .seo-links__row h3 { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); line-height: 1.7; }

.v3 .seo-links__row ul { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; font-size: var(--fs-sm); line-height: 1.7; }

.v3 .seo-links__row li:not(:last-child)::after { content: "·"; padding: 0 var(--s-2); color: var(--muted); }  /* al final: si la fila baja de línea, el punto no queda al principio */

.v3 .seo-links__row a { color: var(--ink); }

.v3 .seo-links__row a span { color: var(--muted); }

@media (min-width: 640px) {
    .v3 .seo-links__row { grid-template-columns: minmax(140px, 180px) minmax(0, 1fr); gap: var(--s-5); }
}

@media (max-width: 639px) {
    .v3 .seo-links { padding: var(--s-5) 0; }
}

/* ---------- Panel desde abajo (copia del .sheet de la ficha de proyecto) ---------- */

.v3 .lst-page .sheet {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    align-items: end;
    visibility: hidden;
}

.v3 .sheet__backdrop {
    position: absolute;
    inset: 0;
    background: rgb(0 0 0 / 0.4);
    opacity: 0;
    transition: opacity var(--t-base);
}

.v3 .sheet__panel {
    position: relative;
    display: flex;
    flex-direction: column;
    max-height: 92vh;
    border-radius: var(--r-md) var(--r-md) 0 0;
    background: var(--white);
    transform: translateY(100%);
    transition: transform var(--t-base);
}

.v3 .sheet__grip {
    flex: none;
    width: 40px;
    height: 4px;
    margin: var(--s-3) auto 0;
    border-radius: var(--r-pill);
    background: var(--line);
}

.v3 .lst-page .sheet.is-open { visibility: visible; }

.v3 .lst-page .sheet.is-open .sheet__backdrop { opacity: 1; }

.v3 .lst-page .sheet.is-open .sheet__panel { transform: none; }

.v3 .fsheet__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--s-3);
    padding: var(--s-2) var(--s-3) var(--s-2) var(--gutter);
    border-bottom: 1px solid var(--surface);
}

.v3 .fsheet__title { font-size: var(--fs-lg); font-weight: var(--w-medium); color: var(--ink); }

.v3 .fsheet__body {
    flex: 1;
    overflow-y: auto;
    padding: var(--s-2) var(--gutter) var(--s-5);
}

.v3 .fsheet__foot {
    display: flex;
    align-items: center;
    gap: var(--s-3);
    padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom));
    border-top: 1px solid var(--surface);
}

.v3 .fsheet__foot .btn--primary { flex: 1; }

.v3 .fgroup { margin: 0; padding: var(--s-5) 0; border: 0; border-bottom: 1px solid var(--surface); }

.v3 .fgroup:last-child { border-bottom: 0; }

.v3 .fgroup legend,
.v3 .fgroup__title { float: left; width: 100%; margin-bottom: var(--s-3); padding: 0; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .fgroup__opts { clear: both; display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .fgroup__opts .chip { min-height: 40px; }

.v3 .fgroup__range { clear: both; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3); }

.v3 .fgroup__range .field__input { min-height: 48px; }

.v3 .fgroup .lst-select { clear: both; display: flex; }

.v3 .fgroup .lst-select select { flex: 1; min-height: 48px; font-size: var(--fs-md); }

/* Segmentado de operación dentro del panel */

.v3 .fseg { clear: both; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 3px; border-radius: var(--r-sm); background: var(--surface); }

.v3 .fseg button { min-height: 40px; border: 0; border-radius: calc(var(--r-sm) - 2px); background: transparent; color: var(--body); font-weight: var(--w-medium); cursor: pointer; }

.v3 .fseg button[aria-pressed="true"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }

/* Orden (celular): lista de opciones */

.v3 .fsort { display: grid; margin: 0; padding: 0; list-style: none; }

.v3 .fsort label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    min-height: 52px;
    border-bottom: 1px solid var(--surface);
    color: var(--ink);
    cursor: pointer;
}

.v3 .fsort input { width: 20px; height: 20px; accent-color: var(--ink); }

/* Desktop: el panel de filtros entra desde la derecha */

@media (min-width: 1024px) {
    .v3 .sheet--side { justify-items: end; align-items: stretch; }
    .v3 .sheet--side .sheet__panel {
        width: 440px;
        max-height: none;
        height: 100%;
        border-radius: 0;
        transform: translateX(100%);
    }
    .v3 .sheet--side.is-open .sheet__panel { transform: none; }
    .v3 .sheet--side .sheet__grip { display: none; }
    .v3 .fsheet__head { min-height: var(--header-h); }
}

/* ---------- Hover (solo mouse), mismas reglas que interact.css ---------- */

@media (hover: hover) and (pointer: fine) {
    .v3 .lst-select select:hover,
    .v3 .lst-pick:hover,
    .v3 .fseg button[aria-pressed="false"]:hover,
    .v3 .lst-view button[aria-pressed="false"]:hover { background-color: var(--surface); }
    .v3 .pager ol a:not([aria-current]):hover,
    .v3 .pager__step:hover { background: var(--surface); }
    .v3 .fsort label:hover { background: var(--surface-soft); }
    .v3 .pin:hover { background: var(--ink); color: var(--white); }
    .v3 .seo-links__row a,
    .v3 .lst-page .crumbs a { text-decoration-line: underline; text-decoration-color: transparent; text-decoration-thickness: 1.5px; text-underline-offset: 4px; transition: text-decoration-color var(--t-fast); }
    .v3 .seo-links__row a:hover,
    .v3 .seo-links__text a:hover,
    .v3 .fp-guide-link a:hover { text-decoration-color: var(--venta); }
}

/* ---------- Celular ---------- */

@media (max-width: 639px) {
    .v3 .lst-page .crumbs { padding-top: var(--s-3); font-size: var(--fs-xs); }
    .v3 .lst-head { padding-bottom: var(--s-3); }
    /* pretty y no balance: llena el ancho de la primera fila y solo evita dejar una palabra sola abajo */
    .v3 .lst-head h1 { font-size: 1.5rem; text-wrap: pretty; }
    .v3 .lst-active { padding-top: var(--s-3); flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); }
    .v3 .lst-active::-webkit-scrollbar { display: none; }
    .v3 .lst-active > * { flex: none; }
    .v3 .lst-body { padding: var(--s-4) 0 var(--s-7); }
    .v3 .pager { margin-top: var(--s-6); gap: 0; }
    .v3 .pager ol { gap: 0; }
}

/* ---------- Buscador de ubicación (arriba del listado, como el de prop.com.uy) ----------
   Los lugares son etiquetas adentro del campo; el barrio no es un filtro, es lo que se busca. */

.v3 .lsearch { position: relative; z-index: 45; display: grid; gap: var(--s-2); margin: var(--s-3) 0 var(--s-4); }

/* el desplegable pasa por encima de la barra de filtros */

.v3 .lsearch__op { display: flex; gap: var(--s-4); }

.v3 .lsearch__op a { padding: var(--s-1) 0; border-bottom: 2px solid transparent; color: var(--body); font-size: var(--fs-sm); font-weight: var(--w-medium); text-decoration: none; }

.v3 .lsearch__op a[aria-current="page"] { border-bottom-color: var(--accent); color: var(--ink); }

.v3 .lsearch__row { display: flex; gap: var(--s-2); }

.v3 .lsearch__field { position: relative; display: flex; flex: 1; flex-wrap: wrap; align-items: center; gap: 6px; min-width: 0; min-height: 52px; padding: 6px var(--s-3); border: 1.5px solid var(--line); border-radius: var(--r-sm); background: var(--white); cursor: text; transition: border-color var(--t-fast); }

.v3 .lsearch__field.is-open, .v3 .lsearch__field:focus-within { border-color: var(--ink); }

.v3 .lsearch__field input { flex: 1; min-width: 140px; min-height: 36px; border: 0; background: none; color: var(--ink); font-size: var(--fs-md); outline: none; }

.v3 .lsearch__field input:focus-visible { box-shadow: none; }

.v3 .lsearch__token { display: inline-flex; align-items: center; gap: 2px; min-height: 32px; padding: 0 4px 0 var(--s-3); border-radius: var(--r-pill); background: var(--surface); color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); white-space: nowrap; }

.v3 .lsearch__token button { display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: none; color: var(--body); font-size: 18px; line-height: 1; cursor: pointer; }

.v3 .lsearch__go { flex: none; min-height: 52px; }

.v3 .lsearch__drop { position: absolute; left: -1.5px; right: -1.5px; top: calc(100% + 6px); z-index: 30; max-height: 360px; overflow-y: auto; padding: var(--s-2) 0; border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); }

.v3 .lsearch__drop[hidden], .v3 .lsearch__drop li[hidden], .v3 .lsearch__empty[hidden] { display: none; }

.v3 .lsearch__drop ul { margin: 0; padding: 0; list-style: none; }

.v3 .lsearch__group { margin: var(--s-2) var(--s-4) var(--s-1); color: var(--muted); font-size: var(--fs-xs); }

.v3 .lsearch__drop button { display: flex; align-items: center; gap: var(--s-3); width: 100%; min-height: 52px; padding: var(--s-2) var(--s-4); border: 0; background: none; text-align: left; cursor: pointer; }

.v3 .lsearch__drop button svg { width: 18px; height: 18px; flex: none; color: var(--muted); }

.v3 .lsearch__drop button span { display: grid; flex: 1; min-width: 0; line-height: 1.3; }

.v3 .lsearch__drop button b { color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .lsearch__drop button small, .v3 .lsearch__drop button em { color: var(--muted); font-size: var(--fs-xs); font-style: normal; }

.v3 .lsearch__empty { margin: var(--s-3) var(--s-4); color: var(--body); font-size: var(--fs-sm); }

/* Sin filtros activos no se muestra la fila de chips */

.v3 .lst-active:not(:has(.chip)) { display: none; }

@media (hover: hover) and (pointer: fine) {
    .v3 .lsearch__op a:hover { color: var(--ink); }
    .v3 .lsearch__token button:hover { background: var(--line); color: var(--ink); }
    .v3 .lsearch__drop button:hover { background: var(--surface-soft); }
    .v3 .lsearch__drop button:hover b { text-decoration: underline 1.5px var(--venta); text-underline-offset: 3px; }
}

@media (max-width: 639px) {
    .v3 .lsearch__go { padding-inline: var(--s-4); }
    .v3 .lsearch__field input { min-width: 100px; }
}

/* Cards del listado con contenedor: borde fino y esquinas redondeadas, para que cada
   propiedad o proyecto se lea como una unidad sobre el fondo blanco */

.v3 .lst-grid .card { height: 100%; border: 1px solid var(--surface); border-radius: var(--r-md); background: var(--white); overflow: hidden; transition: border-color var(--t-fast), box-shadow var(--t-fast); }

.v3 .lst-grid .card .card__media { border-radius: 0; }

.v3 .lst-grid .card .card__body { padding: var(--s-3) var(--s-4) var(--s-4); }

@media (hover: hover) and (pointer: fine) {
    .v3 .lst-grid .card:hover { border-color: var(--line); box-shadow: var(--shadow-1); }
}

/* Celular: para el lanzamiento los listados arrancan sin mapa (no hay botón Mapa). En desktop sigue */

@media (max-width: 1023px) {
    .v3 .lst-fab { display: none !important; }
}

/*  --- listado-alt.css ---  */

/* Alternativas del listado para comparar: B (barra lateral) y C (lista con mapa al lado) */

.v3 .alt-note { margin: var(--s-3) 0 0; }

/* =============== B · Barra lateral con barrios y cantidades =============== */

.v3 .lsb .lst-bar__inner { justify-content: space-between; }

.v3 .lsb-count { margin: 0; color: var(--body); font-size: var(--fs-sm); }

.v3 .lsb-count strong { color: var(--ink); font-weight: var(--w-medium); }

.v3 .lsb-side { display: none; }

@media (min-width: 1024px) {
    .v3 .lsb .lst-body[data-view="lista"] { grid-template-columns: 240px minmax(0, 1fr); align-items: start; gap: var(--s-7); }
    .v3 .lsb .lst-body[data-view="lista"] .lsb-side { display: grid; gap: var(--s-5); position: sticky; top: calc(var(--header-h) + var(--bar-h) + var(--s-4)); max-height: calc(100vh - var(--header-h) - var(--bar-h) - var(--s-6)); overflow-y: auto; padding-right: 18px; scrollbar-gutter: stable; scrollbar-width: thin; }  /* fija al bajar; el margen derecho deja lugar a la barra de desplazamiento para que no tape las cantidades */
    .v3 .lsb .lst-body[data-view="lista"] .lst-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .v3 .lsb .lst-mbar { display: none; }
}

.v3 .lsb-group { display: grid; gap: var(--s-2); padding-bottom: var(--s-4); border-bottom: 1px solid var(--surface); }

.v3 .lsb-title { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .lsb-seg { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 3px; border-radius: var(--r-sm); background: var(--surface); }

.v3 .lsb-seg a { display: grid; place-items: center; min-height: 36px; border-radius: calc(var(--r-sm) - 2px); color: var(--body); font-size: var(--fs-sm); font-weight: var(--w-medium); text-decoration: none; }

.v3 .lsb-seg a[aria-current="page"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }

.v3 .lsb-links { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }

.v3 .lsb-links a, .v3 .lsb-links label { display: flex; align-items: center; gap: var(--s-2); min-height: 32px; color: var(--ink); font-size: var(--fs-sm); text-decoration: none; cursor: pointer; }

.v3 .lsb-links em { margin-left: auto; color: var(--muted); font-size: var(--fs-xs); font-style: normal; }

.v3 .lsb-check { width: 16px; height: 16px; flex: none; border: 1.5px solid var(--line); border-radius: 4px; }

.v3 .lsb-links a[aria-current="page"] { font-weight: var(--w-medium); }

.v3 .lsb-links a[aria-current="page"] .lsb-check { border-color: var(--ink); background: var(--ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat; }

.v3 .lsb-links input { width: 16px; height: 16px; margin: 0; accent-color: var(--ink); }

.v3 .lsb-more { justify-self: start; min-height: 32px; padding-inline: 0; }

.v3 .lsb-range { display: flex; align-items: center; gap: var(--s-2); color: var(--muted); font-size: var(--fs-xs); }

.v3 .lsb-range label { flex: 1; min-width: 0; }

.v3 .lsb-range input { width: 100%; min-height: 40px; padding: 0 var(--s-3); border: 1.5px solid var(--line); border-radius: var(--r-sm); font-size: var(--fs-sm); outline: none; }

.v3 .lsb-range input:focus { border-color: var(--ink); box-shadow: none; }

.v3 .lsb-chips { display: flex; flex-wrap: wrap; gap: 6px; }

.v3 .lsb-chips .chip { min-height: 36px; min-width: 44px; justify-content: center; padding: 0 var(--s-3); font-size: var(--fs-xs); }

.v3 .lsb-side .proto-note { margin: 0; }

@media (hover: hover) and (pointer: fine) {
    .v3 .lsb-links a:hover { text-decoration: underline 1.5px var(--venta); text-underline-offset: 3px; }
    .v3 .lsb-links a:hover em { text-decoration: none; }
    .v3 .lsb-seg a:not([aria-current]):hover { color: var(--ink); }
}

/* =============== C · Lista horizontal con el mapa al lado =============== */

@media (min-width: 1024px) {
    /* El mapa siempre visible: no hace falta el botón Lista / Mapa */
    .v3 .lsc .lst-view { display: none; }
    .v3 .lsc .lst-body { grid-template-columns: minmax(0, 1fr) minmax(0, 0.85fr); align-items: start; gap: var(--s-6); }
    .v3 .lsc .lst-map { display: block; position: sticky; top: calc(var(--header-h) + var(--bar-h) + var(--s-4)); }
    .v3 .lsc .lst-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
    .v3 .lsc .lst-grid .card { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1fr); }
    .v3 .lsc .lst-grid .card .card__media { aspect-ratio: 4 / 3; height: 100%; }
    .v3 .lsc .lst-grid .card .card__body { align-content: center; gap: 6px; padding: var(--s-4) var(--s-5); }
    .v3 .lsc .lst-grid .cp__price { font-size: 1.5rem; }
    .v3 .lsc .lst-grid .cp__specs { font-size: var(--fs-md); }
    .v3 .lsc .lst-grid .cp__name { margin-top: var(--s-2); font-size: var(--fs-md); }
}

/* B · barrios con casillero: el casillero suma a la búsqueda; el nombre es un link a la página del barrio */

.v3 .lsb-hint { margin: -4px 0 var(--s-1); color: var(--muted); font-size: var(--fs-xs); }

.v3 .lsb-barrio { display: flex; align-items: center; gap: var(--s-2); min-height: 36px; }

.v3 .lsb-cb { display: grid; place-items: center start; width: 22px; height: 32px; flex: none; cursor: pointer; }

/* alineado con los casilleros de "Tipo de propiedad" */

.v3 .lsb-cb input { width: 16px; height: 16px; margin: 0; accent-color: var(--ink); cursor: pointer; }

.v3 .lsb-barrio a { color: var(--ink); font-size: var(--fs-sm); text-decoration: none; }

.v3 .lsb-barrio:has(input:checked) a { font-weight: var(--w-medium); }

.v3 .lsb-barrio em { margin-left: auto; color: var(--muted); font-size: var(--fs-xs); font-style: normal; }

@media (hover: hover) and (pointer: fine) {
    .v3 .lsb-barrio a:hover { text-decoration: underline 1.5px var(--venta); text-underline-offset: 3px; }
}

/* B · buscador dentro de los resultados (calle, edificio o referencia) en la barra, donde antes
   se repetía la cantidad. Los barrios se eligen en la barra lateral. */

.v3 .lsb-search { display: flex; flex: 1; gap: var(--s-2); max-width: 520px; }

.v3 .lsb-search input { flex: 1; min-width: 0; min-height: 44px; padding: 0 var(--s-3); border: 1.5px solid var(--line); border-radius: var(--r-sm); background: var(--surface-soft); color: var(--ink); font-size: var(--fs-sm); outline: none; transition: background var(--t-fast), border-color var(--t-fast); }

.v3 .lsb-search input:focus { background: var(--white); border-color: var(--ink); box-shadow: none; }

.v3 .lsb-search .btn { min-height: 44px; }

@media (max-width: 1023px) {
    .v3 .lsb .lst-bar__inner { flex-wrap: wrap; }
    .v3 .lsb-search { order: -1; flex: 1 1 100%; max-width: none; }
}

/* B · Ubicación: departamento y barrios */

.v3 .lsb-dep { display: block; }

.v3 .lsb-dep { min-width: 0; }

.v3 .lsb-dep select { width: 100%; min-width: 0; }

.v3 .lsb-title--sub { margin-top: var(--s-2); color: var(--body); font-size: var(--fs-xs); }

.v3 .lsb-filter { min-height: 36px; padding: 0 var(--s-3); border: 1.5px solid var(--line); border-radius: var(--r-sm); font-size: var(--fs-sm); outline: none; }

.v3 .lsb-filter:focus { border-color: var(--ink); box-shadow: none; }

.v3 .lsb-filter[hidden], .v3 .lsb-toggle[hidden] { display: none; }

.v3 .lsb-toggle { justify-self: start; min-height: 32px; padding: 0; border: 0; background: none; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; cursor: pointer; }

.v3 .lsb-none { color: var(--muted); font-size: var(--fs-xs); }

@media (hover: hover) and (pointer: fine) { .v3 .lsb-toggle:hover { text-decoration-color: var(--venta); } }

/* B · "Tu búsqueda" arriba de la barra lateral (desktop). En celular sigue la fila de chips */

.v3 .lsb-applied__chips { display: flex; flex-wrap: wrap; gap: 6px; }

.v3 .lsb-applied__chips > span[data-side-chips] { display: contents; }

.v3 .lsb-applied__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-3); }

.v3 .lsb-applied__head .lsb-toggle { min-height: 0; }

.v3 .lsb-applied .chip { min-height: 32px; padding: 0 var(--s-3); border-color: transparent; background: var(--surface-soft); font-size: var(--fs-xs); }

.v3 .chip--static { cursor: default; }

@media (min-width: 1024px) {
    .v3 .lsb .lst-active { display: none; }
}

/* Monitores grandes: B suma una columna (4 al lado de la barra lateral); C le da más ancho al mapa */

@media (min-width: 1600px) {
    .v3 .lsb .lst-body[data-view="lista"] .lst-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .v3 .lsc .lst-body { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

/* ===== B · Barra: buscador ancho a la izquierda; orden y vista compactos a la derecha ===== */

@media (min-width: 1024px) {
    .v3 .bar-1 .lst-bar__inner { justify-content: flex-start; }
    .v3 .bar-1 .lsb-search--bar { order: 0; flex: 1; max-width: none; }
    .v3 .bar-1 .lst-tools { order: 1; margin-left: var(--s-5); }
}

/* La barra lateral nunca se ensancha por su contenido */

@media (min-width: 1024px) {
    .v3 .lsb .lst-body[data-view="lista"] .lsb-side { grid-template-columns: minmax(0, 1fr); }
}

/* B · Al bajar, el header se esconde y el logo pasa a la barra,
   a la izquierda del buscador. Al subir, vuelve el header. Solo desktop. */

.v3 .lsb-logo { display: none; }

@media (min-width: 1024px) {
    .v3 .bar-1 .site-header { transition: transform var(--t-base), border-color var(--t-base); }
    .v3 .bar-1 .lst-bar { transition: top var(--t-base); }
    .v3 .bar-1 .lst-body[data-view="lista"] .lsb-side { transition: top var(--t-base), max-height var(--t-base); }
    .v3 .bar-1.hdr-hidden .site-header { transform: translateY(-100%); }
    .v3 .bar-1.hdr-hidden .lst-bar { top: 0; }
    .v3 .bar-1.hdr-hidden .lst-body[data-view="lista"] .lsb-side { top: calc(var(--bar-h) + var(--s-4)); max-height: calc(100vh - var(--bar-h) - var(--s-6)); }
    .v3 .bar-1.hdr-hidden .lst-body .lst-map { top: calc(var(--bar-h) + var(--s-4)); }
    .v3 .bar-1.hdr-hidden .lsb-logo { display: flex; align-items: center; order: -1; flex: none; margin-right: var(--s-2); }  /* el logo ocupa solo su ancho: el buscador sigue ancho */
    .v3 .lsb-logo img { height: 28px; width: auto; }  /* igual que en el header */
}

/* "Tu búsqueda" se oculta cuando no hay nada elegido (por ejemplo, todos los proyectos de Montevideo) */

.v3 .lsb-applied:not(:has(.chip)) { display: none; }

.v3 .lsb .lst-active:not(:has(.chip)) { display: none; }

/* Listados: el header lleva siempre su línea de abajo, para separarlo del título y los filtros */

.v3 .lsb .site-header { border-bottom-color: var(--surface); }

/* ---------- Panel de filtros del celular: ubicación con departamento y varios barrios ---------- */

.v3 .fgroup--place { display: grid; gap: var(--s-2); }

.v3 .fgroup--place .lsb-title--sub span { color: var(--muted); font-weight: var(--w-book); }

.v3 .fgroup--place .lsb-links a, .v3 .fgroup--place .lsb-links label { min-height: 40px; }

/* ---------- Celular y tablet: filtros al bajar ----------
   El header queda fijo como en el resto del sitio. La barra de filtros (buscador por calle,
   Filtros y Ordenar) se va con la página; cuando sale de pantalla aparece abajo una píldora
   flotante con Filtros y Ordenar. */

.v3 .lst-pill { display: none; }

@media (max-width: 1023px) {
    .v3 .lsb .lst-bar { position: static; }
    .v3 .lst-pill { position: fixed; left: 50%; bottom: calc(var(--s-4) + env(safe-area-inset-bottom, 0px)); z-index: 40; display: flex; padding: 4px; border-radius: 999px; background: var(--ink); box-shadow: var(--shadow-2); transform: translate(-50%, 160%); transition: transform var(--t-base); }
    .v3 .lst-pill.is-on { transform: translate(-50%, 0); }
    .v3 .lst-pill .btn { min-height: 40px; padding-inline: var(--s-4); border: 0; border-radius: 999px; background: none; color: var(--white); }
    .v3 .lst-pill .btn + .btn { border-left: 1px solid rgb(255 255 255 / 0.2); border-radius: 0 999px 999px 0; }
    .v3 .lst-pill .lst-pick__n { margin-left: 6px; }
    .v3 .lst-pill svg { width: 18px; height: 18px; }
}

@media (max-width: 1023px) and (prefers-reduced-motion: reduce) { .v3 .lst-pill { transition: none; } }

.v3 .lsb-barrio--row > label { display: flex; align-items: center; gap: var(--s-2); flex: 1; min-height: 40px; cursor: pointer; }

.v3 .lsb-barrio__name { color: var(--ink); font-size: var(--fs-sm); }

.v3 .lsb-barrio--row:has(input:checked) .lsb-barrio__name { font-weight: var(--w-medium); }

.v3 .lsb-barrio--row em { margin-left: auto; }

/* ---------- Celular: cards de los listados ----------
   Foto 4:3 (como las de las publicaciones) y los datos en dos líneas: precio y datos clave
   en la primera, nombre y ubicación en la segunda. Más bajas que la card de desktop. */

@media (max-width: 639px) {
    .v3 .lsb .lst-grid { gap: var(--s-4); }
    .v3 .lsb .lst-grid .card__media { aspect-ratio: 4 / 3; }
    .v3 .lsb .lst-grid .card__body { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: var(--s-3); row-gap: 2px; align-items: baseline; padding: var(--s-3) var(--s-4); }
    .v3 .lsb .lst-grid .cp__price { font-size: var(--fs-lg); }
    .v3 .lsb .lst-grid .cp__specs { justify-self: end; font-size: var(--fs-xs); }
    .v3 .lsb .lst-grid .cp__name, .v3 .lsb .lst-grid .cp__place { grid-column: 1 / -1; display: inline; font-size: var(--fs-xs); }
    .v3 .lsb .lst-grid .cp__name { grid-column: auto; }
    .v3 .lsb .lst-grid .cp__place { grid-column: 2; justify-self: end; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%; }
    .v3 .lsb .lst-grid .cb__head { grid-column: 1 / -1; gap: 0; }
    /* Proyectos: el precio "Desde" a la izquierda y, a la derecha, entrega y tipologías una debajo de la otra */
    .v3 .lsb .lst-grid .cb__data { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--s-1) var(--s-4); padding: var(--s-2) 0 0; }
    .v3 .lsb .lst-grid .cb__data > div:first-child { grid-column: 1; grid-row: 1 / span 2; }
    .v3 .lsb .lst-grid .cb__data > div + div { grid-column: 2; padding: 0; border-left: 0; }
    .v3 .lsb .lst-grid .cb__data > .cb__data--icon:first-child { grid-row: auto; }
    .v3 .lsb .lst-grid .cb__dev { display: none; }
}

/*  --- home.css ---  */

/* Home: inversor primero */

/* Hero */

.v3 .v3-home .hero {
    position: relative;
    display: grid;
    align-items: center;   /* texto y buscador centrados: sin aire de más arriba */
    /* Deja ver entera la franja de cifras debajo del buscador */
    min-height: clamp(400px, calc(100svh - var(--header-h) - 190px), 620px);
    padding: var(--s-7) 0;
    color: var(--white);
    background: var(--ink);
    overflow: hidden;
}

.v3 .v3-home .hero picture { display: contents; }

.v3 .v3-home .hero__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.v3 .v3-home .hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgb(0 0 0 / 0.25) 0%, rgb(0 0 0 / 0.6) 45%, rgb(0 0 0 / 0.7) 100%);
}

/* Fotos del hero (nocturnas, rotan en cada visita): el sombreado va solo detrás del texto
   y cada foto trae su encuadre (--hero-pos-d) para que el título quede sobre el cielo */
@media (min-width: 1024px) {
    .v3 .v3-home .hero::after { background: linear-gradient(90deg, rgb(0 0 0 / 0.55) 0%, rgb(0 0 0 / 0.3) 45%, rgb(0 0 0 / 0) 65%); }
    .v3 .v3-home .hero__img { object-position: var(--hero-pos-d, 50% 50%); }
}

.v3 .v3-home .hero__inner {
    position: relative;
    z-index: 1;
    display: grid;
    gap: var(--s-5);
}

.v3 .v3-home .hero h1 {
    text-wrap: balance;
    color: var(--white);
    font-size: var(--fs-3xl);
    font-weight: var(--w-medium);
    line-height: var(--lh-tight);
    letter-spacing: -0.02em;
}

.v3 .v3-home .hero h1 .nowrap { white-space: nowrap; }

@media (min-width: 640px) {
    .v3 .v3-home .hero__place { white-space: nowrap; }
}

.v3 .v3-home .hero__lead {
    max-width: 52ch;
    margin: 0;
    font-size: var(--fs-lg);
    color: rgb(255 255 255 / 0.9);
}

/* Buscador */

.v3 .v3-home .finder {
    display: grid;
    gap: 0;
    width: 100%;
    max-width: 760px;
    color: var(--ink);
}

.v3 .v3-home .finder__tabs {
    display: flex;
    gap: var(--s-1);
}

.v3 .v3-home .finder__tab {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    padding: var(--s-3) var(--s-4);
    border: 0;
    border-radius: var(--r-sm) var(--r-sm) 0 0;
    background: rgb(255 255 255 / 0.18);
    color: var(--white);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    cursor: pointer;
    backdrop-filter: blur(8px);
}

.v3 .v3-home .finder__tab[aria-selected="true"] {
    background: var(--white);
    color: var(--ink);
}

.v3 .v3-home .finder__tab[aria-selected="true"]::before {
    content: "";
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: var(--r-bubble);
    background: var(--accent);
}

.v3 .v3-home .finder__box {
    display: grid;
    gap: var(--s-2);
    padding: var(--s-3);
    border-radius: 0 var(--r-md) var(--r-md) var(--r-md);
    background: var(--white);
}

.v3 .v3-home .finder__field {
    display: flex;
    align-items: center;
    gap: var(--s-3);
    min-height: 52px;
    padding: 0 var(--s-4);
    border: 1.5px solid transparent;
    border-radius: var(--r-sm);
    background: var(--surface-soft);
    transition: background var(--t-fast), border-color var(--t-fast);
}

/* Al escribir se marca el campo entero (fondo blanco y borde negro), sin anillo adentro */

.v3 .v3-home .finder__field:focus-within { background: var(--white); border-color: var(--ink); }

.v3 .v3-home .finder__field input:focus,
.v3 .v3-home .finder__field input:focus-visible { outline: none; box-shadow: none; }

.v3 .v3-home .finder__field input {
    flex: 1;
    min-width: 0;
    border: 0;
    background: transparent;
    font-size: var(--fs-md);
    outline: none;
}

.v3 .v3-home .finder__quick {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2);
    padding: var(--s-1) var(--s-1) 0;
}

.v3 .v3-home .finder__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .v3-home .finder__quick-label {
    margin-right: var(--s-1);
    color: var(--muted);
    font-size: var(--fs-xs);
}

.v3 .v3-home .finder__quick .chip {
    min-height: 34px;
    font-size: var(--fs-xs);
    text-decoration: none;
}

@media (min-width: 640px) {
    .v3 .v3-home .finder__box {
        grid-template-columns: 1fr auto;
    }

    .v3 .v3-home .finder__quick {
        grid-column: 1 / -1;
    }
}

/* Proyectos en desktop: uno destacado a la izquierda y tres en lista a la derecha.
   Rompe la grilla de cuatro iguales que se repite en el resto de la home. */

@media (min-width: 1024px) {
    .v3 .v3-home .grid-cards.grid-cards--feature {
        grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
        grid-template-rows: repeat(3, auto);
        gap: var(--s-5) var(--s-6);
    }

    .v3 .v3-home .grid-cards--feature > .card:first-child { grid-row: 1 / -1; }
    .v3 .v3-home .grid-cards--feature > .card:first-child .card__media { flex: 1; aspect-ratio: auto; min-height: 320px; }
    .v3 .v3-home .grid-cards--feature > .card:first-child .card__body { flex: none; padding-top: var(--s-5); }
    .v3 .v3-home .grid-cards--feature > .card:first-child .card__title { font-size: var(--fs-xl); }

    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) {
        display: grid;
        grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr);
        align-items: start;
        gap: var(--s-5);
    }
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) .card__body { padding: 0; gap: var(--s-2); }
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) .cb__data { padding: var(--s-2) 0; }
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) .cb__data dd { font-size: var(--fs-xs); }
}

/* Banda de pruebas */

.v3 .v3-home .proof {
    border-bottom: 1px solid var(--surface);
}

.v3 .v3-home .proof__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-home .proof__list li {
    display: grid;
    align-content: start;   /* cifras y textos alineados arriba aunque un texto ocupe menos líneas */
    gap: 2px;
    padding: var(--s-5) var(--s-4) var(--s-5) 0;
}

.v3 .v3-home .proof__list strong {
    color: var(--ink);
    font-size: var(--fs-2xl);
    font-weight: var(--w-medium);
    line-height: 1.1;
    letter-spacing: -0.02em;
}

.v3 .v3-home .proof__list span {
    font-size: var(--fs-sm);
}

.v3 .v3-home .proof__short { display: none; }

.v3 .v3-home .proof__about {
    max-width: 72ch;
    margin: 0;
    padding: 0 0 var(--s-5);
    font-size: var(--fs-sm);
    color: var(--body);
}

.v3 .v3-home .proof__note {
    margin: 0 0 var(--s-4);
    font-size: var(--fs-xs);
    color: var(--muted);
}

@media (min-width: 640px) {   /* tres cifras en fila también en tablet: con dos, la tercera quedaba sola */
    .v3 .v3-home .proof__list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .v3 .v3-home .proof__list li + li {
        padding-left: var(--s-5);
        border-left: 1px solid var(--surface);
    }
}

/* Secciones */

.v3 .v3-home .card__dev {
    font-size: var(--fs-xs);
    color: var(--muted);
}

.v3 .v3-home .card__dev strong {
    font-weight: var(--w-medium);
    color: var(--body);
}

/* Ciclo del inversor */

.v3 .v3-home .cycle {
    display: grid;
    gap: var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: step;
}

.v3 .v3-home .cycle li {
    position: relative;
    display: grid;
    align-content: start;
    gap: var(--s-2);
    padding: var(--s-5);
    border-radius: var(--r-md);
    background: var(--white);
    counter-increment: step;
}

.v3 .v3-home .cycle li::before {
    content: counter(step);
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    margin-bottom: var(--s-2);
    border-radius: var(--r-bubble);
    background: var(--ink);
    color: var(--white);
    font-weight: var(--w-medium);
}

/* Código de color: comprar = salmón, alquilar = violeta */

.v3 .v3-home .cycle li[data-op]::before {
    background: var(--accent);
}

.v3 .v3-home .cycle h3 {
    font-size: var(--fs-lg);
}

.v3 .v3-home .cycle p {
    margin: 0;
    font-size: var(--fs-sm);
}

.v3 .v3-home .cycle a {
    margin-top: var(--s-2);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    color: var(--ink);
}

@media (min-width: 1024px) {
    .v3 .v3-home .cycle {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* Invertir: guías de temas */

.v3 .v3-home .topics {
    display: grid;
    gap: var(--s-4);
}

.v3 .v3-home .topic {
    display: grid;
    gap: var(--s-2);
    padding: var(--s-5) 0;
    border-top: 1px solid var(--line);
    text-decoration: none;
}

.v3 .v3-home .topic h3 {
    display: flex;
    justify-content: space-between;
    gap: var(--s-3);
    font-size: var(--fs-lg);
}

.v3 .v3-home .topic h3 svg {
    width: 22px;
    height: 22px;
    flex: none;
    transition: transform var(--t-fast);
}

.v3 .v3-home .topic p {
    margin: 0;
    font-size: var(--fs-sm);
}

@media (min-width: 1024px) {
    .v3 .v3-home .topics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: var(--s-6);
    }
}

/* Barrios: mosaico de fotos */

.v3 .v3-home .hoods {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 78%;
    gap: var(--s-3);
    margin-inline: calc(var(--gutter) * -1);
    padding-inline: var(--gutter);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--gutter);
    scrollbar-width: none;
}

.v3 .v3-home .hoods::-webkit-scrollbar { display: none; }

.v3 .v3-home .hood {
    position: relative;
    display: block;
    aspect-ratio: 4 / 5;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--ink);
    color: var(--white);
    text-decoration: none;
    scroll-snap-align: start;
}

.v3 .v3-home .hood img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 700ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.v3 .v3-home .hood::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgb(0 0 0 / 0) 40%, rgb(0 0 0 / 0.68) 100%);
}

.v3 .v3-home .hood__info {
    position: absolute;
    left: var(--s-5);
    right: var(--s-5);
    bottom: var(--s-5);
    z-index: 1;
    display: grid;
    gap: 2px;
}

.v3 .v3-home .hood__place {
    font-size: var(--fs-xs);
    font-weight: var(--w-medium);
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: rgb(255 255 255 / 0.8);
}

.v3 .v3-home .hood strong {
    font-size: var(--fs-xl);
    font-weight: var(--w-medium);
    line-height: 1.15;
}

.v3 .v3-home .hood__n {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    font-size: var(--fs-sm);
    color: rgb(255 255 255 / 0.9);
}

.v3 .v3-home .hood__n::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: var(--r-bubble);
    background: var(--venta);
}

.v3 .v3-home .hoods__more {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2);
    margin-top: var(--s-5);
}

.v3 .v3-home .hoods__more .label { margin-right: var(--s-2); }

.v3 .v3-home .hoods__more .chip { text-decoration: none; }

@media (min-width: 1024px) {
    .v3 .v3-home .hoods {
        grid-auto-flow: row;
        grid-auto-columns: auto;
        grid-template-columns: 2fr 1fr 1fr;
        grid-template-rows: 260px 220px;
        margin-inline: 0;
        padding-inline: 0;
        overflow: visible;
    }

    .v3 .v3-home .hood { aspect-ratio: auto; }
    .v3 .v3-home .hood--main { grid-row: span 2; }
    .v3 .v3-home .hood--main strong { font-size: var(--fs-2xl); }
    .v3 .v3-home .hood--wide { grid-column: span 2; }
}

/* Propietarios: dos tarjetas claras, color de operación en chico */

.v3 .v3-home .owners {
    display: grid;
    gap: var(--s-4);
}

.v3 .v3-home .owner {
    display: grid;
    grid-template-rows: auto 1fr;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--white);
}

.v3 .v3-home .owner__media {
    position: relative;
    aspect-ratio: 16 / 7;
    background: var(--surface);
}

.v3 .v3-home .owner__media img { width: 100%; height: 100%; object-fit: cover; }

.v3 .v3-home .owner__media .badge { position: absolute; left: var(--s-4); top: var(--s-4); }

.v3 .v3-home .owner__body {
    display: flex;
    flex-direction: column;
    gap: var(--s-4);
    padding: var(--s-5) var(--s-5) var(--s-6);
}

.v3 .v3-home .owner__title {
    font-size: var(--fs-xl);
    font-weight: var(--w-medium);
    line-height: 1.25;
}

.v3 .v3-home .owner__list {
    display: grid;
    gap: var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-sm);
}

.v3 .v3-home .owner__list li { display: flex; gap: var(--s-3); }

.v3 .v3-home .owner__list svg {
    flex: none;
    width: 20px;
    height: 20px;
    padding: 3px;
    border-radius: var(--r-bubble);
    background: var(--accent-soft);
    color: var(--accent-ink);
}

.v3 .v3-home .owner__proof {
    margin-top: auto;   /* dato y botón siempre al pie, alineados entre tarjetas */
    display: flex;
    align-items: baseline;
    gap: var(--s-3);
    padding-top: var(--s-4);
    border-top: 1px solid var(--surface);
}

.v3 .v3-home .owner__proof strong {
    color: var(--ink);
    font-size: var(--fs-2xl);
    font-weight: var(--w-medium);
    line-height: 1;
}

.v3 .v3-home .owner__proof span { font-size: var(--fs-sm); }

.v3 .v3-home .owner__cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2) var(--s-4);
}

@media (min-width: 1024px) {
    .v3 .v3-home .owners { grid-template-columns: 1fr 1fr; gap: var(--s-5); }
    .v3 .v3-home .owner__body { padding: var(--s-6); }
    .v3 .v3-home .owner__title { min-height: calc(2 * 1.25em); }
}

/* ================= Celular (hasta 639 px): home más corta y táctil ================= */

@media (max-width: 639px) {



    /* 5 · Cómo trabajamos: lista numerada sin cajas */
    .v3 .v3-home .cycle { gap: 0; }
    .v3 .v3-home .cycle li {
        grid-template-columns: 40px 1fr;
        column-gap: var(--s-4);
        row-gap: var(--s-1);
        padding: var(--s-4) 0;
        border-radius: 0;
        background: none;
        border-top: 1px solid var(--surface);
    }
    .v3 .v3-home .cycle li:last-child { border-bottom: 1px solid var(--surface); }
    .v3 .v3-home .cycle li::before { grid-row: 1 / span 3; margin: 0; width: 36px; height: 36px; }
    .v3 .v3-home .cycle h3, .v3 .v3-home .cycle p, .v3 .v3-home .cycle a { grid-column: 2; }
    .v3 .v3-home .cycle a { display: inline-flex; align-items: center; min-height: 44px; margin-top: 0; }

    /* 6 · Propietarios más corto */
    .v3 .v3-home .owner__media { aspect-ratio: 16 / 6; }
    .v3 .v3-home .owner__body { padding: var(--s-4) var(--s-4) var(--s-5); gap: var(--s-3); }
    .v3 .v3-home .owner__list li:nth-child(3) { display: none; }
    .v3 .v3-home .owner__cta .btn--primary { flex: 1; }

    /* Más aire bajo el contenido para la barra fija */
    .v3 body.has-dock { padding-bottom: 76px; }
}

/* 3 · Barra fija abajo: aparece cuando el buscador sale de pantalla */

.v3 .v3-home .home-dock {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 60;
    display: flex;
    gap: var(--s-2);
    padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom));
    background: rgb(255 255 255 / 0.96);
    backdrop-filter: blur(12px);
    border-top: 1px solid var(--surface);
    transform: translateY(110%);
    transition: transform var(--t-base);
}

.v3 .v3-home .home-dock.is-visible { transform: none; }

.v3 .v3-home .home-dock .btn--primary { flex: 1; }

@media (min-width: 1024px) {
    .v3 .v3-home .home-dock { display: none; }
}

@media (max-width: 639px) {
    .v3 .v3-home .owner__media { display: none; }
    .v3 .v3-home .owner__title::before {
        content: attr(data-label);
        display: block;
        margin-bottom: var(--s-1);
        font-size: var(--fs-xs);
        font-weight: var(--w-medium);
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--accent-ink);
    }
}

/* ===== Celular: una card entera por vez, con puntos, y encabezados compactos ===== */

@media (max-width: 639px) {
    .v3 .v3-home .hoods {
        grid-auto-columns: 100%;
        gap: var(--s-4);
    }

    /* Invertir muestra abajo las mismas guías que linkea, y Barrios termina el carrusel en la card «Ver todas las guías» */
    .v3 .v3-home #invertir .section__head-link,
    .v3 .v3-home #barrios .section__head-link { display: none; }
}

/* "Más guías": en desktop, etiqueta y chips en una línea; en celular, etiqueta arriba
   y una sola fila de chips que se desliza de costado */

.v3 .v3-home .hoods__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

@media (max-width: 639px) {
    .v3 .v3-home .hoods__more { display: grid; gap: var(--s-2); margin-top: var(--s-5); }
    .v3 .v3-home .hoods__more .label { margin: 0; }
    .v3 .v3-home .hoods__chips {
        flex-wrap: nowrap;
        margin-inline: calc(var(--gutter) * -1);
        padding: 0 var(--gutter) var(--s-1);
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent);
        mask-image: linear-gradient(90deg, #000 85%, transparent);
    }
    .v3 .v3-home .hoods__chips::-webkit-scrollbar { display: none; }
    .v3 .v3-home .hoods__chips .chip { flex: none; min-height: 40px; padding: 0 var(--s-4); background: var(--white); }
}

/* ---------- Hero y buscador en celular ----------
   Una sola tarjeta blanca: las pestañas pasan a ser un selector segmentado adentro,
   el campo y el botón debajo, y los accesos rápidos en una fila que se desliza con un
   fundido a la derecha (se ve que hay más, sin cortes secos). */

@media (max-width: 639px) {
    .v3 .v3-home .hero { min-height: 0; padding: var(--s-6) 0; }
    .v3 .v3-home .hero__inner { gap: var(--s-4); }
    .v3 .v3-home .hero h1 { font-size: 2rem; }
    .v3 .v3-home .hero__lead { font-size: var(--fs-md); }
    /* Título en celular: "Inmobiliaria PROP" grande y el lugar como bajada chica.
       Sigue todo dentro del H1, así Google lee "Inmobiliaria PROP: Montevideo y Punta del Este". */
    .v3 .v3-home .hero h1 br, .v3 .v3-home .hero__colon { display: none; }
    .v3 .v3-home .hero__place { display: block; margin-top: 6px; color: rgb(255 255 255 / 0.9); font-size: 1.125rem; font-weight: var(--w-book); letter-spacing: 0; }

    .v3 .v3-home .finder {
        gap: var(--s-3);
        padding: var(--s-3);
        border-radius: var(--r-md);
        background: var(--white);
        box-shadow: var(--shadow-2);
    }

    .v3 .v3-home .finder__tabs {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 2px;
        padding: 3px;
        border-radius: var(--r-sm);
        background: var(--surface);
    }

    .v3 .v3-home .finder__tab {
        justify-content: center;
        min-height: 40px;
        padding: 0 var(--s-2);
        border-radius: calc(var(--r-sm) - 2px);
        background: transparent;
        color: var(--body);
        backdrop-filter: none;
    }

    .v3 .v3-home .finder__tab[aria-selected="true"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }
    .v3 .v3-home .finder__tab[aria-selected="true"]::before { width: 7px; height: 7px; }

    .v3 .v3-home .finder__box { gap: var(--s-2); padding: 0; border-radius: 0; background: none; }
    .v3 .v3-home .finder__field { min-height: 48px; }

    .v3 .v3-home .finder__quick { display: grid; gap: var(--s-2); padding: var(--s-2) 0 0; border-top: 1px solid var(--surface); }
    .v3 .v3-home .finder__chips {
        flex-wrap: nowrap;
        margin-inline: calc(var(--s-3) * -1);
        padding-inline: var(--s-3);
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
        mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
    }
    .v3 .v3-home .finder__chips::-webkit-scrollbar { display: none; }
    .v3 .v3-home .finder__chips .chip { flex: none; min-height: 36px; border-color: transparent; background: var(--surface-soft); }
}

/* Celular: tres cifras en una fila con rótulos cortos. Las reseñas no se repiten acá:
   están en la sección Opiniones, que viene justo después. */

@media (max-width: 639px) {
    .v3 .v3-home .proof__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .v3 .v3-home .proof__list li { padding: var(--s-4) var(--s-2) var(--s-4) 0; }
    .v3 .v3-home .proof__list li + li { padding-left: var(--s-3); border-left: 1px solid var(--surface); }
    .v3 .v3-home .proof__list strong { font-size: var(--fs-xl); }
    .v3 .v3-home .proof__list .proof__long { display: none; }
    .v3 .v3-home .proof__list .proof__short { display: block; font-size: var(--fs-xs); line-height: 1.35; }
}

/* Puntaje al lado del link: solo "Ver las 410 en Google" es link; estrellas y 4,9 son texto */

.v3 .v3-home .reviews__score { display: flex; flex: none; align-items: center; gap: var(--s-2); margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .v3-home .reviews__score .review__stars { font-size: var(--fs-xs); letter-spacing: 1px; }

.v3 .v3-home .reviews__score > span:nth-child(2)::after { content: "·"; margin-left: var(--s-2); color: var(--muted); }

.v3 .v3-home .reviews__score .btn--ghost { min-height: 44px; padding-inline: 0; }

/* Frase del hero: la segunda oración va en su propia línea */

.v3 .v3-home .hero__lead-more { display: block; }

/* Portada en tablet y desktop: dos pesos, como el título de marca. El nombre en Medium y el lugar
   debajo en Book, más claro. El H1 sigue diciendo "Inmobiliaria PROP: Montevideo y Punta del Este" */

@media (min-width: 640px) {
    .v3 .v3-home .hero h1 br, .v3 .v3-home .hero__colon { display: none; }
    .v3 .v3-home .hero__place { display: block; margin-top: 10px; color: rgb(255 255 255 / 0.85); font-size: 0.6em; font-weight: var(--w-book); letter-spacing: -0.01em; }
}

/* Proyectos destacados con contenedor: en las tres de la derecha la foto ocupa todo el alto de la card */

@media (min-width: 1024px) {
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) { align-items: stretch; gap: 0; }
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) .card__media { aspect-ratio: auto; height: 100%; min-height: 180px; }
    .v3 .v3-home .grid-cards--feature > .card:not(:first-child) .card__body { padding: var(--s-4) var(--s-5); }
    .v3 .v3-home .grid-cards--feature > .card:first-child .card__body { padding: var(--s-5); }
}

/* Pie de la foto de portada: qué proyecto es, con link a su ficha. Abajo a la derecha,
   con el mismo link de texto del sitio (subrayado fino que pasa a salmón) */

.v3 .v3-home .hero__credit { position: absolute; z-index: 1; right: calc(max(0px, (100% - var(--container)) / 2) + var(--gutter)); bottom: var(--s-3); padding: 4px 0; color: rgb(255 255 255 / 0.85); font-size: var(--fs-xs); text-decoration: underline 1px rgb(255 255 255 / 0.4); text-underline-offset: 3px; text-shadow: 0 1px 2px rgb(0 0 0 / 0.5); transition: text-decoration-color var(--t-fast), color var(--t-fast); }

.v3 .v3-home .hero__credit:focus-visible { text-decoration-color: var(--venta); }

@media (hover: hover) and (pointer: fine) { .v3 .v3-home .hero__credit:hover { color: var(--white); text-decoration-color: var(--venta); } }

@media (max-width: 639px) { .v3 .v3-home .hero { padding-bottom: calc(var(--s-6) + 20px); } }

/* lugar para el pie debajo del buscador */

/* ---------- Primera pantalla en celular ----------
   Arriba el título sobre blanco, después la foto entera (sin texto encima),
   y la frase y el buscador sobre blanco. Buscador compacto: la lupa va dentro
   del campo y en celular no hay búsquedas sugeridas. */

.v3 .v3-home .hero__lead .nowrap { white-space: nowrap; }

@media (max-width: 639px) {
    .v3 .v3-home .hero {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto 190px auto auto;
        min-height: 0;
        padding: 0;
        background: var(--white);
        color: var(--ink);
    }
    .v3 .v3-home .hero::after { display: none; }
    .v3 .v3-home .hero__inner { display: contents; }
    .v3 .v3-home .hero__img, .v3 .v3-home .hero h1, .v3 .v3-home .hero__lead, .v3 .v3-home .finder { grid-column: 1; }

    .v3 .v3-home .hero h1 {
        grid-row: 1;
        padding: var(--s-5) var(--gutter) var(--s-4);
        color: var(--ink);
        font-size: 1.875rem;
    }
    .v3 .v3-home .hero__place { margin-top: 2px; color: var(--body); font-size: 1rem; }

    .v3 .v3-home .hero__img { position: relative; grid-row: 2; height: 190px; }

    .v3 .v3-home .hero__lead {
        grid-row: 3;
        padding: var(--s-4) var(--gutter) 0;
        color: var(--body);
        font-size: var(--fs-md);
        line-height: 1.45;
    }
    .v3 .v3-home .hero__lead-more { color: var(--ink); font-weight: var(--w-medium); }

    .v3 .v3-home .finder {
        grid-row: 4;
        gap: var(--s-3);
        padding: var(--s-4) var(--gutter) var(--s-5);
        border-radius: 0;
        background: none;
        box-shadow: none;
    }
    .v3 .v3-home .finder__tab { min-height: 38px; }

    /* Lupa dentro del campo: el teclado del celular ya tiene "Buscar" */
    .v3 .v3-home .finder__box { position: relative; }
    .v3 .v3-home .finder__field { min-height: 50px; padding-right: 56px; }
    .v3 .v3-home .finder__box > .btn--primary {
        position: absolute;
        top: 5px;
        right: 5px;
        width: 40px;
        height: 40px;
        min-height: 40px;
        padding: 0;
        gap: 0;   /* sin espacio para el texto oculto: la lupa queda centrada */
        border-radius: calc(var(--r-sm) - 1px);
        font-size: 0;
    }
    .v3 .v3-home .finder__box > .btn--primary::before {
        content: "";
        width: 18px;
        height: 18px;
        background: var(--white);
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m20 20-4.2-4.2'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m20 20-4.2-4.2'/%3E%3C/svg%3E") center / contain no-repeat;
    }

    .v3 .v3-home .finder__quick { display: none; }

    /* Crédito de la foto: abajo a la derecha, sobre la imagen, en una píldora oscura
       porque en celular la foto no lleva capa oscura */
    .v3 .v3-home .hero__credit {
        position: relative;
        grid-row: 2;
        grid-column: 1;
        align-self: end;
        justify-self: end;
        right: auto;
        bottom: auto;
        margin: 0 var(--gutter) var(--s-2) 0;
        padding: 3px 8px;
        border-radius: 999px;
        background: rgb(0 0 0 / 0.45);
        color: var(--white);
        font-size: 11px;
        text-decoration: none;
        text-shadow: none;
        -webkit-backdrop-filter: blur(6px);
        backdrop-filter: blur(6px);
    }

    .v3 .v3-home .proof { border-top: 1px solid var(--surface); }
}

/* ---------- Celular: primera pantalla elegida ----------
   Foto grande con "Inmobiliaria PROP" y la frase arriba, sobre un sombreado desde arriba
   para que se lea. "Montevideo y Punta del Este" queda oculto a la vista (sigue en el H1).
   El link al proyecto va abajo a la derecha de la foto y el buscador en una tarjeta blanca
   montada sobre el borde de la foto. */

@media (max-width: 639px) {
    .v3 .v3-home .hero { grid-template-rows: auto auto minmax(230px, 1fr) auto; }
    .v3 .v3-home .hero__place { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
    .v3 .v3-home .hero__img { position: relative; z-index: 0; grid-row: 1 / 4; align-self: stretch; height: 100%; min-height: 0; }
    .v3 .v3-home .hero::after { content: ""; display: block; position: relative; inset: auto; z-index: 1; grid-row: 1 / 4; grid-column: 1; align-self: stretch; background: linear-gradient(180deg, rgb(0 0 0 / 0.65) 0%, rgb(0 0 0 / 0.5) 40%, rgb(0 0 0 / 0) 75%); }
    .v3 .v3-home .hero h1, .v3 .v3-home .hero__lead { position: relative; z-index: 2; color: var(--white); text-shadow: 0 1px 3px rgb(0 0 0 / 0.45); }
    .v3 .v3-home .hero h1 { grid-row: 1; padding: var(--s-5) var(--gutter) var(--s-2); font-size: 1.5rem; }
    .v3 .v3-home .hero__lead { grid-row: 2; padding: 0 var(--gutter); color: rgb(255 255 255 / 0.92); }
    .v3 .v3-home .hero__lead-more { color: var(--white); }
    .v3 .v3-home .hero__credit { display: block; z-index: 2; grid-row: 3; margin-bottom: calc(var(--s-6) + var(--s-3) + 2px); border-radius: var(--r-sm); background: rgb(0 0 0 / 0.35); }  /* separado de la tarjeta y más suave: es un detalle de la foto */
    .v3 .v3-home .finder { position: relative; z-index: 3; width: auto; margin: calc(var(--s-6) * -1) var(--gutter) var(--s-5); padding: var(--s-3); border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); }
}

/* El cierre de la frase se marca también en tablet y desktop, como en celular */

@media (min-width: 640px) {
    .v3 .v3-home .hero__lead-more { color: var(--white); font-weight: var(--w-medium); }
}

/* Punto de la pestaña activa: centrado a ojo con las letras (Gotham las lleva altas en la caja) */

.v3 .v3-home .finder__tab[aria-selected="true"]::before { transform: translateY(-1px); }

/* ---------- Celular: portada elegida (opción A) ----------
   La foto llena la primera pantalla y debajo solo asoman las cifras («13 años…»): 92px es el alto de esa franja.
   La foto va en absoluto: el recorte de Cloudflare es vertical y, si la imagen entra en el flujo,
   el hero crece y las cifras quedan debajo del pliegue.
   Título y frase arriba con las jerarquías de desktop; el buscador, en el tercio de arriba del espacio libre
   (1fr arriba, 2.2fr abajo: centrado se veía bajo),
   con las pestañas translúcidas; el crédito (si la foto es de un proyecto) abajo a la derecha. Sombreado suave:
   las fotos del hero son nocturnas. En el celular el recorte ya viene de Cloudflare, así que el encuadre queda al centro. */

@media (max-width: 639px) {
    .v3 .v3-home .hero { grid-template-rows: auto auto minmax(var(--s-5), 1fr) auto minmax(var(--s-7), 2.2fr); height: calc(100svh - var(--header-h) - 92px); min-height: 0; max-height: calc(100svh - var(--header-h) - 92px); }
    .v3 .v3-home .hero picture { display: block; position: absolute; inset: 0; z-index: 0; grid-row: 1 / -1; grid-column: 1; }
    .v3 .v3-home .hero__img, .v3 .v3-home .hero::after { grid-row: 1 / 6; }
    .v3 .v3-home .hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-position: center; }
    .v3 .v3-home .hero::after { background: linear-gradient(180deg, rgb(0 0 0 / 0.3) 0%, rgb(0 0 0 / 0.1) 40%, rgb(0 0 0 / 0) 70%, rgb(0 0 0 / 0.15) 100%); }
    .v3 .v3-home .hero h1 { grid-row: 1; padding: var(--s-7) var(--gutter) var(--s-2); font-size: 1.75rem; letter-spacing: -0.02em; }
    .v3 .v3-home .hero__lead { grid-row: 2; padding: 0 var(--gutter) var(--s-5); color: rgb(255 255 255 / 0.92); }
    .v3 .v3-home .hero__lead-more { color: var(--white); font-weight: var(--w-medium); }
    .v3 .v3-home .finder { grid-row: 4; position: relative; z-index: 3; width: auto; margin: 0 var(--gutter); padding: 0; border-radius: 0; background: none; box-shadow: none; }
    .v3 .v3-home .finder__tabs { background: rgb(255 255 255 / 0.16); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
    .v3 .v3-home .finder__tab { color: var(--white); }
    .v3 .v3-home .finder__tab[aria-selected="true"] { color: var(--ink); }
    .v3 .v3-home .finder__field { background: var(--white); }
    .v3 .v3-home .hero__credit { grid-row: 5; align-self: end; margin: 0 var(--gutter) var(--s-3) 0; }
}

/* ---------- Celular: "Ver todos" de los carruseles ----------
   Botón ancho con borde debajo de los puntos (sin link arriba ni card final). El link de la
   cabecera baja reordenando la sección: la cabecera se "abre" (display: contents) para que
   el título y el link se ubiquen por separado. Al tocarlo o pasar el mouse, el texto se
   subraya en salmón, como el resto de los links. */

@media (max-width: 639px) {
    .v3 .v3-home .section:has(.grid-cards) > .container { display: flex; flex-direction: column; }
    .v3 .v3-home .section:has(.grid-cards) .section__head { display: contents; }
    .v3 .v3-home .section:has(.grid-cards) .section__head .title { order: 0; flex: none; margin-bottom: var(--s-4); }
    .v3 .v3-home .section:has(.grid-cards) .grid-cards { order: 1; }
    .v3 .v3-home .section:has(.grid-cards) .dots { order: 2; }
    .v3 .v3-home .section:has(.grid-cards) .section__head > .btn--ghost { order: 3; justify-content: center; width: 100%; min-height: 48px; margin-top: var(--s-3); border: 1.5px solid var(--ink); border-radius: var(--r-sm); text-decoration: underline 1.5px transparent; text-underline-offset: 4px; transition: text-decoration-color var(--t-fast); }
    .v3 .v3-home .section:has(.grid-cards) .section__head > .btn--ghost:active,
    .v3 .v3-home .section:has(.grid-cards) .section__head > .btn--ghost:focus-visible { text-decoration-color: var(--venta); }
}

@media (max-width: 639px) and (hover: hover) {
    .v3 .v3-home .section:has(.grid-cards) .section__head > .btn--ghost:hover { text-decoration-color: var(--venta); }
}

/* ---------- Buscador avanzado del celular (se abre desde la barra fija) ----------
   Pantalla completa: operación, campo de búsqueda, barrios más buscados y filtros
   básicos; abajo, fijos, "Limpiar" y el botón que lleva al listado. */

.v3 .v3-home .hsearch { position: fixed; inset: 0; z-index: 200; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto; background: var(--white); visibility: hidden; transform: translateY(100%); transition: transform var(--t-base), visibility 0s linear var(--t-base); }

.v3 .v3-home .hsearch.is-open { visibility: visible; transform: none; transition: transform var(--t-base); }

.v3 .v3-home .hsearch__head { display: flex; align-items: center; justify-content: space-between; min-height: var(--header-h); padding: env(safe-area-inset-top, 0px) var(--s-2) 0 var(--gutter); border-bottom: 1px solid var(--surface); }

.v3 .v3-home .hsearch__title { color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); }

.v3 .v3-home .hsearch__body { display: grid; align-content: start; gap: var(--s-5); overflow-y: auto; padding: var(--s-4) var(--gutter) var(--s-6); }

.v3 .v3-home .hsearch__seg { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; padding: 3px; border-radius: var(--r-sm); background: var(--surface); }

.v3 .v3-home .hsearch__seg button { min-height: 40px; border: 0; border-radius: calc(var(--r-sm) - 2px); background: none; color: var(--body); font-size: var(--fs-sm); font-weight: var(--w-medium); cursor: pointer; }

.v3 .v3-home .hsearch__seg button[aria-pressed="true"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }

.v3 .v3-home .hsearch__field { display: flex; align-items: center; gap: var(--s-2); min-height: 52px; padding: 0 var(--s-4); border: 1.5px solid var(--ink); border-radius: var(--r-sm); }

.v3 .v3-home .hsearch__field svg { width: 18px; height: 18px; flex: none; color: var(--muted); }

.v3 .v3-home .hsearch__field input { flex: 1; min-width: 0; border: 0; background: none; color: var(--ink); font-size: var(--fs-md); outline: none; }

.v3 .v3-home .hsearch__group { display: grid; gap: var(--s-2); min-width: 0; margin: 0; padding: 0; border: 0; }

.v3 .v3-home .hsearch__group[hidden] { display: none; }

.v3 .v3-home .hsearch__group legend { margin-bottom: var(--s-2); padding: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .v3-home .hsearch__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .v3-home .hsearch__chips .chip { min-height: 40px; }

.v3 .v3-home .hsearch__range { display: flex; align-items: center; gap: var(--s-2); color: var(--muted); font-size: var(--fs-sm); }

.v3 .v3-home .hsearch__range label { flex: 1; min-width: 0; }

.v3 .v3-home .hsearch__range input { width: 100%; min-height: 44px; padding: 0 var(--s-3); border: 1.5px solid var(--line); border-radius: var(--r-sm); font-size: var(--fs-md); outline: none; }

.v3 .v3-home .hsearch__range input:focus { border-color: var(--ink); }

.v3 .v3-home .hsearch__foot { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--surface); background: var(--white); }

/* «Buscar propiedades en venta» no entra en una línea con el padding de .btn en 375px: achica el padding y, si hace falta, parte el texto */
.v3 .v3-home .hsearch__foot .btn--primary { flex: 1; justify-content: center; min-width: 0; min-height: 48px; padding-inline: var(--s-4); white-space: normal; text-align: center; line-height: 1.2; }

@media (prefers-reduced-motion: reduce) { .v3 .v3-home .hsearch, .v3 .v3-home .hsearch.is-open { transition: none; } }

/* ---------- Desktop: proyectos de la home en cards horizontales ----------
   Cuatro proyectos iguales en dos columnas: foto a la izquierda y datos a la derecha.
   Ninguno queda como principal y no sobra espacio en blanco. */

@media (min-width: 1024px) {
    .v3 .v3-home .proj-rows .grid-cards.grid-cards--feature { grid-template-rows: none; }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card:first-child { grid-row: auto; }
    .v3 .v3-home .proj-rows .grid-cards.grid-cards--feature { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-5); }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1fr); align-items: stretch; gap: 0; }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card .card__media { aspect-ratio: auto; height: 100%; min-height: 230px; }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card .card__body { flex: none; align-content: center; gap: var(--s-2); padding: var(--s-4) var(--s-5); }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card .card__title { font-size: var(--fs-lg); }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card .cb__data { padding: var(--s-2) 0; }
    .v3 .v3-home .proj-rows .grid-cards--feature > .card .cb__data dd { font-size: var(--fs-sm); }
}

/*  --- institucional.css ---  */

/* Páginas institucionales: propietarios, nosotros y contacto.
   Reusa piezas de la home (.proof, .cycle, .reviews__score, .owner) copiadas acá para no
   cargar home.css, y suma: encabezado de página, caminos, acordeón de preguntas, formulario
   abierto con chips, equipo, sellos y datos de contacto. */

/* ---------- Migas (mismo estilo que la ficha) ---------- */

.v3 .v3-inst .crumbs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-4) 0 0;
    font-size: var(--fs-sm);
    color: var(--muted);
}

.v3 .v3-inst .crumbs a { text-decoration: none; }

.v3 .v3-inst .crumbs [aria-current="page"] { color: var(--body); }

@media (max-width: 1023px) {
    .v3 .v3-inst .crumbs a { display: inline-flex; align-items: center; min-height: 44px; }
    .v3 .v3-inst .crumbs { padding-top: 0; align-items: center; }
}

/* ---------- Encabezado de página (h1) ---------- */

.v3 .v3-inst .page-head {
    padding: 0 0 var(--s-7);
}

.v3 .v3-inst .page-head .crumbs { margin-bottom: var(--s-6); }

.v3 .v3-inst .page-head__title {
    font-size: var(--fs-3xl);
    line-height: var(--lh-tight);
}

.v3 .v3-inst .page-head__title .title__section { margin-bottom: var(--s-3); }

.v3 .v3-inst .page-head__lead {
    max-width: 60ch;
    margin: var(--s-4) 0 0;
    font-size: var(--fs-lg);
    color: var(--body);
}

.v3 .v3-inst .page-head__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2) var(--s-4);
    margin-top: var(--s-5);
}

@media (max-width: 639px) {
    .v3 .v3-inst .page-head { padding: 0 0 var(--s-6); }
    .v3 .v3-inst .page-head .crumbs { margin-bottom: var(--s-3); }
    .v3 .v3-inst .page-head__title { font-size: 1.875rem; }
    .v3 .v3-inst .page-head__lead { font-size: var(--fs-md); }
    .v3 .v3-inst .page-head__actions .btn--cta { flex: 1; }
}

/* ---------- Página no encontrada (404): caminos para seguir buscando y consulta ---------- */

.v3 .v3-notfound .nf-ops {
    display: grid;
    gap: var(--s-3);
    margin: var(--s-6) 0 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-notfound .nf-op {
    display: flex;
    align-items: center;
    gap: var(--s-4);
    height: 100%;
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-md);
    background: var(--white);
    color: var(--ink);
    text-decoration: none;
}

.v3 .v3-notfound .nf-op__icon {
    display: grid;
    place-items: center;
    flex: none;
    width: 48px;
    height: 48px;
    border-radius: var(--r-bubble);
    background: var(--accent);
    color: var(--white);
}

.v3 .v3-notfound .nf-op__icon svg { width: 22px; height: 22px; }

.v3 .v3-notfound .nf-op__body { display: grid; gap: 2px; flex: 1; min-width: 0; }

.v3 .v3-notfound .nf-op__name { font-weight: 500; font-size: var(--fs-lg); }

.v3 .v3-notfound .nf-op__text { font-size: var(--fs-sm); color: var(--body); }

.v3 .v3-notfound .nf-op__arrow { width: 20px; height: 20px; flex: none; color: var(--accent); transition: transform var(--t-fast); }

.v3 .v3-notfound .nf-talk {
    display: grid;
    gap: var(--s-5);
    align-items: center;
}

.v3 .v3-notfound .nf-talk p { max-width: 52ch; margin: var(--s-3) 0 0; color: var(--body); }

.v3 .v3-notfound .nf-talk__actions { display: flex; flex-wrap: wrap; gap: var(--s-3); }

@media (min-width: 1024px) {
    .v3 .v3-notfound .nf-ops { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); }
    .v3 .v3-notfound .nf-talk { grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-7); }
}

@media (max-width: 639px) {
    .v3 .v3-notfound .nf-op { padding: var(--s-4); }
    .v3 .v3-notfound .nf-talk__actions .btn { flex: 1 1 auto; }
}

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-notfound .nf-op:hover .nf-op__arrow { transform: translateX(4px); }
}

/* ---------- Dos caminos: Vender / Alquilar (tarjetas de la home) ---------- */

.v3 .v3-inst .paths {
    display: grid;
    gap: var(--s-4);
    margin-top: var(--s-6);
}

.v3 .v3-inst .owner {
    display: grid;
    grid-template-rows: auto 1fr;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--white);
}

.v3 .v3-inst .owner__media {
    position: relative;
    aspect-ratio: 16 / 7;
    background: var(--surface);
}

.v3 .v3-inst .owner__media img { width: 100%; height: 100%; object-fit: cover; }

.v3 .v3-inst .owner__media .badge { position: absolute; left: var(--s-4); top: var(--s-4); }

.v3 .v3-inst .owner__body {
    display: flex;
    flex-direction: column;
    gap: var(--s-4);
    padding: var(--s-5) var(--s-5) var(--s-6);
}

.v3 .v3-inst .owner__title {
    font-size: var(--fs-xl);
    font-weight: var(--w-medium);
    line-height: 1.25;
}

.v3 .v3-inst .owner__list {
    display: grid;
    gap: var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-sm);
}

.v3 .v3-inst .owner__list li { display: flex; gap: var(--s-3); }

.v3 .v3-inst .owner__list svg {
    flex: none;
    width: 20px;
    height: 20px;
    padding: 3px;
    border-radius: var(--r-bubble);
    background: var(--accent-soft);
    color: var(--accent-ink);
}

.v3 .v3-inst .owner__proof {
    margin-top: auto;
    display: flex;
    align-items: baseline;
    gap: var(--s-3);
    padding-top: var(--s-4);
    border-top: 1px solid var(--surface);
}

.v3 .v3-inst .owner__proof strong {
    color: var(--ink);
    font-size: var(--fs-2xl);
    font-weight: var(--w-medium);
    line-height: 1;
}

.v3 .v3-inst .owner__proof span { font-size: var(--fs-sm); }

.v3 .v3-inst .owner__cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-2) var(--s-4);
}

@media (min-width: 1024px) {
    .v3 .v3-inst .paths { grid-template-columns: 1fr 1fr; gap: var(--s-5); }
    .v3 .v3-inst .owner__body { padding: var(--s-6); }
    .v3 .v3-inst .owner__title { min-height: calc(2 * 1.25em); }
}

@media (max-width: 639px) {
    .v3 .v3-inst .paths { margin-top: var(--s-5); gap: var(--s-3); }
    .v3 .v3-inst .owner__media { display: none; }
    .v3 .v3-inst .owner__body { padding: var(--s-4) var(--s-4) var(--s-5); gap: var(--s-3); }
    .v3 .v3-inst .owner__title::before {
        content: attr(data-label);
        display: block;
        margin-bottom: var(--s-1);
        font-size: var(--fs-xs);
        font-weight: var(--w-medium);
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--accent-ink);
    }
    .v3 .v3-inst .owner__cta .btn--primary { flex: 1; }
}

/* ---------- Franja de cifras (como la home) ---------- */

.v3 .v3-inst .proof { border-bottom: 1px solid var(--surface); }

.v3 .v3-inst .proof__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-inst .proof__list li {
    display: grid;
    align-content: start;
    gap: 2px;
    padding: var(--s-5) var(--s-4) var(--s-5) 0;
}

.v3 .v3-inst .proof__list strong {
    color: var(--ink);
    font-size: var(--fs-2xl);
    font-weight: var(--w-medium);
    line-height: 1.1;
    letter-spacing: -0.02em;
}

.v3 .v3-inst .proof__list span { font-size: var(--fs-sm); }

.v3 .v3-inst .proof__short { display: none; }

@media (min-width: 1024px) {
    .v3 .v3-inst .proof__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .v3 .v3-inst .proof__list--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .v3 .v3-inst .proof__list li + li { padding-left: var(--s-5); border-left: 1px solid var(--surface); }
}

@media (max-width: 639px) {
    .v3 .v3-inst .proof__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .v3 .v3-inst .proof__list li { padding: var(--s-4) var(--s-2) var(--s-4) 0; }
    .v3 .v3-inst .proof__list li + li { padding-left: var(--s-3); border-left: 1px solid var(--surface); }
    .v3 .v3-inst .proof__list strong { font-size: var(--fs-xl); }
    .v3 .v3-inst .proof__list .proof__long { display: none; }
    .v3 .v3-inst .proof__list .proof__short { display: block; font-size: var(--fs-xs); line-height: 1.35; }

    /* Cuatro cifras: dos por fila */
    .v3 .v3-inst .proof__list--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .v3 .v3-inst .proof__list--4 li:nth-child(3) { padding-left: 0; border-left: 0; }
    .v3 .v3-inst .proof__list--4 li:nth-child(n + 3) { border-top: 1px solid var(--surface); }
}

/* ---------- Pasos numerados (estilo .cycle de la home) ---------- */

.v3 .v3-inst .cycle {
    display: grid;
    gap: var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: step;
}

.v3 .v3-inst .cycle li {
    position: relative;
    display: grid;
    align-content: start;
    gap: var(--s-2);
    padding: var(--s-5);
    border-radius: var(--r-md);
    background: var(--white);
    counter-increment: step;
}

.v3 .v3-inst .section:not(.section--soft) .cycle li { background: var(--surface-soft); }

.v3 .v3-inst .cycle li::before {
    content: counter(step);
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    margin-bottom: var(--s-2);
    border-radius: var(--r-bubble);
    background: var(--ink);
    color: var(--white);
    font-weight: var(--w-medium);
}

.v3 .v3-inst .cycle li[data-op]::before,
.v3 .v3-inst [data-op="venta"] .cycle li::before,
.v3 .v3-inst [data-op="alquiler"] .cycle li::before { background: var(--accent); }

.v3 .v3-inst .cycle h3 { font-size: var(--fs-lg); }

.v3 .v3-inst .cycle p { margin: 0; font-size: var(--fs-sm); }

.v3 .v3-inst .cycle a {
    margin-top: var(--s-2);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    color: var(--ink);
}

@media (min-width: 1024px) {
    .v3 .v3-inst .cycle { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .v3 .v3-inst .cycle--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 639px) {
    .v3 .v3-inst .cycle { gap: 0; }
    .v3 .v3-inst .cycle li,
    .v3 .v3-inst .section:not(.section--soft) .cycle li {
        grid-template-columns: 40px 1fr;
        column-gap: var(--s-4);
        row-gap: var(--s-1);
        padding: var(--s-4) 0;
        border-radius: 0;
        background: none;
        border-top: 1px solid var(--line);
    }
    .v3 .v3-inst .cycle li:last-child { border-bottom: 1px solid var(--line); }
    .v3 .v3-inst .cycle li::before { grid-row: 1 / span 3; margin: 0; width: 36px; height: 36px; }
    .v3 .v3-inst .cycle h3, .v3 .v3-inst .cycle p, .v3 .v3-inst .cycle a { grid-column: 2; }
    .v3 .v3-inst .cycle a { display: inline-flex; align-items: center; min-height: 44px; margin-top: 0; }
}

/* Destacado corto debajo de los pasos (p. ej. "la gestión es gratis") */

.v3 .v3-inst .callout {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-3) var(--s-5);
    margin-top: var(--s-5);
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-md);
    background: var(--accent-soft);
    color: var(--ink);
}

.v3 .v3-inst .callout strong { font-weight: var(--w-medium); }

.v3 .v3-inst .callout p { flex: 1 1 24rem; margin: 0; font-size: var(--fs-sm); }

.v3 .v3-inst .callout .btn { flex: none; }

@media (max-width: 639px) {
    .v3 .v3-inst .callout { padding: var(--s-4); }
    .v3 .v3-inst .callout .btn { flex: 1 1 100%; }
}

/* ---------- Opiniones: puntaje al lado del link (como la home) ---------- */

.v3 .v3-inst .reviews__score { display: flex; flex: none; align-items: center; gap: var(--s-2); margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .v3-inst .reviews__score .review__stars { font-size: var(--fs-xs); letter-spacing: 1px; }

.v3 .v3-inst .reviews__score > span:nth-child(2)::after { content: "·"; margin-left: var(--s-2); color: var(--muted); }

.v3 .v3-inst .reviews__score .btn--ghost { min-height: 44px; padding-inline: 0; }

/* ---------- Preguntas frecuentes en acordeón ---------- */

.v3 .v3-inst .faq {
    max-width: 820px;
    border-top: 1px solid var(--line);
}

.v3 .v3-inst .faq details { border-bottom: 1px solid var(--line); }

.v3 .v3-inst .faq summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--s-4);
    min-height: 56px;
    padding: var(--s-3) 0;
    color: var(--ink);
    font-size: var(--fs-md);
    font-weight: var(--w-medium);
    line-height: 1.35;
    list-style: none;
    cursor: pointer;
}

.v3 .v3-inst .faq summary::-webkit-details-marker { display: none; }

.v3 .v3-inst .faq summary::after {
    content: "+";
    flex: none;
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    color: var(--body);
    font-size: var(--fs-lg);
    font-weight: var(--w-book);
}

.v3 .v3-inst .faq details[open] summary::after { content: "–"; }

.v3 .v3-inst .faq__answer {
    padding: 0 var(--s-7) var(--s-5) 0;
    font-size: var(--fs-sm);
}

.v3 .v3-inst .faq__answer p:last-child { margin-bottom: 0; }

@media (max-width: 639px) {
    .v3 .v3-inst .faq__answer { padding-right: 0; }
}

/* ---------- Formulario abierto en la página ---------- */

.v3 .v3-inst .form-block {
    display: grid;
    gap: var(--s-6);
}

.v3 .v3-inst .form-block__intro p { max-width: 46ch; }

.v3 .v3-inst .form-block__trust {
    display: grid;
    gap: var(--s-3);
    margin: var(--s-5) 0 0;
    padding: 0;
    list-style: none;
    font-size: var(--fs-sm);
}

.v3 .v3-inst .form-block__trust li { display: flex; gap: var(--s-3); color: var(--ink); }

.v3 .v3-inst .form-block__trust svg { flex: none; width: 20px; height: 20px; color: var(--venta); }

.v3 .v3-inst .form-card {
    padding: var(--s-6);
    border-radius: var(--r-md);
    background: var(--white);
    box-shadow: var(--shadow-1);
}

.v3 .v3-inst .section--soft .form-card { box-shadow: none; }

.v3 .v3-inst .form-open {
    display: grid;
    gap: var(--s-4);
}

.v3 .v3-inst .form-open__hint { margin: 0; text-align: center; }

@media (min-width: 1024px) {
    .v3 .v3-inst .form-block { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr); gap: var(--s-8); align-items: start; }
}

@media (max-width: 639px) {
    .v3 .v3-inst .form-block { gap: var(--s-4); }
    .v3 .v3-inst .form-card { margin-inline: calc(var(--s-2) * -1); padding: var(--s-5) var(--s-4); }
}

/* Chips de elección dentro del formulario: radios con forma de chip */

.v3 .v3-inst .choice {
    display: grid;
    gap: var(--s-2);
    margin: 0;
    padding: 0;
    border: 0;
    min-width: 0;
}

.v3 .v3-inst .choice legend {
    padding: 0;
    margin-bottom: var(--s-2);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    color: var(--ink);
}

.v3 .v3-inst .choice__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .v3-inst .choice__chips .chip {
    position: relative;
    min-height: 44px;
    user-select: none;
}

.v3 .v3-inst .choice__chips input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.v3 .v3-inst .choice__chips .chip:has(input:checked) {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--white);
}

.v3 .v3-inst .choice__chips .chip:has(input:focus-visible) {
    outline: 2px solid var(--ink);
    outline-offset: 3px;
}

.v3 .v3-inst .choice.is-invalid .chip { border-color: var(--error); }

.v3 .v3-inst .choice.is-invalid .field__error { display: block; }

/* Pantalla de éxito */

.v3 .v3-inst .form-done {
    display: grid;
    gap: var(--s-3);
    justify-items: start;
    padding: var(--s-4) 0;
}

.v3 .v3-inst .form-done p { margin: 0; }

.v3 .v3-inst .form-done__icon { background: var(--venta); color: var(--white); }

/* ---------- Nosotros: quiénes somos ---------- */

.v3 .v3-inst .about {
    display: grid;
    gap: var(--s-6);
}

.v3 .v3-inst .about__text p { max-width: 60ch; color: var(--ink); font-size: var(--fs-lg); line-height: 1.5; }

.v3 .v3-inst .about__text p + p { color: var(--body); font-size: var(--fs-md); line-height: var(--lh-body); }

.v3 .v3-inst .about__list {
    display: grid;
    gap: var(--s-4);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-inst .about__list li {
    display: grid;
    grid-template-columns: 24px 1fr;
    gap: var(--s-3);
    padding-top: var(--s-4);
    border-top: 1px solid var(--surface);
    font-size: var(--fs-sm);
}

.v3 .v3-inst .about__list li:first-child { padding-top: 0; border-top: 0; }

.v3 .v3-inst .about__list svg { width: 22px; height: 22px; padding: 4px; border-radius: var(--r-bubble); background: var(--venta-soft); color: var(--venta-ink); }

.v3 .v3-inst .about__list strong { display: block; margin-bottom: 2px; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

@media (min-width: 1024px) {
    .v3 .v3-inst .about { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--s-8); }
}

/* ---------- Nosotros: equipo ---------- */

.v3 .v3-inst .team {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--s-5) var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-inst .team__item {
    display: grid;
    align-content: start;
    gap: var(--s-2);
    color: inherit;
    text-decoration: none;
}

.v3 .v3-inst .team__photo {
    aspect-ratio: 1;
    width: 100%;
    height: auto;
    border-radius: var(--r-md);
    background: var(--surface);
    object-fit: cover;
}

.v3 .v3-inst .team__name {
    color: var(--ink);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    line-height: 1.3;
    text-decoration-line: underline;
    text-decoration-color: transparent;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 4px;
    transition: text-decoration-color var(--t-fast);
}

.v3 .v3-inst .team__role { margin-top: -4px; font-size: var(--fs-xs); color: var(--body); }

@media (min-width: 640px) {
    .v3 .v3-inst .team { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-5) var(--s-4); }
}

/* Desktop: los 16 en dos filas de ocho */

@media (min-width: 1024px) {
    .v3 .v3-inst .team { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: var(--s-6) var(--s-4); }
}

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-inst .team__photo { transition: filter var(--t-base); }
    .v3 .v3-inst .team__item:hover .team__photo { filter: brightness(0.94); }
    .v3 .v3-inst .team__item:hover .team__name { text-decoration-color: var(--venta); }
}

/* ---------- Nosotros: matrículas y sellos ---------- */

.v3 .v3-inst .seals {
    display: grid;
    gap: var(--s-3);
    margin: 0;
    padding: 0;
    list-style: none;
}

.v3 .v3-inst .seal {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    gap: var(--s-4);
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-md);
    background: var(--white);
}

.v3 .v3-inst .seal__mark {
    display: grid;
    place-items: center;
    width: 64px;
    height: 48px;
    border-radius: var(--r-sm);
    background: var(--surface-soft);
    color: var(--ink);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    overflow: hidden;
}

.v3 .v3-inst .seal__mark img { width: 100%; height: 100%; object-fit: cover; }

.v3 .v3-inst .seal strong { display: block; color: var(--ink); font-weight: var(--w-medium); }

.v3 .v3-inst .seal span { font-size: var(--fs-sm); }

@media (min-width: 1024px) {
    .v3 .v3-inst .seals { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4); }
}

/* Cierre con llamada a la acción */

.v3 .v3-inst .closing {
    display: grid;
    gap: var(--s-5);
    align-items: center;
}

.v3 .v3-inst .closing p { max-width: 52ch; margin: var(--s-3) 0 0; }

.v3 .v3-inst .closing__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); }

@media (min-width: 1024px) {
    .v3 .v3-inst .closing { grid-template-columns: 1fr auto; gap: var(--s-8); }
}

@media (max-width: 639px) {
    .v3 .v3-inst .closing__actions .btn { flex: 1 1 100%; }
}

/* ---------- Contacto ---------- */

.v3 .v3-inst .contact {
    display: grid;
    gap: var(--s-6);
    padding-bottom: var(--s-8);
}

.v3 .v3-inst .contact__list {
    display: grid;
    margin: 0;
    padding: 0;
    list-style: none;
    border-top: 1px solid var(--line);
}

.v3 .v3-inst .contact__list li {
    display: grid;
    grid-template-columns: 40px 1fr;
    align-items: center;
    gap: var(--s-4);
    padding: var(--s-4) 0;
    border-bottom: 1px solid var(--line);
}

.v3 .v3-inst .contact__icon {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: var(--r-sm);
    background: var(--surface-soft);
    color: var(--ink);
}

.v3 .v3-inst .contact__icon svg { width: 20px; height: 20px; }

.v3 .v3-inst .contact__icon--wa svg { color: #25d366; }

.v3 .v3-inst .contact__label { display: block; font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--muted); }

.v3 .v3-inst .contact__value { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }

.v3 .v3-inst .contact__value a { display: inline-flex; align-items: center; min-height: 44px; }

.v3 .v3-inst .contact__quick { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-5); }

.v3 .v3-inst .contact__social { display: flex; align-items: center; gap: var(--s-4); margin-top: var(--s-5); padding-top: var(--s-5); border-top: 1px solid var(--surface); }

.v3 .v3-inst .contact-map { position: relative; display: block; margin-top: var(--s-6); border-radius: var(--r-md); overflow: hidden; background: var(--surface); }

.v3 .v3-inst .contact-map img { display: block; width: 100%; height: auto; aspect-ratio: 640 / 300; object-fit: cover; }

.v3 .v3-inst .contact-map__btn { position: absolute; left: var(--s-3); bottom: var(--s-3); background: var(--white); }

@media (min-width: 1024px) {
    .v3 .v3-inst .contact { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s-8); align-items: start; }
    .v3 .v3-inst .contact__form { position: sticky; top: calc(var(--header-h) + var(--s-5)); }
}

@media (max-width: 639px) {
    .v3 .v3-inst .contact { padding-bottom: var(--s-6); }
    .v3 .v3-inst .contact__quick .btn { flex: 1 1 0; }
    .v3 .v3-inst .contact-map img { aspect-ratio: 4 / 3; }
}

/* Links de texto con subrayado gris en reposo (regla 1 de interact.css) */

.v3 .v3-inst .contact__value a,
.v3 .v3-inst .faq__answer a,
.v3 .v3-inst .about__text a {
    text-decoration-line: underline;
    text-decoration-color: var(--line);
    text-decoration-thickness: 1.5px;
    text-underline-offset: 4px;
    transition: text-decoration-color var(--t-fast);
}

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-inst .contact__value a:hover,
    .v3 .v3-inst .faq__answer a:hover,
    .v3 .v3-inst .about__text a:hover { text-decoration-color: var(--venta); }
    .v3 .v3-inst .faq summary:hover::after { color: var(--ink); }
    .v3 .v3-inst .choice__chips .chip:hover:not(:has(input:checked)) { background: var(--surface); }
}

/* Contacto: el formulario en su tarjeta, con el título arriba */

.v3 .v3-inst .contact__form > .title { margin-bottom: var(--s-3); }

.v3 .v3-inst .contact__form > p { margin-bottom: var(--s-5); }

/* Reseñas sobre fondo blanco: la tarjeta pasa a gris suave para que se vea */

.v3 .v3-inst .section:not(.section--soft) .review { background: var(--surface-soft); }

/* Caminos sin cifra al pie: los botones quedan abajo y alineados entre tarjetas */

.v3 .v3-inst .paths .owner__cta { margin-top: auto; padding-top: var(--s-4); border-top: 1px solid var(--surface); }

/* Cifras: cuando son tres, van en una fila desde tablet (con dos columnas la tercera quedaba sola) */

@media (min-width: 640px) {
    .v3 .v3-inst .proof__list:has(> li:nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .v3 .v3-inst .proof__list:has(> li:nth-child(3):last-child) > li + li { padding-left: var(--s-5); border-left: 1px solid var(--surface); }
}

/*  --- barrios.css ---  */

/* Barrios: índice de guías. Grilla de cards con foto, nombre, una línea sobre el barrio
   y lo que hay publicado (proyectos y apartamentos en venta). Abajo, la entrada a Punta del Este. */

.v3 .v3-inst .hoods-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-4); margin: 0; padding: 0; list-style: none; }

@media (min-width: 640px) { .v3 .v3-inst .hoods-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

@media (min-width: 1024px) { .v3 .v3-inst .hoods-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-5); } }

@media (min-width: 1600px) { .v3 .v3-inst .hoods-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.v3 .v3-inst .hood { display: flex; flex-direction: column; height: 100%; overflow: hidden; border: 1px solid var(--surface); border-radius: var(--r-md); background: var(--white); color: inherit; text-decoration: none; transition: border-color var(--t-fast), box-shadow var(--t-fast); }

.v3 .v3-inst .hood__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface); }

.v3 .v3-inst .hood__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1); }

.v3 .v3-inst .hood__body { display: grid; align-content: start; gap: var(--s-2); flex: 1; padding: var(--s-4); }

.v3 .v3-inst .hood__name { color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); text-decoration: underline 1.5px transparent; text-underline-offset: 4px; transition: text-decoration-color var(--t-fast); }

.v3 .v3-inst .hood__text { color: var(--body); font-size: var(--fs-sm); }

.v3 .v3-inst .hood__stats { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-4); margin: var(--s-1) 0 0; padding: var(--s-3) 0 0; border-top: 1px solid var(--surface); list-style: none; color: var(--body); font-size: var(--fs-xs); }

.v3 .v3-inst .hood__stats b { color: var(--ink); font-weight: var(--w-medium); }

/* Entrada a Punta del Este: foto y texto lado a lado en desktop */

.v3 .v3-inst .pde-band { display: grid; overflow: hidden; border-radius: var(--r-md); background: var(--white); color: inherit; text-decoration: none; }

.v3 .v3-inst .pde-band__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; }

.v3 .v3-inst .pde-band__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1); }

.v3 .v3-inst .pde-band__body { display: grid; align-content: center; justify-items: start; gap: var(--s-3); padding: var(--s-5); }

.v3 .v3-inst .pde-band__text { color: var(--body); }

@media (min-width: 1024px) {
    .v3 .v3-inst .pde-band { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
    .v3 .v3-inst .pde-band__media { aspect-ratio: auto; min-height: 320px; }
    .v3 .v3-inst .pde-band__body { padding: var(--s-7); }
}

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-inst .hood:hover { border-color: var(--line); box-shadow: var(--shadow-1); }
    .v3 .v3-inst .hood:hover .hood__media img, .v3 .v3-inst .pde-band:hover .pde-band__media img { transform: scale(1.04); }
    .v3 .v3-inst .hood:hover .hood__name { text-decoration-color: var(--venta); }
    .v3 .v3-inst .pde-band:hover .btn--secondary { background: var(--surface-soft); }
}

@media (prefers-reduced-motion: reduce) { .v3 .v3-inst .hood__media img, .v3 .v3-inst .pde-band__media img { transition: none; } }

/* Son 13 guías: la primera va destacada para que ninguna fila quede con una sola card
   (2 columnas: ocupa la fila; 3 columnas: ocupa la fila; 4 columnas: 2×2) */

@media (min-width: 640px) and (max-width: 1599px) {
    .v3 .v3-inst .hoods-grid > li:first-child { grid-column: 1 / -1; }
    .v3 .v3-inst .hoods-grid > li:first-child .hood { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__media { aspect-ratio: auto; min-height: 260px; }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__body { align-content: center; padding: var(--s-6); }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__name { font-size: var(--fs-2xl); }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__text { font-size: var(--fs-md); }
}

@media (min-width: 1600px) {
    .v3 .v3-inst .hoods-grid > li:first-child { grid-column: span 2; grid-row: span 2; }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__media { flex: 1; aspect-ratio: auto; }
    .v3 .v3-inst .hoods-grid > li:first-child .hood__name { font-size: var(--fs-2xl); }
}

/*  --- zona.css ---  */

/* Zonas: guía de barrio (barrio.html) y portada de Punta del Este (punta-del-este.html).
   No carga home.css ni proyecto.css: las piezas que hacen falta de esas páginas están
   copiadas acá (hero y buscador de la home, migas, título de una línea y panel de consulta
   de la ficha), así se pueden cambiar sin romper las otras páginas. */

/* ---------- Migas ---------- */

.v3 .v3-zona .crumbs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-4) 0 var(--s-3);
    font-size: var(--fs-sm);
    color: var(--muted);
}

.v3 .v3-zona .crumbs a { text-decoration: none; }

.v3 .v3-zona .crumbs [aria-current] { color: var(--ink); }

/* ---------- Título de una línea (fichas), copiado de proyecto.css ---------- */

.v3 .v3-zona .fp-h2 { margin: 0 0 var(--s-4); color: var(--ink); font-size: 1.1875rem; font-weight: var(--w-medium); line-height: 1.25; letter-spacing: -0.01em; }

@media (min-width: 1024px) { .v3 .v3-zona .fp-h2 { font-size: 1.375rem; } }

.v3 .v3-zona .section__head .fp-h2 { flex: 1 1 20rem; margin: 0; }

/* ---------- Hero con foto (las dos páginas) ---------- */

.v3 .v3-zona .hero {
    position: relative;
    display: grid;
    align-items: end;
    min-height: clamp(360px, 52svh, 520px);
    padding: var(--s-7) 0;
    color: var(--white);
    background: var(--ink);
    overflow: hidden;
}

.v3 .v3-zona .hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

.v3 .v3-zona .hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgb(0 0 0 / 0.15) 0%, rgb(0 0 0 / 0.45) 50%, rgb(0 0 0 / 0.7) 100%);
}

@media (min-width: 1024px) {
    .v3 .v3-zona .hero::after {
        background:
            linear-gradient(90deg, rgb(0 0 0 / 0.6) 0%, rgb(0 0 0 / 0.32) 45%, rgb(0 0 0 / 0) 75%),
            linear-gradient(180deg, rgb(0 0 0 / 0) 40%, rgb(0 0 0 / 0.5) 100%);
    }
}

.v3 .v3-zona .hero__inner { position: relative; z-index: 1; display: grid; justify-items: start; gap: var(--s-4); }

.v3 .v3-zona .hero h1 {
    color: var(--white);
    font-size: var(--fs-3xl);
    font-weight: var(--w-medium);
    line-height: var(--lh-tight);
    letter-spacing: -0.02em;
    text-wrap: balance;
}

.v3 .v3-zona .hero__lead { max-width: 52ch; margin: 0; font-size: var(--fs-lg); color: rgb(255 255 255 / 0.9); }

.v3 .v3-zona .hero__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .v3-zona .hero__actions .btn--secondary { background: transparent; color: var(--white); border-color: rgb(255 255 255 / 0.7); }

/* Sobre la foto el fondo baja un paso hacia blanco translúcido (interact.css lo pasaría a gris claro) */

@media (hover: hover) and (pointer: fine) { .v3 .v3-zona .hero__actions .btn--secondary:hover { background: rgb(255 255 255 / 0.16); } }

.v3 .v3-zona .hero__crumbs { padding: 0; color: rgb(255 255 255 / 0.8); }

.v3 .v3-zona .hero__crumbs a { color: var(--white); }

.v3 .v3-zona .hero__crumbs [aria-current] { color: var(--white); }

/* Punta del Este: el buscador va dentro del hero, centrado como en la home */

.v3 .v3-zona .hero--finder { align-items: center; min-height: clamp(420px, calc(100svh - var(--header-h) - 120px), 600px); }

/* ---------- Buscador (copiado de home.css) ---------- */

.v3 .v3-zona .finder { display: grid; gap: 0; width: 100%; max-width: 760px; color: var(--ink); }

.v3 .v3-zona .finder__tabs { display: flex; gap: var(--s-1); }

.v3 .v3-zona .finder__tab {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    min-height: 44px;
    padding: var(--s-3) var(--s-4);
    border: 0;
    border-radius: var(--r-sm) var(--r-sm) 0 0;
    background: rgb(255 255 255 / 0.18);
    color: var(--white);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
    cursor: pointer;
    backdrop-filter: blur(8px);
}

.v3 .v3-zona .finder__tab[aria-selected="true"] { background: var(--white); color: var(--ink); }

.v3 .v3-zona .finder__tab[aria-selected="true"]::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: var(--r-bubble); background: var(--accent); transform: translateY(-1px); }

.v3 .v3-zona .finder__box { display: grid; gap: var(--s-2); padding: var(--s-3); border-radius: 0 var(--r-md) var(--r-md) var(--r-md); background: var(--white); }

.v3 .v3-zona .finder__field {
    display: flex;
    align-items: center;
    gap: var(--s-3);
    min-height: 52px;
    padding: 0 var(--s-4);
    border: 1.5px solid transparent;
    border-radius: var(--r-sm);
    background: var(--surface-soft);
    transition: background var(--t-fast), border-color var(--t-fast);
}

.v3 .v3-zona .finder__field:focus-within { background: var(--white); border-color: var(--ink); }

.v3 .v3-zona .finder__field input:focus,
.v3 .v3-zona .finder__field input:focus-visible { outline: none; box-shadow: none; }

.v3 .v3-zona .finder__field input { flex: 1; min-width: 0; border: 0; background: transparent; font-size: var(--fs-md); outline: none; }

.v3 .v3-zona .finder__quick { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); padding: var(--s-1) var(--s-1) 0; }

.v3 .v3-zona .finder__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.v3 .v3-zona .finder__quick-label { margin-right: var(--s-1); color: var(--muted); font-size: var(--fs-xs); }

.v3 .v3-zona .finder__quick .chip { min-height: 34px; font-size: var(--fs-xs); text-decoration: none; }

@media (min-width: 640px) {
    .v3 .v3-zona .finder__box { grid-template-columns: 1fr auto; }
    .v3 .v3-zona .finder__quick { grid-column: 1 / -1; }
}

/* ---------- Resumen del barrio ---------- */

.v3 .v3-zona .zn-intro { display: grid; gap: var(--s-6); }

@media (min-width: 1024px) { .v3 .v3-zona .zn-intro { grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-8); align-items: start; } }

.v3 .v3-zona .fp-lead { margin: 0 0 var(--s-4); color: var(--ink); font-size: var(--fs-md); line-height: 1.55; }

@media (min-width: 1024px) { .v3 .v3-zona .fp-lead { font-size: var(--fs-lg); } }

.v3 .v3-zona .fp-highlights { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }

.v3 .v3-zona .fp-highlights li { display: flex; gap: var(--s-2); color: var(--body); font-size: var(--fs-sm); line-height: 1.5; }

.v3 .v3-zona .fp-highlights svg { width: 18px; height: 18px; flex: none; margin-top: 1px; color: var(--accent); }

.v3 .v3-zona .fp-more { margin-top: var(--s-4); }

.v3 .v3-zona .fp-more summary { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); cursor: pointer; list-style: none; text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }

.v3 .v3-zona .fp-more summary::-webkit-details-marker { display: none; }

.v3 .v3-zona .fp-more[open] summary { display: none; }

.v3 .v3-zona .prose { max-width: 64ch; }

.v3 .v3-zona .prose h3 { margin: var(--s-5) 0 var(--s-2); font-size: var(--fs-md); }

.v3 .v3-zona .prose p { font-size: var(--fs-sm); }

.v3 .v3-zona .zn-figure { margin: var(--s-4) 0; }

.v3 .v3-zona .zn-figure img { width: 100%; height: auto; border-radius: var(--r-md); }

.v3 .v3-zona .zn-figure figcaption { margin-top: var(--s-2); color: var(--muted); font-size: var(--fs-xs); }

/* Caja de consulta al costado del resumen (en celular va debajo) */

.v3 .v3-zona .zn-ask { display: grid; gap: var(--s-3); padding: var(--s-5); border-radius: var(--r-md); background: var(--surface-soft); }

.v3 .v3-zona .zn-ask__title { margin: 0; color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); line-height: 1.3; }

.v3 .v3-zona .zn-ask p { margin: 0; font-size: var(--fs-sm); }

.v3 .v3-zona .zn-ask__trust { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; font-size: var(--fs-sm); }

.v3 .v3-zona .zn-ask__trust li { display: flex; gap: var(--s-2); }

.v3 .v3-zona .zn-ask__trust svg { width: 18px; height: 18px; flex: none; margin-top: 2px; color: var(--accent); }

@media (min-width: 1024px) { .v3 .v3-zona .zn-ask { position: sticky; top: calc(var(--header-h) + var(--s-5)); } }

/* ---------- Datos del barrio: fila liviana con íconos (como .fp-facts) ---------- */

.v3 .v3-zona .zn-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4) var(--s-3); margin: var(--s-5) 0 0; padding: var(--s-4) 0; border-block: 1px solid var(--surface); }

.v3 .v3-zona .zn-facts div { display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 2px; }

.v3 .v3-zona .zn-facts svg { width: 20px; height: 20px; margin-bottom: var(--s-2); color: var(--accent); }

.v3 .v3-zona .zn-facts dt { color: var(--muted); font-size: var(--fs-xs); }

.v3 .v3-zona .zn-facts dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

@media (min-width: 1024px) { .v3 .v3-zona .zn-facts { grid-template-columns: repeat(4, minmax(0, 1fr)); padding: var(--s-5) 0; } }

/* ---------- Grilla de cinco proyectos ----------
   Desktop: el primero grande a la izquierda y cuatro en dos filas a la derecha.
   Tablet: el primero a todo el ancho y los otros de a dos. Celular: el carrusel de site.js. */

@media (min-width: 640px) and (max-width: 1023px) {
    .v3 .v3-zona .grid-cards--five > .card:first-child { grid-column: 1 / -1; }
    .v3 .v3-zona .grid-cards--five > .card:first-child .card__media { aspect-ratio: 16 / 9; }
}

@media (min-width: 1024px) {
    .v3 .v3-zona .grid-cards--five { grid-template-columns: minmax(0, 1.3fr) repeat(2, minmax(0, 1fr)); }
    .v3 .v3-zona .grid-cards--five > .card:first-child { grid-row: span 2; }
    .v3 .v3-zona .grid-cards--five > .card:first-child .card__media { flex: 1; aspect-ratio: auto; min-height: 320px; }
    .v3 .v3-zona .grid-cards--five > .card:first-child .card__body { flex: none; }
    .v3 .v3-zona .grid-cards--five > .card:first-child .card__title { font-size: var(--fs-xl); }
}

/* ---------- Tarjetas de barrio o zona con foto (copiado de .hood de la home) ---------- */

.v3 .v3-zona .hoods {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 100%;
    gap: var(--s-4);
    margin-inline: calc(var(--gutter) * -1);
    padding-inline: var(--gutter);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--gutter);
    scrollbar-width: none;
}

.v3 .v3-zona .hoods::-webkit-scrollbar { display: none; }

.v3 .v3-zona .hood {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--ink);
    color: var(--white);
    text-decoration: none;
    scroll-snap-align: start;
}

.v3 .v3-zona .hood img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 700ms cubic-bezier(0.2, 0.7, 0.2, 1); }

.v3 .v3-zona .hood::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(0 0 0 / 0) 40%, rgb(0 0 0 / 0.68) 100%); }

.v3 .v3-zona .hood__info { position: absolute; left: var(--s-5); right: var(--s-5); bottom: var(--s-5); z-index: 1; display: grid; gap: 2px; }

.v3 .v3-zona .hood__place { font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; color: rgb(255 255 255 / 0.8); }

.v3 .v3-zona .hood strong { font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: 1.15; }

@media (min-width: 640px) {
    .v3 .v3-zona .hoods { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-inline: 0; padding-inline: 0; overflow: visible; }
}

@media (min-width: 1024px) { .v3 .v3-zona .hoods { grid-template-columns: repeat(4, minmax(0, 1fr)); } .v3 .v3-zona .hood { aspect-ratio: 4 / 5; } }

/* Fila de chips: en desktop en una línea; en celular se desliza con fundido a la derecha */

.v3 .v3-zona .hoods__more { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); margin-top: var(--s-5); }

.v3 .v3-zona .hoods__more .label { margin-right: var(--s-2); }

.v3 .v3-zona .hoods__more .chip { min-height: 44px; text-decoration: none; }

.v3 .v3-zona .hoods__chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }

@media (max-width: 639px) {
    .v3 .v3-zona .hoods__more { display: grid; gap: var(--s-2); }
    .v3 .v3-zona .hoods__more .label { margin: 0; }
    .v3 .v3-zona .hoods__chips {
        flex-wrap: nowrap;
        margin-inline: calc(var(--gutter) * -1);
        padding: 0 var(--gutter) var(--s-1);
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent);
        mask-image: linear-gradient(90deg, #000 85%, transparent);
    }
    .v3 .v3-zona .hoods__chips::-webkit-scrollbar { display: none; }
    .v3 .v3-zona .hoods__chips .chip { flex: none; padding: 0 var(--s-4); }
}

/* ---------- Guías de zonas (Punta del Este): foto + nombre + texto corto ---------- */

.v3 .v3-zona .zg .card__body { gap: var(--s-2); }

.v3 .v3-zona .zg__text {
    margin: 0;
    color: var(--body);
    font-size: var(--fs-sm);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

@media (min-width: 1024px) { .v3 .v3-zona .grid-cards--guides { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* ---------- Mapa (sin imagen estática: recuadro con link) ---------- */

.v3 .v3-zona .zn-map {
    position: relative;
    display: grid;
    place-items: center;
    gap: var(--s-3);
    min-height: 220px;
    padding: var(--s-6);
    border-radius: var(--r-md);
    background:
        linear-gradient(90deg, rgb(0 0 0 / 0.04) 1px, transparent 1px) 0 0 / 48px 48px,
        linear-gradient(rgb(0 0 0 / 0.04) 1px, transparent 1px) 0 0 / 48px 48px,
        var(--surface-soft);
    text-align: center;
    text-decoration: none;
    color: var(--ink);
}

.v3 .v3-zona .zn-map__pin { display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--r-bubble); background: var(--accent); color: var(--white); }

.v3 .v3-zona .zn-map__pin svg { width: 24px; height: 24px; }

.v3 .v3-zona .zn-map .btn { background: var(--white); }

/* ---------- Por qué invertir (Punta del Este) ---------- */

.v3 .v3-zona .zn-why { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }

.v3 .v3-zona .zn-why li { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: var(--s-1) var(--s-3); padding: var(--s-4) 0; border-top: 1px solid var(--line); }

.v3 .v3-zona .zn-why svg { grid-row: span 2; width: 22px; height: 22px; color: var(--accent); }

.v3 .v3-zona .zn-why h3 { font-size: var(--fs-md); }

.v3 .v3-zona .zn-why p { margin: 0; font-size: var(--fs-sm); }

.v3 .v3-zona .zn-why a { color: var(--ink); }

@media (min-width: 1024px) { .v3 .v3-zona .zn-why { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--s-6); } }

/* ---------- Reseñas: puntaje al lado del link (copiado de home.css) ---------- */

.v3 .v3-zona .reviews__score { display: flex; flex: none; align-items: center; gap: var(--s-2); margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .v3-zona .reviews__score .review__stars { font-size: var(--fs-xs); letter-spacing: 1px; }

.v3 .v3-zona .reviews__score > span:nth-child(2)::after { content: "·"; margin-left: var(--s-2); color: var(--muted); }

.v3 .v3-zona .reviews__score .btn--ghost { min-height: 44px; padding-inline: 0; }

/* ---------- Cierre con consulta ---------- */

.v3 .v3-zona .zn-cta { display: grid; gap: var(--s-4); justify-items: start; }

.v3 .v3-zona .zn-cta p { max-width: 56ch; margin: 0; }

.v3 .v3-zona .zn-cta__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); }

@media (min-width: 1024px) { .v3 .v3-zona .zn-cta { grid-template-columns: minmax(0, 1fr) auto; align-items: center; } }

/* ---------- Panel de consulta (copiado de proyecto.css) ---------- */

.v3 .v3-zona .sheet { position: fixed; inset: 0; z-index: 100; display: grid; align-items: end; visibility: hidden; }

.v3 .v3-zona .sheet__backdrop { position: absolute; inset: 0; background: rgb(0 0 0 / 0.4); opacity: 0; transition: opacity var(--t-base); }

.v3 .v3-zona .sheet__panel {
    position: relative;
    max-height: 92vh;
    overflow-y: auto;
    padding: var(--s-3) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));
    border-radius: var(--r-md) var(--r-md) 0 0;
    background: var(--white);
    transform: translateY(100%);
    transition: transform var(--t-base);
}

.v3 .v3-zona .sheet__grip { width: 40px; height: 4px; margin: 0 auto var(--s-4); border-radius: var(--r-pill); background: var(--line); }

.v3 .v3-zona .sheet__close { position: absolute; top: var(--s-3); right: var(--s-3); }

.v3 .v3-zona .sheet.is-open { visibility: visible; }

.v3 .v3-zona .sheet.is-open .sheet__backdrop { opacity: 1; }

.v3 .v3-zona .sheet.is-open .sheet__panel { transform: none; }

.v3 .v3-zona .sheet__form { display: grid; gap: var(--s-4); margin-top: var(--s-5); }

.v3 .v3-zona .sheet__form .field__hint { margin: 0; text-align: center; }

@media (min-width: 1024px) {
    .v3 .v3-zona .sheet { align-items: center; justify-items: center; }
    .v3 .v3-zona .sheet__panel { width: 480px; border-radius: var(--r-md); transform: translateY(24px); opacity: 0; transition: transform var(--t-base), opacity var(--t-base); }
    .v3 .v3-zona .sheet.is-open .sheet__panel { opacity: 1; }
    .v3 .v3-zona .sheet__grip { display: none; }
}

/* ---------- Celular ---------- */

@media (max-width: 639px) {
    .v3 .v3-zona .hero { min-height: 0; padding: var(--s-6) 0; }
    .v3 .v3-zona .hero h1 { font-size: 2rem; }
    .v3 .v3-zona .hero__lead { font-size: var(--fs-md); }
    .v3 .v3-zona .hero__actions { width: 100%; }
    .v3 .v3-zona .hero__actions .btn { flex: 1; }
    .v3 .v3-zona .hero--finder { padding: var(--s-6) 0; }

    /* Buscador como en la home: una tarjeta blanca con selector segmentado */
    .v3 .v3-zona .finder { gap: var(--s-3); padding: var(--s-3); border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); }
    .v3 .v3-zona .finder__tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; padding: 3px; border-radius: var(--r-sm); background: var(--surface); }
    .v3 .v3-zona .finder__tab { justify-content: center; min-height: 44px; padding: 0 var(--s-2); border-radius: calc(var(--r-sm) - 2px); background: transparent; color: var(--body); backdrop-filter: none; }
    .v3 .v3-zona .finder__tab[aria-selected="true"] { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }
    .v3 .v3-zona .finder__tab[aria-selected="true"]::before { width: 7px; height: 7px; }
    .v3 .v3-zona .finder__box { gap: var(--s-2); padding: 0; border-radius: 0; background: none; }
    .v3 .v3-zona .finder__field { min-height: 48px; }
    .v3 .v3-zona .finder__quick { display: grid; gap: var(--s-2); padding: var(--s-2) 0 0; border-top: 1px solid var(--surface); }
    .v3 .v3-zona .finder__chips {
        flex-wrap: nowrap;
        margin-inline: calc(var(--s-3) * -1);
        padding-inline: var(--s-3);
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
        mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
    }
    .v3 .v3-zona .finder__chips::-webkit-scrollbar { display: none; }
    .v3 .v3-zona .finder__chips .chip { flex: none; min-height: 44px; border-color: transparent; background: var(--surface-soft); }

    .v3 .v3-zona .zn-facts { margin-top: var(--s-4); }
    .v3 .v3-zona .zn-cta__actions { width: 100%; }
    .v3 .v3-zona .zn-cta__actions .btn { flex: 1; }
    .v3 .v3-zona .zn-map { min-height: 180px; padding: var(--s-5); }
}

/*  --- perfil.css ---  */

/* Perfiles: desarrollador y Asesor Inmobiliario.
   Se carga después de proyecto.css (de ahí salen .crumbs, .fp-h2, .dev-stats, .dev-track,
   .fp-dev__logo y el panel .sheet de consulta). Acá va solo lo propio de los perfiles. */

/* ---------- Encabezado del perfil ---------- */

.v3 .v3-perfil .pf-head { display: grid; gap: var(--s-5); padding: var(--s-2) 0 var(--s-7); }

.v3 .v3-perfil .pf-id { display: flex; align-items: center; gap: var(--s-4); }

.v3 .v3-perfil .pf-id h1 { font-size: clamp(1.625rem, 1.2rem + 1.6vw, 2.5rem); font-weight: var(--w-medium); line-height: 1.1; letter-spacing: -0.02em; }

.v3 .v3-perfil .pf-id__sub { margin: var(--s-1) 0 0; color: var(--body); font-size: var(--fs-md); }

/* Logo o inicial del desarrollador: círculo gris (la burbuja es solo de PROP) */

.v3 .v3-perfil .pf-logo { width: 72px; height: 72px; font-size: 1.5rem; letter-spacing: -0.02em; }

/* Botón de consulta con el nombre del desarrollador: puede bajar de línea en celular */

.v3 .v3-perfil .pf-cta { justify-self: start; white-space: normal; text-align: center; line-height: 1.25; padding-block: var(--s-2); }

.v3 .v3-perfil .pf-head .dev-stats { margin: 0; }

.v3 .v3-perfil .pf-head .proto-note { margin: 0; }

/* ---------- Historial ---------- */

.v3 .v3-perfil .pf-narrow { max-width: 760px; }

.v3 .v3-perfil .pf-track li { grid-template-columns: 56px minmax(0, 1fr) auto; }

.v3 .v3-perfil .pf-track .dev-track__name a { color: var(--ink); text-decoration: none; font-weight: var(--w-medium); }

.v3 .v3-perfil .pf-track .dev-track__place { display: block; color: var(--muted); font-size: var(--fs-xs); }

.v3 .v3-perfil .pf-track .dev-track__state { color: var(--body); white-space: nowrap; }

.v3 .v3-perfil .pf-after { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin-top: var(--s-5); }

/* ---------- Asesor ---------- */

.v3 .v3-perfil .pf-agent { display: grid; gap: var(--s-5); padding: var(--s-2) 0 var(--s-7); }

.v3 .v3-perfil .pf-agent .pf-id { align-items: center; }

.v3 .v3-perfil .pf-photo { flex: none; width: 96px; height: 96px; border-radius: 50%; object-fit: cover; background: var(--surface); }

.v3 .v3-perfil .pf-role { margin: var(--s-1) 0 0; color: var(--body); font-size: var(--fs-md); }

.v3 .v3-perfil .pf-meta { margin: 2px 0 0; color: var(--muted); font-size: var(--fs-sm); }

/* El teléfono abre WhatsApp: subrayado gris claro, salmón al pasar el mouse */
.v3 .v3-perfil .pf-meta a { color: var(--ink); text-decoration-color: var(--line); text-underline-offset: 3px; transition: color var(--t-fast), text-decoration-color var(--t-fast); }

@media (hover: hover) {
    .v3 .v3-perfil .pf-meta a:hover { color: var(--venta-ink); text-decoration-color: var(--venta); }
}

.v3 .v3-perfil .pf-social { margin-top: var(--s-3); }

/* Bio: subtítulos con una raya salmón y negritas en tinta */
/* Aire abajo: en los directores la bio es lo último antes del pie */
.v3 .v3-perfil .pf-bio { padding-bottom: var(--s-8); }

.v3 .v3-perfil .pf-bio h3 { margin: var(--s-6) 0 var(--s-2); font-size: var(--fs-md); }

.v3 .v3-perfil .pf-bio h3::before { content: ""; display: block; width: 28px; height: 3px; margin-bottom: var(--s-2); border-radius: 2px; background: var(--venta); }

.v3 .v3-perfil .pf-bio h3:first-child { margin-top: 0; }

.v3 .v3-perfil .pf-bio strong { color: var(--ink); font-weight: var(--w-medium); }

/* Tarjeta de datos destacados: números en salmón; en celular arriba de la bio, 2×2 */
.v3 .v3-perfil .pf-bio--facts { display: grid; gap: var(--s-6); max-width: none; }

.v3 .v3-perfil .pf-facts { padding: var(--s-5); border-radius: var(--r-md); background: var(--venta-soft); }

.v3 .v3-perfil .pf-facts dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-5) var(--s-4); margin: 0; }

.v3 .v3-perfil .pf-facts dt { color: var(--venta-ink); font-size: var(--fs-2xl); font-weight: var(--w-medium); line-height: 1.1; }

.v3 .v3-perfil .pf-facts dd { margin: var(--s-1) 0 0; color: var(--body); font-size: var(--fs-sm); line-height: 1.35; }

.v3 .v3-perfil .pf-bio__text { max-width: 64ch; }

.v3 .v3-perfil .pf-actions { display: grid; gap: var(--s-2); }

.v3 .v3-perfil .pf-actions .btn { width: 100%; }

@media (min-width: 640px) {
    .v3 .v3-perfil .pf-photo { width: 128px; height: 128px; }
    .v3 .v3-perfil .pf-actions { display: flex; flex-wrap: wrap; }
    .v3 .v3-perfil .pf-actions .btn { width: auto; }
}

@media (min-width: 1024px) {
    .v3 .v3-perfil .pf-head,
    .v3 .v3-perfil .pf-agent { padding-bottom: var(--s-8); }
    .v3 .v3-perfil .pf-photo { width: 152px; height: 152px; }
    .v3 .v3-perfil .pf-agent { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
    /* Dos columnas: la bio a la izquierda y los datos fijos a la derecha */
    .v3 .v3-perfil .pf-bio--facts { grid-template-columns: minmax(0, 64ch) 300px; justify-content: space-between; align-items: start; gap: var(--s-8); }
    .v3 .v3-perfil .pf-facts { grid-column: 2; grid-row: 1; position: sticky; top: calc(var(--header-h) + var(--s-5)); }
    .v3 .v3-perfil .pf-facts dl { grid-template-columns: 1fr; }
    .v3 .v3-perfil .pf-bio__text { grid-column: 1; grid-row: 1; }
}

/* ---------- Celular ---------- */

@media (max-width: 639px) {
    .v3 .v3-perfil .pf-head,
    .v3 .v3-perfil .pf-agent { padding-bottom: var(--s-6); }
    .v3 .v3-perfil .pf-logo { width: 56px; height: 56px; font-size: 1.25rem; }
    .v3 .v3-perfil .pf-id__sub,
    .v3 .v3-perfil .pf-role { font-size: var(--fs-sm); }
    .v3 .v3-perfil .pf-cta { justify-self: stretch; }
    .v3 .v3-perfil .pf-track li { grid-template-columns: 44px minmax(0, 1fr) auto; gap: var(--s-2); }
}

/*  --- mobile.css ---  */

/* PROP v1 · piezas para celular compartidas por todas las páginas:
   menú a pantalla completa, pie en acordeones y tamaños táctiles. */

/* ---------- Menú ---------- */

.v3 .menu-sheet {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: grid;
    grid-template-rows: auto 1fr auto;
    background: var(--white);
    transform: translateY(-8px);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--t-base), transform var(--t-base), visibility 0s linear 240ms;
}

.v3 .menu-sheet.is-open {
    transform: none;
    opacity: 1;
    visibility: visible;
    transition: opacity var(--t-base), transform var(--t-base);
}

.v3 .menu-sheet__top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: var(--header-h);
    padding: 0 var(--gutter);
    border-bottom: 1px solid var(--surface);
}

.v3 .menu-sheet__top img { height: 22px; width: auto; }

.v3 .menu-sheet__nav {
    display: grid;
    align-content: start;
    padding: var(--s-4) var(--gutter);
    overflow-y: auto;
}

.v3 .menu-sheet__nav a {
    display: flex;
    justify-content: space-between;
    align-items: center;
    min-height: 56px;
    border-bottom: 1px solid var(--surface);
    color: var(--ink);
    font-size: var(--fs-xl);
    font-weight: var(--w-medium);
    text-decoration: none;
}

.v3 .menu-sheet__nav a svg { width: 20px; height: 20px; color: var(--muted); }

.v3 .menu-sheet__nav a[aria-current="page"] { color: var(--accent-ink); }

.v3 .menu-sheet__actions {
    display: grid;
    gap: var(--s-2);
    padding: var(--s-4) var(--gutter) calc(var(--s-5) + env(safe-area-inset-bottom));
    border-top: 1px solid var(--surface);
}

.v3 .menu-sheet__contact { margin: var(--s-2) 0 0; font-size: var(--fs-sm); text-align: center; }

.v3 .menu-sheet__contact a { color: var(--ink); white-space: nowrap; }

@media (min-width: 1024px) {
    .v3 .menu-sheet { display: none; }
}

/* ---------- Pie en acordeones (celular) ---------- */

.v3 .site-footer__col summary {
    list-style: none;
    margin-bottom: var(--s-3);
    color: var(--white);
    font-size: var(--fs-sm);
    font-weight: var(--w-medium);
}

.v3 .site-footer__col summary::-webkit-details-marker { display: none; }

@media (max-width: 1023px) {
    .v3 .site-footer__grid { gap: 0; }
    .v3 .site-footer__brand { margin-bottom: var(--s-5); }

    .v3 .site-footer__col { border-top: 1px solid rgb(255 255 255 / 0.12); }
    .v3 .site-footer__col:last-child { border-bottom: 1px solid rgb(255 255 255 / 0.12); }

    .v3 .site-footer__col summary {
        display: flex;
        justify-content: space-between;
        align-items: center;
        min-height: 52px;
        margin: 0;
        cursor: pointer;
    }

    .v3 .site-footer__col summary::after {
        content: "+";
        font-size: var(--fs-lg);
        font-weight: var(--w-book);
        color: rgb(255 255 255 / 0.6);
    }

    .v3 .site-footer__col[open] summary::after { content: "–"; }
    .v3 .site-footer__col ul { padding-bottom: var(--s-4); }
    .v3 .site-footer__col li a { display: inline-flex; align-items: center; min-height: 40px; }
}

@media (min-width: 1024px) {
    .v3 .site-footer__col summary { pointer-events: none; }
}

/* ---------- Tamaños táctiles en celular ---------- */

@media (max-width: 1023px) {
    .v3 .btn--sm { min-height: 44px; }
    .v3 .chip { min-height: 44px; }
    .v3 .site-footer__contact li { min-height: 32px; }
}

@media (max-width: 1023px) {
    .v3 .site-footer__contact a { display: inline-flex; align-items: center; min-height: 40px; }
    .v3 .site-footer__legal a { display: inline-flex; align-items: center; min-height: 40px; }
}

/*  --- interact.css ---  */

/* PROP v1 · capa de interacción: foco de teclado, toque y hover (solo con mouse).
   Todos los hovers del sitio viven acá y siguen tres reglas, nada más:

   1. Texto que es link  → se subraya en salmón (1,5 px). Los "Ver todos" no llevan flecha: van con
                           un subrayado gris fino en reposo que pasa a salmón. El color del texto no cambia.
   2. Lo que parece botón → el fondo baja un paso de tono (tiene fondo o borde: botones, chips,
      (fondo o borde)       íconos, pestañas, guardar). Nunca cambia de tamaño ni de color de texto.
                           Excepción: el botón salmón de consulta no cambia de color; le aparece una flecha.
   3. Card entera        → la foto hace un zoom suave y el título se subraya en salmón, como un link.

   Excepciones a propósito: las pestañas de la ficha (subnav) marcan con su línea de abajo,
   el logo baja de opacidad y las fotos de la galería se oscurecen apenas. */

/* ---------- Foco de teclado visible en todo lo interactivo ---------- */

.v3 a:focus-visible,
.v3 button:focus-visible,
.v3 summary:focus-visible,
.v3 [tabindex]:focus-visible {
    outline: 2px solid var(--ink);
    outline-offset: 3px;
    border-radius: var(--r-sm);
    box-shadow: none;
}

.v3 .site-footer a:focus-visible,
.v3 .site-footer summary:focus-visible { outline-color: var(--white); }

/* ---------- Toque (todas las pantallas) ---------- */

.v3 .card:active .card__media img,
.v3 .hood:active img { transform: scale(1.02); }

.v3 .chip:active,
.v3 .finder__tab:active,
.v3 .dots button:active::before { opacity: 0.7; }

/* ---------- Preparación de la regla 1: el subrayado existe, pero transparente ---------- */

.v3 .link-hover,
.v3 .btn--ghost:not(.btn--icon),
.v3 .site-nav a,
.v3 .cycle a,
.v3 .ask__rating,
.v3 .hb__facts dd a,
.v3 .dev-track__name a,
.v3 .p-head__place a,
.v3 .crumbs a,
.v3 .site-footer a,
.v3 .menu-sheet__nav a,
.v3 .menu-sheet__contact a,
.v3 .card .card__title,
.v3 .cp__name,
.v3 .hood strong,
.v3 .topic h3 {
    text-decoration-line: underline;
    text-decoration-color: transparent;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 4px;
    transition: text-decoration-color var(--t-fast);
}

/* Links que ya van subrayados en reposo: línea gris suave (al pasar el mouse, salmón) */

.v3 .btn--ghost:not(.btn--icon),
.v3 .cycle a,
.v3 .hb__facts dd a,
.v3 .dev-track__name a { text-decoration-color: var(--line); }

/* Flechas que se corren */

.v3 .menu-sheet__nav a svg,
.v3 .topic h3 svg { transition: transform var(--t-fast); }

/* Regla 3: la foto prepara el zoom */

.v3 .card__media img,
.v3 .hood img { transition: transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1); }

/* ---------- Hover: solo dispositivos con mouse ---------- */

@media (hover: hover) and (pointer: fine) {

    /* Regla 1 · texto que es link */
    .v3 .link-hover:hover,
    .v3 .btn--ghost:not(.btn--icon):hover,
    .v3 .site-nav a:hover,
    .v3 .cycle a:hover,
    .v3 .ask__rating:hover,
    .v3 .hb__facts dd a:hover,
    .v3 .dev-track__name a:hover,
    .v3 .p-head__place a:hover,
    .v3 .crumbs a:hover,
    .v3 .site-footer a:hover,
    .v3 .menu-sheet__nav a:hover,
    .v3 .menu-sheet__contact a:hover { text-decoration-color: var(--venta); }

    .v3 .menu-sheet__nav a:hover svg { transform: translateX(4px); }

    /* Regla 2 · lo que parece botón: el fondo baja un paso */
    .v3 .btn--primary:hover { background: #3a3a3a; }  /* el negro se aclara un paso: pasar a negro puro no se notaba */
    .v3 .btn--accent:hover { background: var(--accent-ink); }
    .v3 .btn--cta:hover .btn__go,
    .v3 .btn--cta:focus-visible .btn__go { width: 18px; margin-left: 0; opacity: 1; }
    .v3 .btn--secondary:hover,
    .v3 .btn--whatsapp:hover,
    .v3 .btn--ghost.btn--icon:hover,
    .v3 .chip:hover,
    .v3 .card__save:hover { background: var(--surface); }
    .v3 .finder__tab[aria-selected="false"]:hover { background: rgb(255 255 255 / 0.34); }
    .v3 .dots button:hover::before { background: var(--muted); }
    .v3 .dots button[aria-current="true"]:hover::before { background: var(--ink); }
    .v3 .units tbody tr:hover td,
    .v3 [data-ask-row]:hover { background: var(--surface-soft); }

    /* Regla 3 · cards enteras: zoom de foto y título subrayado en salmón */
    .v3 .card:hover .card__media img { transform: scale(1.04); }
    .v3 .hood:hover img { transform: scale(1.05); }
    .v3 .card:hover .card__title,
    .v3 .card:hover .cp__name,
    .v3 .hood:hover strong,
    .v3 .topic:hover h3 { text-decoration-color: var(--venta); }
    .v3 .topic:hover h3 svg { transform: translateX(4px); }

    /* Excepciones */
    .v3 .site-header__logo img { transition: opacity var(--t-fast); }
    .v3 .site-header__logo:hover img { opacity: 0.7; }

    .v3 .subnav a { transition: border-color var(--t-fast); }
    .v3 .subnav a:hover { border-bottom-color: var(--line); }
    .v3 .subnav a.is-active:hover { border-bottom-color: var(--accent); }

    .v3 .gallery__item img { transition: filter var(--t-base); }
    .v3 .gallery__item:hover img { filter: brightness(0.9); }

    .v3 .site-footer__col summary { transition: color var(--t-fast); }
    .v3 .site-footer__col summary:hover { color: var(--on-dark-muted); }
}

/*  --- desarrollador.css ---  */

/* Página del desarrollador (/proyectos/{desarrollador}): portada con la foto de uno de sus
   proyectos, cifras con PROP, "Sobre", historial, preguntas frecuentes y enlaces a barrios
   y otros desarrolladores. Usa .dev-stats, .dev-track y .pf-narrow de arriba. */

.v3 .v3-dev .dv-hero {
    position: relative;
    display: grid;
    min-height: clamp(400px, 56vh, 580px);
    padding: var(--s-4) 0 var(--s-8);
    color: var(--white);
    background: var(--ink);
    overflow: hidden;
}

.v3 .v3-dev .dv-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

.v3 .v3-dev .dv-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgb(0 0 0 / 0.35) 0%, rgb(0 0 0 / 0.15) 30%, rgb(0 0 0 / 0.75) 100%);
}

@media (min-width: 1024px) {
    .v3 .v3-dev .dv-hero::after {
        background:
            linear-gradient(90deg, rgb(0 0 0 / 0.7) 0%, rgb(0 0 0 / 0.55) 35%, rgb(0 0 0 / 0.15) 60%, rgb(0 0 0 / 0) 75%),
            linear-gradient(180deg, rgb(0 0 0 / 0.3) 0%, rgb(0 0 0 / 0) 25%, rgb(0 0 0 / 0.45) 100%);
    }
}

/* Sin fotos: misma estructura sobre fondo claro */
.v3 .v3-dev .dv-hero--plain { min-height: 0; padding: var(--s-2) 0 var(--s-6); color: var(--ink); background: none; }

.v3 .v3-dev .dv-hero--plain::after { display: none; }

/* Ruta arriba; nombre, bajada y consulta abajo, sobre la parte oscura de la foto */
.v3 .v3-dev .dv-hero__inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-3); width: 100%; }

.v3 .v3-dev .dv-hero__crumbs { margin-bottom: auto; padding: 0 0 var(--s-6); color: rgb(255 255 255 / 0.85); text-shadow: 0 1px 2px rgb(0 0 0 / 0.4); }

.v3 .v3-dev .dv-hero__crumbs a, .v3 .v3-dev .dv-hero__crumbs [aria-current] { color: inherit; }

.v3 .v3-dev .dv-hero--plain .dv-hero__crumbs { padding: var(--s-4) 0 var(--s-3); color: var(--muted); }

.v3 .v3-dev .dv-hero__logo { width: auto; max-width: 160px; height: 48px; object-fit: contain; padding: 6px 10px; border-radius: 8px; background: var(--white); }

.v3 .v3-dev .dv-hero__places::before { content: " · "; }

.v3 .v3-dev .dv-hero__kicker { margin: 0; color: rgb(255 255 255 / 0.88); font-size: var(--fs-sm); letter-spacing: 0.01em; text-shadow: 0 1px 2px rgb(0 0 0 / 0.4); }

.v3 .v3-dev .dv-hero h1 {
    color: var(--white);
    font-size: clamp(2.25rem, 1.6rem + 2.6vw, 3.75rem);
    font-weight: var(--w-medium);
    line-height: 1.02;
    letter-spacing: -0.025em;
    text-shadow: 0 1px 3px rgb(0 0 0 / 0.35);
    text-wrap: balance;
}

.v3 .v3-dev .dv-hero__lead { max-width: 56ch; margin: 0; color: rgb(255 255 255 / 0.92); font-size: var(--fs-lg); line-height: 1.45; text-shadow: 0 1px 2px rgb(0 0 0 / 0.4); text-wrap: pretty; }

.v3 .v3-dev .dv-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-5); margin-top: var(--s-2); }

.v3 .v3-dev .dv-hero__link { color: var(--white); font-size: var(--fs-sm); text-decoration: underline 1px rgb(255 255 255 / 0.5); text-underline-offset: 4px; }

.v3 .v3-dev .dv-hero--plain .dv-hero__kicker,
.v3 .v3-dev .dv-hero--plain h1,
.v3 .v3-dev .dv-hero--plain .dv-hero__lead,
.v3 .v3-dev .dv-hero--plain .dv-hero__link { color: var(--ink); text-shadow: none; }

.v3 .v3-dev .dv-hero--plain .dv-hero__kicker,
.v3 .v3-dev .dv-hero--plain .dv-hero__lead { color: var(--body); }

.v3 .v3-dev .dv-hero__credit {
    position: absolute;
    z-index: 1;
    right: calc(max(0px, (100% - var(--container)) / 2) + var(--gutter));
    bottom: var(--s-3);
    color: rgb(255 255 255 / 0.85);
    font-size: var(--fs-xs);
    text-decoration: underline 1px rgb(255 255 255 / 0.4);
    text-underline-offset: 3px;
    text-shadow: 0 1px 2px rgb(0 0 0 / 0.5);
}

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-dev .dv-hero__credit:hover, .v3 .v3-dev .dv-hero__link:hover { color: var(--white); text-decoration-color: var(--venta); }
}

/* Cifras: una fila, tantas columnas como datos */
.v3 .v3-dev .dv-stats { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); margin: 0 0 var(--s-6); padding: var(--s-5) 0; border-top: 0; }

.v3 .v3-dev .dv-stats strong { white-space: nowrap; }

.v3 .v3-dev .dv-list-head { margin-bottom: var(--s-2); }

.v3 .v3-dev .dv-list-head h2 { color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: 1.2; }

/* Sobre */
.v3 .v3-dev .dv-about__grid { display: grid; gap: var(--s-6); }

.v3 .v3-dev .dv-about__text { max-width: 68ch; }

.v3 .v3-dev .dv-about__text p { color: var(--body); font-size: var(--fs-md); line-height: 1.6; }

.v3 .v3-dev .dv-points { display: grid; gap: var(--s-3); margin: 0 0 var(--s-5); padding: 0; list-style: none; }

.v3 .v3-dev .dv-points li { position: relative; padding-left: var(--s-5); color: var(--ink); font-size: var(--fs-sm); line-height: 1.45; }

.v3 .v3-dev .dv-points li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 8px; height: 8px; border-radius: 50%; background: var(--venta); }

.v3 .v3-dev .dv-facts { display: grid; gap: var(--s-3); margin: 0; padding-top: var(--s-4); border-top: 1px solid var(--surface); }

.v3 .v3-dev .dv-facts div { display: grid; gap: 2px; }

.v3 .v3-dev .dv-facts dt { color: var(--muted); font-size: var(--fs-xs); }

.v3 .v3-dev .dv-facts dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); }

.v3 .v3-dev .dv-facts a { color: var(--ink); text-underline-offset: 3px; }

@media (min-width: 1024px) {
    .v3 .v3-dev .dv-about__grid { grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: var(--s-8); align-items: start; }
    .v3 .v3-dev .dv-about__side { padding: var(--s-5); border-radius: var(--r-md); background: var(--surface-soft); }
}

/* Barra fija del desarrollador: entra pasado el listado y reemplaza a la de búsqueda.
   En desktop sube a top 0 cuando el header se esconde, igual que .lst-bar. */
.v3 .v3-dev .dv-bar {
    position: fixed;
    top: var(--header-h);
    left: 0;
    right: 0;
    z-index: 31;
    background: rgb(255 255 255 / 0.96);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--surface);
    transform: translateY(-120%);
    visibility: hidden;
    transition: transform var(--t-base), top var(--t-base), visibility 0s var(--t-base);
}

.v3 .dev-bar-on .v3-dev .dv-bar { transform: none; visibility: visible; transition: transform var(--t-base), top var(--t-base); }

@media (min-width: 1024px) { .v3 .bar-1.hdr-hidden .v3-dev .dv-bar { top: 0; } }

.v3 .dev-past-list .lst-pill { transform: translate(-50%, 160%); }

/* Sin buscador general en la página del desarrollador: Filtros, Ordenar y Lista/Mapa quedan en una
   fila común arriba de la grilla (no fija); lo fijo es la barra del desarrollador */
.v3 .lst-page--dev .lst-bar { position: static; border: 0; background: none; backdrop-filter: none; }

.v3 .lst-page--dev .lsb-search, .v3 .lst-page--dev .lsb-logo, .v3 .bar-1.hdr-hidden .lst-page--dev .lsb-logo { display: none; }

.v3 .lst-page--dev .lst-bar__inner { min-height: 0; padding-block: var(--s-2) 0; }

.v3 .v3-dev .dv-bar__inner { display: flex; align-items: center; gap: var(--s-5); min-height: var(--bar-h); }

.v3 .v3-dev .dv-bar__name { flex: none; color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); letter-spacing: -0.01em; text-decoration: none; }

.v3 .v3-dev .dv-bar__links { display: flex; gap: var(--s-1); margin: 0; padding: 0; list-style: none; }

.v3 .v3-dev .dv-bar__links a { display: block; padding: 8px 12px; border-radius: 999px; color: var(--body); font-size: var(--fs-sm); text-decoration: none; white-space: nowrap; transition: background var(--t-fast), color var(--t-fast); }

.v3 .v3-dev .dv-bar__links a[aria-current] { background: var(--surface-soft); color: var(--ink); font-weight: var(--w-medium); }

@media (hover: hover) and (pointer: fine) { .v3 .v3-dev .dv-bar__links a:hover { color: var(--ink); } }

.v3 .v3-dev .dv-bar__cta { flex: none; margin-left: auto; }

/* Las anclas no quedan tapadas por el header y la barra */
.v3 .v3-dev #proyectos, .v3 .v3-dev #sobre, .v3 .v3-dev #historial, .v3 .v3-dev #preguntas { scroll-margin-top: calc(var(--header-h) + var(--bar-h) + var(--s-3)); }

/* Celular: nombre y consulta arriba, secciones abajo deslizándose de costado */
@media (max-width: 767px) {
    .v3 .v3-dev .dv-bar__inner { flex-wrap: wrap; gap: 0 var(--s-3); min-height: 0; padding-block: var(--s-2) 0; }
    .v3 .v3-dev .dv-bar__name { font-size: var(--fs-md); }
    .v3 .v3-dev .dv-bar__links { order: 3; flex: 1 0 100%; margin-inline: calc(var(--gutter) * -1); padding: var(--s-1) var(--gutter) var(--s-2); overflow-x: auto; scrollbar-width: none; }
    .v3 .v3-dev .dv-bar__links::-webkit-scrollbar { display: none; }
    .v3 .v3-dev .dv-bar__links a { padding: 6px 12px; }
}

/* Consulta por los proyectos del desarrollador: el panel de la ficha, con el selector de proyecto */
.v3 .v3-lead .chat-label { color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }

.v3 .v3-lead select.chat-field { appearance: none; padding-right: var(--s-7); background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%231a1a1a' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right var(--s-4) center; }

/* Listado del desarrollador: sin barra lateral, grilla a todo el ancho; los filtros van en el panel
   lateral (botón Filtros de la barra) y las etapas en chips arriba de la grilla */
.v3 .lst-page--dev .dv-tabs { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0; }

.v3 .lst-page--dev .dv-tabs .chip { text-decoration: none; }

.v3 .lst-page--dev .dv-tabs .chip span { margin-left: 4px; color: var(--muted); }

.v3 .lst-page--dev .dv-tabs .chip.is-active span { color: inherit; opacity: 0.75; }

@media (max-width: 1023px) {
    .v3 .lst-page--dev .dv-tabs { flex: 1 0 100%; }
}

@media (max-width: 639px) {
    .v3 .lst-page--dev .dv-tabs { flex-wrap: nowrap; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); overflow-x: auto; scrollbar-width: none; }
    .v3 .lst-page--dev .dv-tabs::-webkit-scrollbar { display: none; }
    .v3 .lst-page--dev .dv-tabs .chip { flex: none; }
}

.v3 .dv-filters { display: none; }

/* Cada card ya es de este desarrollador: sin "Desarrolla …" */
.v3 .lst-page--dev .cb__dev { display: none; }

@media (min-width: 1024px) {
    .v3 .dv-filters { display: inline-flex; }
    .v3 .lsb .lst-page--dev .lst-body[data-view="lista"] { grid-template-columns: minmax(0, 1fr); }
    .v3 .lsb .lst-page--dev .lst-body[data-view="lista"] .lsb-side { display: none; }
    .v3 .lsb .lst-page--dev .lst-body[data-view="lista"] .lst-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 1200px) {
    .v3 .lsb .lst-page--dev .lst-body[data-view="lista"] .lst-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Historial: línea de tiempo vertical con la etapa de cada proyecto */
.v3 .v3-dev .dv-tl__sum { margin: calc(var(--s-2) * -1) 0 var(--s-5); color: var(--body); font-size: var(--fs-sm); }

.v3 .v3-dev .dv-tl { position: relative; margin: 0; padding: 0; list-style: none; }

.v3 .v3-dev .dv-tl::before { content: ""; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: var(--surface); }

/* Una fila por proyecto en desktop: fecha · nombre y barrio · etapa */
.v3 .v3-dev .dv-tl__item {
    position: relative;
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr) auto;
    align-items: baseline;
    column-gap: var(--s-4);
    padding: 0 0 var(--s-4) var(--s-6);
}

.v3 .v3-dev .dv-tl__dot { position: absolute; left: 0; top: 4px; width: 16px; height: 16px; border: 2px solid var(--muted); border-radius: 50%; background: var(--white); }

.v3 .v3-dev .dv-tl__item--building .dv-tl__dot { border-color: var(--venta); background: var(--white); box-shadow: 0 0 0 4px rgb(240 91 114 / 0.15); }

.v3 .v3-dev .dv-tl__item--ready .dv-tl__dot { border-color: var(--venta); background: var(--venta); }

.v3 .v3-dev .dv-tl__item--delivered .dv-tl__dot { border-color: var(--ink); background: var(--ink); }

.v3 .v3-dev .dv-tl__item--sold .dv-tl__dot { border-color: var(--muted); background: var(--muted); }

.v3 .v3-dev .dv-tl__when { color: var(--muted); font-size: var(--fs-xs); line-height: 1.6; white-space: nowrap; }

.v3 .v3-dev .dv-tl__what { min-width: 0; }

.v3 .v3-dev .dv-tl__name { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); text-decoration: none; }

.v3 .v3-dev .dv-tl__place { margin-left: var(--s-2); color: var(--muted); font-size: var(--fs-sm); }

.v3 .v3-dev .dv-tl__stage { padding: 2px 10px; border-radius: 999px; background: var(--surface-soft); color: var(--body); font-size: var(--fs-xs); white-space: nowrap; }

.v3 .v3-dev .dv-tl__item--building .dv-tl__stage,
.v3 .v3-dev .dv-tl__item--ready .dv-tl__stage { background: rgb(240 91 114 / 0.12); color: var(--ink); }

.v3 .v3-dev .dv-tl__more { margin-top: var(--s-1); }

.v3 .v3-dev .dv-tl__more summary { display: inline-flex; align-items: center; gap: var(--s-2); margin-left: var(--s-6); color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; list-style: none; cursor: pointer; }

.v3 .v3-dev .dv-tl__more summary::-webkit-details-marker { display: none; }

.v3 .v3-dev .dv-tl__more[open] summary { display: none; }

.v3 .v3-dev .dv-tl__more .dv-tl { margin-top: 0; }

.v3 .v3-dev .dv-tl__today { position: relative; display: flex; align-items: center; gap: var(--s-3); margin: 0 0 var(--s-5); padding-left: var(--s-6); color: var(--venta); font-size: var(--fs-xs); font-weight: var(--w-medium); text-transform: uppercase; letter-spacing: 0.08em; }

.v3 .v3-dev .dv-tl__today::before { content: ""; position: absolute; left: 3px; width: 10px; height: 10px; border-radius: 50%; background: var(--venta); }

.v3 .v3-dev .dv-tl__today::after { content: ""; flex: 1; height: 1px; background: rgb(240 91 114 / 0.35); }

@media (hover: hover) and (pointer: fine) {
    .v3 .v3-dev .dv-tl__name:hover { text-decoration: underline 1.5px var(--venta); text-underline-offset: 3px; }
}

@media (max-width: 639px) {
    .v3 .v3-dev .dv-tl__item { grid-template-columns: minmax(0, 1fr) auto; row-gap: 2px; }
    .v3 .v3-dev .dv-tl__when { grid-column: 1 / -1; }
    .v3 .v3-dev .dv-tl__place { display: block; margin-left: 0; }
}

/* Historial y preguntas frecuentes: una columna en celular; en desktop, la línea de tiempo y al
   costado las preguntas en un panel suave, como «Sobre» y sus datos */
.v3 .v3-dev .dv-split__grid { display: grid; gap: var(--s-8); }

.v3 .v3-dev .dv-split__grid:not(.dv-split__grid--two) { max-width: 760px; }

.v3 .v3-dev .dv-split__side { padding: var(--s-5); border-radius: var(--r-md); background: var(--surface-soft); }

.v3 .v3-dev .dv-split__side .fp-h2 { font-size: var(--fs-lg); }

.v3 .v3-dev .dv-split__side .dv-faq summary { min-height: 48px; font-size: var(--fs-sm); }

.v3 .v3-dev .dv-split__side .dv-faq__answer { padding-right: 0; }

@media (min-width: 1024px) {
    .v3 .v3-dev .dv-split__grid--two { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }
    .v3 .v3-dev .dv-split__side { position: sticky; top: calc(var(--header-h) + var(--bar-h) + var(--s-4)); }
}

/* Con la columna de preguntas al lado, la etapa baja debajo del nombre hasta pantallas anchas */
@media (min-width: 1024px) and (max-width: 1439px) {
    .v3 .v3-dev .dv-split__grid--two .dv-tl__item { grid-template-columns: 112px minmax(0, 1fr); }
    .v3 .v3-dev .dv-split__grid--two .dv-tl__stage { grid-column: 2; justify-self: start; margin-top: var(--s-1); }
}

/* Preguntas frecuentes en acordeón */
.v3 .v3-dev .dv-faq { border-top: 1px solid var(--line); }

.v3 .v3-dev .dv-faq details { border-bottom: 1px solid var(--line); }

.v3 .v3-dev .dv-faq summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--s-4);
    min-height: 56px;
    padding: var(--s-3) 0;
    color: var(--ink);
    font-size: var(--fs-md);
    font-weight: var(--w-medium);
    line-height: 1.35;
    list-style: none;
    cursor: pointer;
}

.v3 .v3-dev .dv-faq summary::-webkit-details-marker { display: none; }

.v3 .v3-dev .dv-faq summary::after { content: "+"; flex: none; display: grid; place-items: center; width: 28px; height: 28px; color: var(--body); font-size: var(--fs-lg); }

.v3 .v3-dev .dv-faq details[open] summary::after { content: "–"; }

.v3 .v3-dev .dv-faq__answer { padding: 0 var(--s-7) var(--s-5) 0; font-size: var(--fs-sm); }

.v3 .v3-dev .dv-faq__answer p { margin: 0; }

/* Barrios y otros desarrolladores */
.v3 .v3-dev .dv-links .fp-h2 + .dv-chips { margin-bottom: var(--s-6); }

.v3 .v3-dev .dv-chips { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }

.v3 .v3-dev .dv-chips .chip { text-decoration: none; }

.v3 .v3-dev .dv-chips .chip span { color: var(--muted); }

.v3 .v3-dev .dv-all { margin: 0; font-size: var(--fs-sm); }

.v3 .v3-dev .dv-all a { color: var(--ink); text-underline-offset: 3px; }

@media (max-width: 767px) {
    .v3 .v3-dev .dv-hero { min-height: 460px; padding: var(--s-3) 0 var(--s-8); }
    .v3 .v3-dev .dv-hero__places { display: block; }
    .v3 .v3-dev .dv-hero__places::before { content: none; }
    .v3 .v3-dev .dv-hero__lead { font-size: var(--fs-md); }
    .v3 .v3-dev .dv-hero__credit { left: var(--gutter); right: auto; }
    .v3 .v3-dev .dv-stats { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4) 0; }
    .v3 .v3-dev .dv-stats li:nth-child(odd) { padding-left: 0; border-left: 0; }
    .v3 .v3-dev .dv-faq__answer { padding-right: 0; }
}

/* Directorio de desarrolladores (/proyectos/desarrolladores): cards de listado con la foto de un proyecto */
.v3 .v3-devdir .dd-card .card__title { margin: 0; font-size: inherit; font-weight: inherit; line-height: inherit; letter-spacing: inherit; }

/* Barra del directorio: el buscador de los listados (lsb-search), la cantidad y Ordenar por, en una fila */
.v3 .v3-devdir .dd-results { padding-top: var(--s-5); }

.v3 .v3-devdir .dd-bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-5); margin-bottom: var(--s-5); padding-bottom: var(--s-4); border-bottom: 1px solid var(--surface); }

.v3 .v3-devdir .dd-search { flex: 1 1 360px; max-width: 520px; }

.v3 .v3-devdir .dd-count { margin: 0; }

.v3 .v3-devdir .dd-sort { margin-left: auto; }

@media (max-width: 639px) {
    .v3 .v3-devdir .dd-search { flex-basis: 100%; max-width: none; }
    .v3 .v3-devdir .dd-sort { margin-left: 0; }
}

.v3 .v3-devdir .dd-empty { color: var(--muted); }
.v3 .v3-devdir .dd-empty[hidden], .v3 .v3-devdir [data-dd-item][hidden] { display: none; }

/* PROP v3 · piezas del tema que el prototipo no tenía: el formulario de consulta actual
   (shared_agent_form/magic_form, con sus clases de siempre), la descripción larga recortada
   y el estado de Guardar. site.css se genera desde los prototipos; esto se escribe a mano. */

/* Formulario de consulta dentro del panel: mismos campos y handler que el sitio actual */
.v3 .v3-lead { margin-top: var(--s-5); }
.v3 .v3-lead form { display: grid; gap: var(--s-4); }
.v3 .v3-lead .d-none { display: none !important; }
/* Contenedores de mensajes del formulario: sin caja propia, así no suman espacio mientras están vacíos */
.v3 .v3-lead .before-send,
.v3 .v3-lead #general_errors { display: contents; }
.v3 .v3-lead .chat-group { display: grid; gap: var(--s-1); }
.v3 .v3-lead .chat-field,
.v3 .v3-lead .chat-msg {
    width: 100%;
    min-height: 52px;
    padding: 0 var(--s-4);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    background: var(--white);
    color: var(--ink);
    font: inherit;
    font-size: var(--fs-md);   /* 16px: iOS no hace zoom */
    transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.v3 .v3-lead .chat-msg { min-height: 120px; padding: var(--s-3) var(--s-4); resize: vertical; }
.v3 .v3-lead .chat-field::placeholder,
.v3 .v3-lead .chat-msg::placeholder { color: var(--muted); }
.v3 .v3-lead .chat-field:focus,
.v3 .v3-lead .chat-msg:focus { outline: none; border-color: var(--ink); box-shadow: none; }
.v3 .v3-lead .warning_msg { order: 2; color: var(--error); font-size: var(--fs-xs); }
.v3 .v3-lead .warning_msg:empty { display: none; }
.v3 .v3-lead .chat-button { margin-top: var(--s-2); }
.v3 .v3-lead .chat-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 52px;
    border: 0;
    border-radius: var(--r-pill);
    background: var(--venta);
    color: var(--white);
    font: inherit;
    font-size: var(--fs-md);
    font-weight: var(--w-medium);
    cursor: pointer;
}
.v3 [data-op="alquiler"] .v3-lead .chat-btn { background: var(--alquiler); }
.v3 .v3-lead .chat-btn:disabled { opacity: 0.6; cursor: wait; }
.v3 .v3-lead .success-message { display: grid; gap: var(--s-2); padding: var(--s-5) 0; color: var(--ink); }
.v3 .v3-lead .agent-form-error-flash { color: var(--error); }
/* v3 (form_type): etiqueta arriba de cada campo y nombre y apellido en una fila, como los formularios de página (v3/lead_form) */
.v3 .v3-lead .field__label { order: -1; }
.v3 .v3-lead__row { display: grid; gap: var(--s-4); }
.v3 .v3-lead__row.d-none { display: none; }
@media (min-width: 480px) { .v3 .v3-lead__row { grid-template-columns: 1fr 1fr; } }
/* Con sesión iniciada: quién consulta, en lugar de volver a pedir los datos */
.v3 .v3-lead__who { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--s-2); margin: 0; padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: var(--surface-soft); color: var(--body); font-size: var(--fs-sm); }
.v3 .v3-lead__who strong { color: var(--ink); font-weight: var(--w-medium); }
.v3 .v3-lead__who span { overflow-wrap: anywhere; }
.v3 .v3-lead__who span::before { content: "·"; margin-right: var(--s-2); }
.v3 .v3-lead__switch { margin-left: auto; padding: 0; border: 0; background: none; color: var(--ink); font: inherit; font-size: var(--fs-sm); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; cursor: pointer; }
@media (hover: hover) and (pointer: fine) { .v3 .v3-lead__switch:hover { text-decoration-color: var(--venta); } }

/* Preguntas que siguen a la consulta (v3/lead_discovery): una por pantalla, de un toque,
   y terminan en cómo (llamada o WhatsApp) y cuándo contacta el asesor */
.v3 .ldx { display: flex; flex-direction: column; gap: var(--s-4); }
.v3 .ldx[hidden], .v3 .ldx [hidden] { display: none !important; }
/* Con la consulta enviada la hoja ocupa todo el alto y deja de mostrar el precio y los honorarios */
.v3 .sheet__panel:has(.ldx:not([hidden])) { display: flex; flex-direction: column; height: min(92vh, 820px); height: min(92dvh, 820px); }
.v3 .sheet__panel:has(.ldx:not([hidden])) .sheet__price { display: none; }
.v3 .sheet__panel:has(.ldx:not([hidden])) .v3-lead { display: flex; flex-direction: column; flex: 1; margin-top: var(--s-4); }
.v3 .v3-lead .ldx:not([hidden]) { flex: 1; }
.v3 .v3-lead .agent-form-flash[hidden] { display: none; }
.v3 .ldx__step { display: flex; flex-direction: column; gap: var(--s-3); flex: 1; animation: ldx-in var(--t-base) ease-out; }
@keyframes ldx-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .v3 .ldx__step { animation: none; } .v3 .ldx__bar span { transition: none; } }
.v3 .ldx__grow { flex: 1 1 auto; min-height: var(--s-2); }
.v3 .ldx__top { display: flex; align-items: center; gap: var(--s-3); min-height: 40px; }
.v3 .ldx__bar { flex: 1; height: 6px; border-radius: var(--r-pill); background: var(--surface-soft); overflow: hidden; }
.v3 .ldx__bar span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--venta); transition: width var(--t-base); }
.v3 .ldx__skip { border: 0; background: none; padding: var(--s-2) 0; color: var(--muted); font: inherit; font-size: var(--fs-sm); cursor: pointer; }
.v3 .ldx__back { margin-left: calc(var(--s-2) * -1); }
.v3 .ldx__q { margin: 0; color: var(--ink); font-size: var(--fs-xl); line-height: var(--lh-snug); font-weight: var(--w-medium); text-wrap: pretty; outline: none; }
.v3 .ldx__hint { margin: 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .ldx__count, .v3 .ldx__kick { margin: 0; color: var(--venta-ink); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .ldx__kick--muted, .v3 .ldx__label { margin: 0; color: var(--muted); font-size: var(--fs-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .ldx__photo { flex: none; width: 56px; height: 56px; border-radius: 50%; object-fit: cover; background: var(--surface-soft); }
.v3 .ldx__photo--sm { width: 44px; height: 44px; }
.v3 .ldx__hello { display: flex; align-items: center; gap: var(--s-4); }
.v3 .ldx__hello .ldx__q { font-size: var(--fs-lg); }
.v3 .ldx__hello strong { display: block; font-weight: var(--w-medium); }
.v3 .ldx__hello small { display: block; color: var(--body); font-size: var(--fs-xs); }

/* Íconos en cuadrito salmón claro; al elegir, salmón lleno */
.v3 .ldx__ico { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: var(--r-md); background: var(--venta-soft); color: var(--venta-ink); transition: background var(--t-fast), color var(--t-fast); }
.v3 .ldx__ico svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.v3 .ldx__ico--round { width: 46px; height: 46px; border-radius: 50%; }
.v3 .ldx__ico--round svg { width: 24px; height: 24px; }
.v3 .ldx__ico--plain { width: 24px; height: 24px; background: none; }
.v3 .ldx__ico--wa, .v3 .ldx__tile--wa .ldx__ico { background: #e7f8ee; color: #128c4b; }

/* Bienvenida: línea de tiempo, saludo y la invitación en una tarjeta */
.v3 .ldx__steps { display: flex; justify-content: space-between; margin: 0; padding: 0; list-style: none; }
.v3 .ldx__steps li { position: relative; flex: 1; display: grid; justify-items: center; gap: var(--s-1); color: var(--body); font-size: var(--fs-xs); line-height: 1.3; text-align: center; }
.v3 .ldx__steps li + li::before { content: ""; position: absolute; top: 12px; right: calc(50% + 18px); left: calc(-50% + 18px); height: 1px; background: var(--line); }
.v3 .ldx__steps li.is-now::before { background: var(--venta); }
.v3 .ldx__dot { display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid var(--line); border-radius: 50%; background: var(--white); color: var(--muted); font-size: var(--fs-xs); }
.v3 .ldx__dot svg { width: 14px; height: 14px; }
.v3 .is-done .ldx__dot { border-color: var(--venta); background: var(--venta); color: var(--white); }
.v3 .is-now .ldx__dot { border-color: var(--venta); color: var(--venta-ink); font-weight: var(--w-medium); }
.v3 .ldx__invite { display: flex; gap: var(--s-3); align-items: flex-start; padding: var(--s-4); border-radius: var(--r-md); background: var(--venta-soft); }
.v3 .ldx__invite p { margin: 0; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); line-height: var(--lh-snug); }
.v3 .ldx__invite small { display: block; margin-top: var(--s-1); color: var(--venta-ink); font-size: var(--fs-sm); }
.v3 .ldx__actions { display: grid; gap: var(--s-2); }
.v3 .ldx__dismiss { justify-self: center; min-height: 40px; padding: 0 var(--s-4); border: 0; background: none; color: var(--muted); font: inherit; font-size: var(--fs-sm); cursor: pointer; }

/* Para escribir (la dirección) y el precio pensado que se abre debajo de «Sí, tengo un número» */
.v3 .ldx__fields { display: grid; gap: var(--s-3); }
.v3 .ldx__amount { display: grid; gap: var(--s-3); margin-top: var(--s-2); }
.v3 .ldx__money { position: relative; display: block; }
.v3 .ldx__money > span { position: absolute; left: var(--s-4); top: 50%; transform: translateY(-50%); color: var(--muted); font-size: var(--fs-sm); pointer-events: none; }
.v3 .ldx__money .field__input { padding-left: calc(var(--s-4) + 3em); }
.v3 .ldx__amount .field__label small, .v3 .ldx__fields .field__label small { color: var(--muted); font-weight: var(--w-regular, 400); }
/* Opciones: tarjeta con ícono, texto, ayuda y círculo de selección */
.v3 .ldx__opts { display: grid; gap: var(--s-2); }
.v3 .ldx__opt { display: flex; align-items: center; gap: var(--s-3); width: 100%; padding: var(--s-3); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--ink); font: inherit; text-align: left; cursor: pointer; transition: border-color var(--t-fast), background var(--t-fast); }
.v3 .ldx__otext { flex: 1; display: grid; gap: 2px; min-width: 0; }
.v3 .ldx__otext strong { font-size: var(--fs-md); font-weight: var(--w-medium); }
.v3 .ldx__otext small { color: var(--muted); font-size: var(--fs-xs); }
.v3 .ldx__radio { flex: none; width: 20px; height: 20px; border: 1.5px solid var(--line); border-radius: 50%; transition: border var(--t-fast); }
.v3 .ldx__opt.is-on { border-color: var(--venta); background: #fff7f8; }
.v3 .ldx__opt.is-on .ldx__radio { border: 6px solid var(--venta); }
.v3 .ldx__opt.is-on .ldx__ico { background: var(--venta); color: var(--white); }
.v3 .ldx__cheer { display: flex; gap: var(--s-3); align-items: center; margin: 0; padding: var(--s-3) var(--s-4); border-radius: var(--r-md); background: var(--surface-soft); color: var(--ink); font-size: var(--fs-sm); }
.v3 .ldx__cheer .ldx__ico { width: 32px; height: 32px; background: var(--white); }

/* Resumen: lo que ya sabe el asesor */
.v3 .ldx__recap, .v3 .ldx__knows { display: grid; gap: var(--s-3); padding: var(--s-4); border-radius: var(--r-md); background: var(--surface-soft); }
.v3 .ldx__recap-title { margin: 0; font-size: var(--fs-md); font-weight: var(--w-medium); line-height: var(--lh-snug); }
.v3 .ldx__summary { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; font-size: var(--fs-sm); }
.v3 .ldx__summary li { display: flex; align-items: center; gap: var(--s-3); }
.v3 .ldx__summary .ldx__ico { width: 30px; height: 30px; border-radius: var(--r-sm); background: var(--white); }
.v3 .ldx__summary .ldx__ico svg { width: 16px; height: 16px; }

/* Llamada o WhatsApp */
.v3 .ldx__tiles { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3); }
.v3 .ldx__tile { display: grid; justify-items: center; gap: var(--s-2); padding: var(--s-5) var(--s-3) var(--s-4); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--ink); font: inherit; text-align: center; cursor: pointer; transition: border-color var(--t-fast), background var(--t-fast); }
.v3 .ldx__tile strong { font-size: var(--fs-md); font-weight: var(--w-medium); }
.v3 .ldx__tile small { color: var(--muted); font-size: var(--fs-xs); }

/* Cuándo: lo antes posible, días tipo almanaque y momentos con horario */
.v3 .ldx__cal { display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--s-2); }
.v3 .ldx__day { display: grid; justify-items: center; gap: 1px; padding: var(--s-2) 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--ink); font: inherit; cursor: pointer; transition: border-color var(--t-fast), background var(--t-fast); }
.v3 .ldx__day small { color: var(--muted); font-size: 10px; letter-spacing: 0.04em; text-transform: uppercase; }
.v3 .ldx__day strong { font-size: var(--fs-lg); font-weight: var(--w-medium); line-height: 1.2; }
.v3 .ldx__day.is-on { border-color: var(--ink); background: var(--ink); color: var(--white); }
.v3 .ldx__day.is-on small { color: var(--on-dark-muted); }
.v3 .ldx__slots { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-2); }
.v3 .ldx__slot { display: grid; justify-items: center; gap: var(--s-1); padding: var(--s-3) var(--s-1); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--ink); font: inherit; cursor: pointer; transition: border-color var(--t-fast), background var(--t-fast); }
.v3 .ldx__slot .ldx__ico { width: 34px; height: 34px; }
.v3 .ldx__slot strong { font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .ldx__slot small { color: var(--muted); font-size: var(--fs-xs); }
.v3 .ldx__slot.is-on { border-color: var(--venta); background: #fff7f8; }
.v3 .ldx__slot.is-on .ldx__ico { background: var(--venta); color: var(--white); }
.v3 .ldx [data-ldx-confirm]:disabled { opacity: 0.45; cursor: not-allowed; }

/* Cierre: listo, próximo paso y lo que sabe el asesor */
.v3 .ldx__done-top { display: flex; align-items: center; gap: var(--s-3); }
.v3 .ldx__done-top .ldx__q { font-size: var(--fs-lg); }
.v3 .ldx__bigcheck { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--venta); color: var(--white); }
.v3 .ldx__bigcheck svg { width: 24px; height: 24px; }
.v3 .ldx__next { display: grid; gap: var(--s-3); padding: var(--s-4); border: 1px solid #f6c4cc; border-radius: var(--r-md); background: #fff7f8; }
.v3 .ldx__when { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-2) var(--s-3); border-radius: var(--r-md); background: var(--white); font-weight: var(--w-medium); }
.v3 .ldx__when .ldx__ico { width: 32px; height: 32px; border-radius: var(--r-sm); }
.v3 .ldx__when .ldx__ico svg { width: 16px; height: 16px; }

/* Mouse: lo que se toca marca el borde en salmón (en el celular no hay hover) */
@media (hover: hover) and (pointer: fine) {
    .v3 .ldx__opt:hover, .v3 .ldx__tile:hover, .v3 .ldx__slot:hover { border-color: var(--venta); }
    .v3 .ldx__day:not(.is-on):hover { border-color: var(--venta); background: #fff7f8; }
    .v3 .ldx__opt:hover .ldx__radio { border-color: var(--venta); }
    .v3 .ldx__skip:hover, .v3 .ldx__dismiss:hover { color: var(--ink); }
}
.v3 .ldx button:focus-visible, .v3 .ldx a:focus-visible { outline: none; box-shadow: var(--focus); }

/* Descripción: recortada hasta que se pide leerla completa */
.v3 .fp-prose { position: relative; max-height: 16rem; overflow: hidden; }
.v3 .fp-prose::after { content: ""; position: absolute; inset: auto 0 0; height: 4rem; background: linear-gradient(transparent, var(--white)); }
.v3 .fp-prose.is-open { max-height: none; }
.v3 .fp-prose.is-open::after { display: none; }
.v3 .fp-prose p { margin: 0 0 var(--s-3); }
.v3 .fp-prose__more { margin-top: var(--s-3); padding-left: 0; padding-right: 0; }
.v3 .fp-prose__more[hidden] { display: none; }

/* Descripción ordenada con IA: bajada, puntos clave y el texto completo plegado */
.v3 .fp-ai__lead { margin: 0 0 var(--s-4); color: var(--ink); font-size: var(--fs-lg); line-height: var(--lh-snug); text-wrap: pretty; }
.v3 .fp-ai__keys { display: grid; gap: var(--s-2); margin: 0 0 var(--s-4); padding: 0; list-style: none; }
.v3 .fp-ai__keys li { position: relative; padding-left: 1.75rem; }
.v3 .fp-ai__keys li::before { content: ""; position: absolute; left: 0; top: 0.2em; width: 1.125rem; height: 1.125rem; border-radius: 50%; background: var(--accent-soft); }
.v3 .fp-ai__keys li::after { content: ""; position: absolute; left: 0.375rem; top: 0.4em; width: 0.3rem; height: 0.55rem; border: solid var(--accent-ink); border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); }
.v3 .fp-prose--folded { max-height: 0; }
.v3 .fp-prose--folded::after { display: none; }
.v3 .fp-prose--folded.is-open { max-height: none; }

/* Proyecto al que pertenece la unidad, debajo de la dirección */
.v3 .fp-head__project { margin: var(--s-1) 0 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .fp-head__project a { color: var(--ink); text-decoration: underline 1.5px var(--line); text-underline-offset: 3px; }

/* «Desarrolla» en los datos del proyecto: mismo subrayado gris claro que el resto de los links de texto */
.v3 .fp-facts dd a { color: inherit; }
.v3 .fp-facts dd a, .v3 .fp-buy__table dd a { text-decoration: underline 1.5px var(--line); text-underline-offset: 3px; }
/* Links de la caja «¿Lo vemos con tu caso?» de las guías: el mismo subrayado gris claro */
.v3 .v3-zona .zn-ask__trust a { color: inherit; text-decoration: underline 1.5px var(--line); text-underline-offset: 3px; }

/* Guardar: el corazón queda en el color de la operación cuando la propiedad está guardada */
.v3 .icon-actions .is-saved { color: var(--accent); border-color: var(--accent); }
.v3 .icon-actions .is-saved svg { --heart-fill: currentColor; }

@media (hover: hover) and (pointer: fine) {
    .v3 .fp-head__project a:hover { text-decoration-color: var(--venta); }
    .v3 .fp-facts dd a:hover, .v3 .fp-buy__table dd a:hover { text-decoration-color: var(--accent); }
    .v3 .v3-zona .zn-ask__trust a:hover { text-decoration-color: var(--accent); }
}

/* Celular y tablet: la foto primero, como en el prototipo. site.css lo hace con "main > .container";
   en el tema las fichas viven dentro de #property-page-wrapper y #project-page-wrapper, así que la regla se repite para esa estructura. */
@media (max-width: 1023px) {
    .v3 #property-page-wrapper > .container,
    .v3 #project-page-wrapper > .container { display: flex; flex-direction: column; }
    .v3 #property-page-wrapper > .container > .gallery,
    .v3 #project-page-wrapper > .container > .gallery { order: -1; margin-bottom: var(--s-5); }
    .v3 #property-page-wrapper > .container > .p-body,
    .v3 #project-page-wrapper > .container > .p-body { width: 100%; }
}

/* Listado: los resultados se atenúan mientras se aplica un filtro o se ordena */
.v3 #listing-wrapper { transition: opacity var(--t-fast); }
.v3 #listing-wrapper.is-loading,
.v3 .lst-page.is-loading #listing-wrapper { opacity: 0.45; pointer-events: none; }

/* Paginador: la página actual va como span (no es link) */
.v3 .pager ol span[aria-current="page"] { background: var(--ink); color: var(--white); font-weight: var(--w-medium); }

/* Moneda del precio en alquiler: mismo control segmentado que Comprar / Alquilar, con radios */
.v3 .lsb-seg--currency label { display: grid; place-items: center; min-height: 36px; border-radius: calc(var(--r-sm) - 2px); color: var(--body); font-size: var(--fs-sm); font-weight: var(--w-medium); cursor: pointer; }
.v3 .lsb-seg--currency label:has(input:checked) { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }
.v3 .lsb-seg--currency label:has(input:focus-visible) { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Comodidades: lista larga, plegada hasta que se abre */
.v3 .lsb-amenities summary { display: flex; justify-content: space-between; align-items: center; cursor: pointer; list-style: none; }
.v3 .lsb-amenities summary::-webkit-details-marker { display: none; }
.v3 .lsb-amenities summary::after { content: "+"; color: var(--muted); font-weight: var(--w-book); }
.v3 .lsb-amenities[open] summary::after { content: "–"; }
.v3 .lsb-amenities[open] summary { margin-bottom: var(--s-2); }
.v3 .fgroup.lsb-amenities .fgroup__title { float: none; margin-bottom: 0; }

/* Lista / Mapa: en el tema "Lista" es el estado actual (span) y "Mapa" lleva a la página del mapa (link) */
.v3 .lst-view a,
.v3 .lst-view .lst-view__btn { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 var(--s-3); border-radius: calc(var(--r-sm) - 2px); color: var(--body); font-size: var(--fs-sm); font-weight: var(--w-medium); text-decoration: none; }
.v3 .lst-view a svg,
.v3 .lst-view .lst-view__btn svg { width: 16px; height: 16px; }
.v3 .lst-view .lst-view__btn { background: var(--white); color: var(--ink); box-shadow: var(--shadow-1); }
/* Hover de la opción no elegida: el fondo del selector ya es gris, así que se aclara y el texto pasa a negro */
@media (hover: hover) and (pointer: fine) { .v3 .lst-view a:hover { background-color: rgb(255 255 255 / 0.6); color: var(--ink); } }

/* Home: sugerencias del buscador (lugares, proyectos y propiedades de /search_list) */
.v3 .finder__box { position: relative; }
.v3 .finder__suggest { position: absolute; top: calc(100% + var(--s-2)); left: 0; right: 0; z-index: 20; max-height: min(60vh, 420px); margin: 0; padding: var(--s-2) 0; overflow-y: auto; border-radius: var(--r-md, 12px); background: var(--white); box-shadow: var(--shadow-2, 0 12px 32px rgb(0 0 0 / 0.18)); list-style: none; text-align: left; }
.v3 .finder__suggest[hidden] { display: none; }
.v3 .finder__suggest-group { padding: var(--s-2) var(--s-4) var(--s-1); color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .finder__suggest a { display: block; padding: var(--s-2) var(--s-4); color: var(--ink); font-size: var(--fs-sm); line-height: 1.35; text-decoration: none; }
.v3 .finder__suggest a:focus-visible { outline: none; background: var(--surface-soft); }
@media (hover: hover) and (pointer: fine) { .v3 .finder__suggest a:hover { background: var(--surface-soft); } }
/* En el buscador avanzado del celular la lista va en el flujo, debajo del campo (sin overflow: como ítem
   de la grilla con scroll, el auto la achicaba a 18px y no se veía ninguna sugerencia) */
.v3 .hsearch__suggest { position: static; max-height: none; overflow: visible; margin-top: calc(var(--s-2) * -1); box-shadow: none; border: 1px solid var(--line); }
/* Con las sugerencias abiertas el hero deja ver la lista por debajo de su borde (la foto queda adentro igual) */
.v3 .v3-home .hero.is-suggesting { overflow: visible; z-index: 30; }
/* Buscador de la barra del listado: la lista de sugerencias cae debajo del campo */
.v3 .lst-bar .lsb-search { position: relative; }
.v3 .lsb-search__suggest { right: auto; width: 100%; max-width: 560px; }

/* Ingreso y registro (v3/login): panel con dos pestañas */
.v3 .login-sheet .sheet__panel { display: grid; gap: var(--s-4); align-content: start; }
.v3 .login-sheet__why { margin: 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .login-sheet__form { display: grid; gap: var(--s-4); }
.v3 .login-sheet__error { margin: 0; padding: var(--s-3) var(--s-4); border-radius: var(--r-sm); background: color-mix(in srgb, var(--error) 8%, transparent); color: var(--error); font-size: var(--fs-sm); }
.v3 .login-sheet__error[hidden] { display: none; }
.v3 .login-sheet__forgot { justify-self: center; color: var(--ink); font-size: var(--fs-sm); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }
.v3 .login-sheet [data-login-submit].is-loading { opacity: 0.6; cursor: wait; }
.v3 .login-sheet [data-login-pane] { display: grid; gap: var(--s-4); }
.v3 .login-sheet [data-login-pane][hidden] { display: none; }
.v3 .login-sheet__lead { margin: 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .login-sheet__lead strong { color: var(--ink); overflow-wrap: anywhere; }
.v3 .login-sheet__code { font-size: 1.5rem; letter-spacing: 0.4em; text-align: center; font-variant-numeric: tabular-nums; }
.v3 .login-sheet__links { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-2) var(--s-5); }
.v3 .login-sheet__or { display: flex; align-items: center; gap: var(--s-3); color: var(--body); font-size: var(--fs-sm); }
.v3 .login-sheet__or::before, .v3 .login-sheet__or::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.v3 .login-sheet__or[hidden], .v3 .login-sheet__google[hidden] { display: none; }
.v3 .login-sheet__google { display: flex; justify-content: center; min-height: 44px; }
.v3 button.login-sheet__forgot { padding: 0; border: 0; background: none; font: inherit; font-size: var(--fs-sm); cursor: pointer; }
@media (hover: hover) and (pointer: fine) { .v3 .login-sheet__forgot:hover { text-decoration-color: var(--venta); } }


/* Páginas institucionales (/venta): formulario de siempre (page-forms.js) con el diseño v3.
   page-forms.js marca el éxito con .success en .contact-form-wrapper y escribe los errores en .warning_msg */
.v3 .v3-inst .d-none { display: none !important; }
.v3 .v3-inst .warning_msg { color: var(--error); font-size: var(--fs-xs); }
.v3 .v3-inst .warning_msg:empty { display: none !important; }
.v3 .v3-inst .form-open__error { padding: var(--s-3); border-radius: var(--r-sm); background: var(--surface-soft); }
.v3 .v3-inst .contact-form-wrapper > .form-done { display: none; }
.v3 .v3-inst .contact-form-wrapper.success > .form-done { display: grid; }
.v3 .v3-inst .contact-form-wrapper.success > form,
.v3 .v3-inst #sellForm_forms_flash,
.v3 .v3-inst .form-flash { display: none; }
.v3 .v3-inst [data-v3-form].is-sending [data-v3-submit] { opacity: 0.6; pointer-events: none; }
/* Con sesión iniciada los datos viajan ocultos: .field (display: grid) no tiene que ganarle a [hidden] */
.v3 .form-open [hidden] { display: none !important; }
/* Después de enviar siguen las preguntas (v3/lead_discovery) en lugar del «Listo»; «Ahora no» vuelve al «Listo» */
.v3 .v3-inst .contact-form-wrapper.is-discovery > .form-done { display: none; }
/* FUB no tomó la consulta: el flash avisa que no se envió */
.v3 .v3-inst .form-flash:has(.agent-form-error-flash),
.v3 .v3-inst #sellForm_forms_flash:has(.agent-form-error-flash) { display: block; color: var(--error); font-size: var(--fs-sm); }
.v3 .site-header__owner[aria-current="page"] { border-color: var(--ink); }

/* Guías de zona: la lista de sugerencias del buscador del hero no se corta */
.v3 .v3-zona .hero.is-suggesting { overflow: visible; z-index: 30; }

/* Pie: búsquedas frecuentes (links internos a los listados más buscados, en todo el sitio) */
.v3 .site-footer__seo { margin-top: var(--s-6); padding-top: var(--s-5); border-top: 1px solid rgb(255 255 255 / 0.12); }
.v3 .site-footer__seo-title { margin: 0 0 var(--s-3); color: rgb(255 255 255 / 0.75); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .site-footer__seo-cols { display: grid; gap: var(--s-1) var(--s-6); }
.v3 .site-footer__seo ul { display: grid; align-content: start; gap: 2px; margin: 0; padding: 0; list-style: none; }
.v3 .site-footer__seo a { display: inline-block; padding: 4px 0; color: rgb(255 255 255 / 0.6); font-size: var(--fs-xs); text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .v3 .site-footer__seo a:hover { color: var(--white); text-decoration: underline; } }
@media (min-width: 640px) { .v3 .site-footer__seo-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Perfil del desarrollador dentro de /proyectos/{desarrollador}: el h1 del listado queda arriba,
   el nombre del perfil va como texto destacado */
.v3 .v3-perfil .pf-id__name { margin: 0; color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: 1.15; }

/* Ficha de proyecto: caja de vivienda promovida bajo la descripción y el historial del desarrollador */
.v3 .fp-promo { margin-top: var(--s-6); }
.v3 .fp-promo p { margin: var(--s-2) 0 0; }
.v3 #desarrollador .dev-stats { margin: var(--s-5) 0 var(--s-4); }
.v3 #desarrollador .dev-track { margin-bottom: var(--s-3); }
/* Link de reseñas: subrayado suave y salmón al pasar, como el resto de los links; la estrella en salmón */
.v3 .fp-agent__meta a { color: inherit; text-decoration: underline 1.5px var(--line); text-underline-offset: 3px; }
@media (hover: hover) and (pointer: fine) { .v3 .fp-agent__meta a:hover { text-decoration-color: var(--venta); } }
.v3 .fp-agent__star { color: var(--venta); }
/* Sin asesor: la burbuja con la p en el lugar de la foto y el nombre sin subrayado (no es link) */
.v3 .fp-agent--prop .fp-agent__photo { border-radius: 0; background: none; }
.v3 .fp-agent--prop .fp-agent__name { text-decoration: none; }

/* Guías para invertir (/invertir/{guía}): nota de lectura con tablas y pasos */
.v3 .v3-article__body { max-width: 70ch; }
.v3 .v3-article__body h2 { margin: var(--s-7) 0 var(--s-3); color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); }
.v3 .v3-article__body table { width: 100%; margin: var(--s-4) 0; border-collapse: collapse; font-size: var(--fs-sm); }
.v3 .v3-article__body th { padding: var(--s-2) var(--s-3) var(--s-2) 0; border-bottom: 1px solid var(--ink); color: var(--ink); font-weight: var(--w-medium); text-align: left; }
.v3 .v3-article__body td { padding: var(--s-3) var(--s-3) var(--s-3) 0; border-bottom: 1px solid var(--surface); vertical-align: top; }
.v3 .v3-article__body ol,
.v3 .v3-article__body ul { display: grid; gap: var(--s-3); padding-left: 1.25em; }
@media (max-width: 639px) { .v3 .v3-article__body table { display: block; overflow-x: auto; } }

/* Informes (/informes/{informe}): fecha bajo el título y gráficos con su tabla de datos */
.v3 .v3-article__date { margin-top: var(--s-3); color: var(--on-dark-muted); font-size: var(--fs-sm); }
.v3 .v3-chart { margin: var(--s-6) 0; padding: var(--s-5); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); }
.v3 .v3-chart__title { margin-bottom: var(--s-4); color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); line-height: var(--lh-snug); }
.v3 .v3-chart__legend { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-4); margin: calc(-1 * var(--s-2)) 0 var(--s-4); color: var(--body); font-size: var(--fs-xs); }
.v3 .v3-chart__legend > span { display: inline-flex; align-items: center; gap: var(--s-2); }
.v3 .v3-chart__key { display: inline-block; width: 12px; height: 12px; border-radius: 2px; background: var(--ink); }
.v3 .v3-chart__key--b { background: var(--muted); }
.v3 .v3-chart--line .v3-chart__key--b { background: var(--venta); }
.v3 .v3-chart__rows { display: grid; gap: var(--s-2); }
.v3 .v3-chart__row { display: grid; grid-template-columns: minmax(6.5rem, 28%) 1fr auto; align-items: center; gap: var(--s-3); font-size: var(--fs-sm); }
.v3 .v3-chart__label { color: var(--ink); }
.v3 .v3-chart__track { display: grid; gap: 3px; }
.v3 .v3-chart__bar { display: block; min-width: 2px; height: 14px; border-radius: 0 3px 3px 0; background: var(--ink); }
.v3 .v3-chart__bar--b { height: 8px; background: var(--muted); }
.v3 .v3-chart__row.is-hl .v3-chart__bar:not(.v3-chart__bar--b) { background: var(--venta); }
.v3 .v3-chart__row.is-hl .v3-chart__label { font-weight: var(--w-medium); }
.v3 .v3-chart__value { min-width: 4.5rem; color: var(--ink); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.v3 .v3-chart__value small { display: block; color: var(--muted); font-size: var(--fs-xs); }
.v3 .v3-chart__plot { position: relative; height: 220px; margin: var(--s-5) 0 0 3.5rem; border-bottom: 1px solid var(--ink); }
.v3 .v3-chart__tick { position: absolute; left: 0; right: 0; height: 0; border-top: 1px dashed var(--surface); }
.v3 .v3-chart__tick > span { position: absolute; right: 100%; top: 0; padding-right: var(--s-2); color: var(--muted); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; white-space: nowrap; transform: translateY(-50%); }
.v3 .v3-chart__cols { position: absolute; inset: 0; display: flex; align-items: flex-end; gap: 6px; }
.v3 .v3-chart__col { flex: 1; display: flex; align-items: flex-end; justify-content: center; gap: 2px; height: 100%; }
.v3 .v3-chart__colbar { position: relative; flex: 1; max-width: 44px; min-height: 2px; border-radius: 3px 3px 0 0; background: var(--ink); }
.v3 .v3-chart__colbar--b { background: var(--muted); }
.v3 .v3-chart__col.is-hl .v3-chart__colbar:not(.v3-chart__colbar--b) { background: var(--venta); }
.v3 .v3-chart__colval { position: absolute; bottom: 100%; left: 50%; padding-bottom: 2px; color: var(--ink); font-size: 0.6875rem; font-variant-numeric: tabular-nums; white-space: nowrap; transform: translateX(-50%); }
.v3 .v3-chart__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.v3 .v3-chart__line { fill: none; stroke: var(--ink); stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.v3 .v3-chart__line--b { stroke: var(--venta); }
.v3 .v3-chart__dot { position: absolute; width: 9px; height: 9px; border: 2px solid var(--white); border-radius: 50%; background: var(--ink); transform: translate(-50%, 50%); }
.v3 .v3-chart__dot--b { background: var(--venta); }
.v3 .v3-chart__dot > span { position: absolute; right: 0; bottom: 100%; padding-bottom: 4px; color: var(--ink); font-size: var(--fs-xs); font-weight: var(--w-medium); white-space: nowrap; }
.v3 .v3-chart__xaxis { display: flex; gap: 6px; margin: var(--s-2) 0 0 3.5rem; color: var(--body); font-size: var(--fs-xs); }
.v3 .v3-chart__xaxis > span { flex: 1 1 0; min-width: 0; text-align: center; white-space: nowrap; }
.v3 .v3-chart__xaxis--line { position: relative; height: 1.2em; }
.v3 .v3-chart__xaxis--line > span { position: absolute; white-space: nowrap; transform: translateX(-50%); }
.v3 .v3-chart__xaxis--line > span:first-child { transform: none; }
.v3 .v3-chart__xaxis--line > span:last-child { transform: translateX(-100%); }
.v3 .v3-chart__data { margin-top: var(--s-4); font-size: var(--fs-sm); }
.v3 .v3-chart__data summary { color: var(--ink); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.v3 .v3-article__body .v3-chart__data table { margin-bottom: 0; }
.v3 .v3-chart__data td, .v3 .v3-chart__data th[scope="row"] { font-variant-numeric: tabular-nums; }
.v3 .v3-chart__data th[scope="row"] { padding: var(--s-2) var(--s-3) var(--s-2) 0; border-bottom: 1px solid var(--surface); color: var(--body); font-weight: var(--w-book); }
.v3 .v3-chart__source { margin: var(--s-3) 0 0; color: var(--muted); font-size: var(--fs-xs); line-height: var(--lh-snug); }
.v3 .v3-chart__source a { color: inherit; }
@media (max-width: 639px) {
    .v3 .v3-chart { margin-inline: calc(-1 * var(--s-2)); padding: var(--s-4); }
    .v3 .v3-chart__row { grid-template-columns: 1fr auto; row-gap: 2px; }
    .v3 .v3-chart__track { grid-column: 1 / -1; grid-row: 2; }
    .v3 .v3-chart__colval { display: none; }
    .v3 .v3-chart__cols, .v3 .v3-chart__xaxis { gap: 3px; }
    .v3 .v3-chart__plot, .v3 .v3-chart__xaxis { margin-left: 3rem; }
    .v3 .v3-chart__xaxis { font-size: 0.625rem; }
}
/* Portada de informes: el último arriba, grande, y los anteriores en lista con fecha */
.v3 .v3-reports__date { display: block; margin-bottom: var(--s-2); color: var(--muted); font-size: var(--fs-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .v3-reports__lead { display: grid; gap: var(--s-5); margin-bottom: var(--s-7); color: inherit; text-decoration: none; }
.v3 .v3-reports__lead img { width: 100%; height: auto; aspect-ratio: 16 / 9; border-radius: var(--r-md); object-fit: cover; object-position: center 70%; }
.v3 .v3-reports__lead h2 { color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: var(--lh-snug); }
.v3 .v3-reports__lead p { margin-top: var(--s-3); color: var(--body); }
.v3 .v3-reports__lead:hover h2 { text-decoration: underline; text-underline-offset: 4px; }
@media (min-width: 900px) { .v3 .v3-reports__lead { grid-template-columns: 1.3fr 1fr; align-items: center; } }

/* Éxito del formulario: círculo, no burbuja (la burbuja es solo para la "p" de PROP) */
.v3 .v3-inst .form-done .form-done__icon { border-radius: 50%; }

/* Lista con mapa (/mapa/...), como el prototipo y compass.com: mapa fijo a pantalla completa a la
   izquierda y la lista de lo que se ve en él a la derecha. El mapa es el de producción (pages/mapa.css
   pinta pines y tarjetas); acá van el marco, el alto, los colores por operación y la lista. */
.v3 .lst-page--map { --primary: var(--ink); }
.v3 .lst-page--map .lst-body { display: none; }
.v3 .lst-page--map .lst-active { margin-bottom: var(--s-3); }
.v3 .lst-page--map .lst-quick { display: none; gap: var(--s-2); }
.v3 .lst-mapview { position: relative; display: grid; border-top: 1px solid var(--surface); }
.v3 .lst-mapview__map { position: relative; height: calc(100svh - var(--header-h) - var(--bar-h)); min-height: 420px; }
.v3 .lst-mapview__map .prop-inventory-map,
.v3 .lst-mapview__map .prop-inventory-map__stage { height: 100%; }
.v3 .lst-mapview__map .prop-inventory-map__canvas { height: 100%; min-height: 0; }
.v3 .lst-mapview__map .prop-inventory-map__count { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.v3 .lst-mapview__list { display: none; padding: var(--s-5) var(--s-5) var(--s-8); }
.v3 .map-list__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-2) var(--s-4); margin-bottom: var(--s-4); }
.v3 .map-list__count { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .map-list__follow { display: inline-flex; align-items: center; gap: var(--s-2); color: var(--body); font-size: var(--fs-xs); cursor: pointer; }
.v3 .map-list__grid { display: grid; gap: var(--s-4); margin: 0; padding: 0; list-style: none; }
.v3 .map-list__grid > li { border-radius: var(--r-md, 12px); transition: box-shadow var(--t-fast); }
.v3 .map-list__grid > li.is-hot { box-shadow: 0 0 0 2px var(--ink); }
.v3 .map-list.is-loading { opacity: 0.5; transition: opacity var(--t-fast); }
.v3 .map-list__more,
.v3 .map-list__empty p { margin: var(--s-4) 0 0; color: var(--body); font-size: var(--fs-sm); }
/* Pines: grupos en tinta (como el prototipo y Compass); el pin activo o señalado, en el color de la operación */
.v3 .lst-page--map .prop-map-dot { color: var(--white); font-family: inherit; font-weight: var(--w-medium); }
.v3 .lst-page--map .prop-map-pill { background: var(--white); color: var(--ink); font-family: inherit; font-weight: var(--w-medium); box-shadow: 0 0 0 1px var(--line), 0 2px 8px rgb(0 0 0 / 0.16); }
.v3 .lst-page--map .prop-map-pill.is-visited { color: var(--muted); }
.v3 .lst-page--map .prop-map-dot.is-visited { background: var(--ink); opacity: 0.72; }
.v3 .lst-page--map .prop-map-dot.is-active,
.v3 .lst-page--map .prop-map-pill.is-active,
.v3 .lst-page--map .prop-map-dot.is-hot,
.v3 .lst-page--map .prop-map-pill.is-hot { z-index: 6000 !important; background: var(--accent, var(--venta)); color: var(--white); opacity: 1; }
.v3 .lst-page--map .prop-map-zoom__btn:hover { background: var(--surface-soft); }
/* Celular: el mapa ocupa la pantalla; el botón flotante alterna con la lista */
.v3 .lst-mapfab { position: fixed; left: 50%; bottom: calc(var(--s-5) + env(safe-area-inset-bottom, 0px)); z-index: 40; display: inline-flex; align-items: center; gap: var(--s-2); min-height: 44px; padding: 0 var(--s-5); border: 0; border-radius: 999px; background: var(--ink); color: var(--white); font: inherit; font-size: var(--fs-sm); font-weight: var(--w-medium); box-shadow: var(--shadow-2); transform: translateX(-50%); cursor: pointer; }
.v3 .lst-mapfab svg { width: 18px; height: 18px; }
.v3 .lst-mapview.is-list .lst-mapview__map { display: none; }
.v3 .lst-mapview.is-list .lst-mapview__list { display: block; }
@media (max-width: 1023px) {
    .v3 .lst-mapview__map { height: calc(100svh - var(--header-h) - 64px); min-height: 360px; }
    .v3 .lsb .lst-page--map .lst-pill { display: none; }
}
@media (min-width: 640px) and (max-width: 1023px) {
    .v3 .lst-mapview.is-list .map-list__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
    .v3 .lst-page--map .lst-quick { display: flex; }
    .v3 .lst-mapview { grid-template-columns: minmax(0, 1.2fr) minmax(400px, 0.8fr); align-items: start; }
    .v3 .lst-mapview__map { position: sticky; top: calc(var(--header-h) + var(--bar-h)); }
    .v3 .lst-mapview__list { display: block; }
    .v3 .lst-mapfab { display: none; }
    .v3 .bar-1.hdr-hidden .lst-mapview__map { top: var(--bar-h); height: calc(100svh - var(--bar-h)); }
}
@media (min-width: 1440px) {
    .v3 .lst-mapview { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .v3 .map-list__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Cuenta (perfil, guardadas, contraseña, activar): formularios de siempre con el diseño v3 */
.v3 .v3-account__narrow { max-width: 520px; }
.v3 .v3-account__pending-saved { margin-top: var(--s-8); }
.v3 .v3-account__title { margin: 0 0 var(--s-4); color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); }
.v3 .v3-account__lead { margin: 0 0 var(--s-4); color: var(--body); }
.v3 .v3-account__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin-top: var(--s-2); }
.v3 .v3-account__grid { display: grid; gap: var(--s-6); align-items: start; }
@media (min-width: 1024px) { .v3 .v3-account__grid { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); } }
.v3 .v3-account .warning_msg { color: var(--error); font-size: var(--fs-xs); }
.v3 .v3-account .warning_msg:empty { display: none; }
.v3 .v3-account .form-group { display: grid; gap: var(--s-1); }
/* Perfil: los datos se leen como texto hasta tocar "Editar" (page-forms.js pone .edit en el form) */
.v3 #edit-profile:not(.edit) .field__input { pointer-events: none; padding-inline: 0; border-color: transparent; background: none; }
.v3 #edit-profile:not(.edit) .phone-empty { display: none; }
.v3 .profile-wrapper form .form_hide_buttons,
.v3 .profile-wrapper form .form_hide { display: none; }
.v3 .profile-wrapper form.edit .form_hide_buttons { display: flex; }
.v3 .profile-wrapper form.edit .form_hide { display: grid; gap: var(--s-3); }
.v3 .profile-wrapper form.edit .edit-button,
.v3 .profile-wrapper form.edit .password-placeholder { display: none; }
.v3 .v3-account__password, .v3 .v3-account__agency { margin-top: var(--s-6); padding-top: var(--s-5); border-top: 1px solid var(--surface); }
.v3 .v3-account__password-head { display: flex; gap: var(--s-3); align-items: baseline; margin-bottom: var(--s-3); }
.v3 .v3-account__agent { display: grid; gap: var(--s-4); }
/* Activar: el mensaje de éxito aparece cuando page-forms.js marca .success */
.v3 .activate-form-wrapper .success-message { display: none; }
.v3 .activate-form-wrapper.success .success-message { display: grid; gap: var(--s-3); justify-items: start; }
.v3 .activate-form-wrapper.success .v3-account__form { display: none; }
.v3 .v3-account__done .form-done__icon { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--venta); color: var(--white); }
.v3 .v3-account__done .form-done__icon svg { width: 22px; height: 22px; }
/* Guardadas: chips por tipo con su cantidad y el orden en la misma fila; la card quitada queda atenuada hasta recargar */
.v3 .v3-saved__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-3) var(--s-5); margin-bottom: var(--s-5); }
.v3 .v3-saved__kinds { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.v3 .v3-saved__kinds .chip { min-height: 40px; text-decoration: none; }
.v3 .chip__n { color: var(--muted); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
.v3 .chip.is-active .chip__n { color: rgb(255 255 255 / 0.7); }
.v3 .v3-saved__item { position: relative; }
.v3 .v3-saved__item .card__media img,
.v3 .v3-saved__item .card__body { transition: opacity var(--t-base); }
.v3 .v3-saved__item.is-removed .card__media img,
.v3 .v3-saved__item.is-removed .card__body { opacity: 0.35; }
.v3 #saved-results { transition: opacity var(--t-fast); }
.v3 #saved-results.is-loading { opacity: 0.5; pointer-events: none; }
@media (max-width: 639px) {
    .v3 .v3-saved__kinds { flex-wrap: nowrap; margin-inline: calc(var(--gutter, 16px) * -1); padding-inline: var(--gutter, 16px); overflow-x: auto; scrollbar-width: none; }
    .v3 .v3-saved__kinds::-webkit-scrollbar { display: none; }
    .v3 .v3-saved__kinds .chip { flex: none; min-height: 36px; padding-inline: var(--s-3); }
}
@media (min-width: 640px) { .v3 .v3-saved__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .v3 .v3-saved__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Corazón de guardar en las cards: círculo como las flechas, lleno y en color cuando está guardada */
.v3 .card__save::after { content: ""; position: absolute; inset: -4px; }
.v3 .card__save[aria-pressed="true"] { color: var(--venta); }
.v3 .card__save[aria-pressed="true"] svg { --heart-fill: currentColor; }
.v3 .card__save:active { transform: scale(0.9); }
.v3 .card__save:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }

/* Aviso al guardar o quitar, con «Deshacer» */
/* Aviso de la consulta con una cuenta que ya existía (site.js): tarjeta blanca como las hojas, abajo a la derecha */
.v3 .v3-account-note { position: fixed; right: 24px; bottom: 24px; z-index: 1000; display: grid; gap: var(--s-3); width: min(400px, calc(100vw - 32px)); padding: var(--s-5); border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); transform: translateY(16px); opacity: 0; visibility: hidden; transition: transform 0.2s, opacity 0.2s, visibility 0.2s; }
.v3 .v3-account-note.is-open { transform: none; opacity: 1; visibility: visible; }
.v3 .v3-account-note .title__section { margin: 0; }
.v3 .v3-account-note__text { margin: 0; color: var(--ink); font-size: var(--fs-sm); line-height: 1.5; }
.v3 .v3-account-note__actions { display: flex; justify-content: flex-end; gap: var(--s-2); }
@media (max-width: 639px) { .v3 .v3-account-note { left: 16px; right: 16px; bottom: 16px; width: auto; } }
.v3-toast { position: fixed; left: 50%; bottom: 24px; z-index: 1000; display: flex; align-items: center; gap: 16px; max-width: calc(100vw - 32px); padding: 14px 20px; border-radius: 12px; background: #1a1a1a; color: #fff; font-size: 0.9375rem; box-shadow: 0 8px 32px rgb(0 0 0 / 0.2); transform: translate(-50%, 16px); opacity: 0; visibility: hidden; transition: transform 0.2s, opacity 0.2s, visibility 0.2s; }
.v3-toast.is-open { transform: translate(-50%, 0); opacity: 1; visibility: visible; }
.v3-toast button { flex: none; min-height: 32px; padding: 0; border: 0; background: none; color: #fff; font: inherit; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
@media (max-width: 639px) { .v3-toast { left: 16px; right: 16px; justify-content: space-between; transform: translateY(16px); } .v3-toast.is-open { transform: none; } }

/* Header: cantidad de guardadas sobre el corazón y menú de la cuenta */
.v3 .site-header__saved { position: relative; }
.v3 .site-header__count { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--venta); color: var(--white); font-size: 11px; font-weight: var(--w-medium); line-height: 18px; text-align: center; font-variant-numeric: tabular-nums; }
.v3 .site-header__count[hidden] { display: none; }
.v3 .user-menu { position: relative; }
.v3 .user-menu > summary { list-style: none; cursor: pointer; }
.v3 .user-menu > summary::-webkit-details-marker { display: none; }
.v3 .user-menu__initials { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--ink); color: var(--white); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: 0.02em; }
.v3 .user-menu[open] .user-menu__initials { box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--ink); }
.v3 .user-menu__panel { position: absolute; top: calc(100% + 8px); right: 0; z-index: 60; display: grid; min-width: 240px; padding: var(--s-2); border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); }
.v3 .user-menu__who { display: grid; gap: 2px; margin: 0 0 var(--s-2); padding: var(--s-2) var(--s-3) var(--s-3); border-bottom: 1px solid var(--surface); font-size: var(--fs-sm); }
.v3 .user-menu__who span { overflow: hidden; color: var(--muted); font-size: var(--fs-xs); text-overflow: ellipsis; white-space: nowrap; }
.v3 .user-menu__who .user-menu__agency { color: var(--body); font-size: var(--fs-sm); }
.v3 .user-menu__panel a,
.v3 .user-menu__panel button { display: flex; align-items: center; gap: var(--s-3); min-height: 44px; padding: 0 var(--s-3); border: 0; border-radius: var(--r-sm); background: none; color: var(--ink); font: inherit; font-size: var(--fs-sm); text-align: left; text-decoration: none; cursor: pointer; }
.v3 .user-menu__panel svg { width: 18px; height: 18px; }
.v3 .user-menu__panel button { margin-top: var(--s-1); border-top: 1px solid var(--surface); border-radius: 0 0 var(--r-sm) var(--r-sm); color: var(--body); }
@media (hover: hover) and (pointer: fine) { .v3 .user-menu__panel a:hover, .v3 .user-menu__panel button:hover { background: var(--surface-soft); } }
.v3 .user-menu__n { margin-left: auto; color: var(--muted); font-size: var(--fs-xs); }
.v3 .user-menu__n[hidden] { display: none; }

/* Cuenta como panel: encabezado corto con iniciales, guardadas como protagonistas y al costado asesor y datos */
.v3 .v3-inst .page-head--compact { padding-bottom: var(--s-6); }
.v3 .v3-inst .page-head--compact .crumbs { margin-bottom: var(--s-4); }
.v3 .v3-inst .page-head--compact .page-head__title { font-size: var(--fs-2xl); }
.v3 .v3-dash__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4); }
.v3 .v3-dash__avatar { display: grid; flex: none; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--ink); color: var(--white); font-size: var(--fs-lg); font-weight: var(--w-medium); }
.v3 .v3-dash__email { margin: 2px 0 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .v3-dash__agency { margin: 2px 0 0; color: var(--body); font-weight: 600; }
.v3 .v3-account__new-agency { margin: calc(var(--s-2) * -1) 0 var(--s-3); }
.v3 .v3-account__agency-logo { margin: 0 0 var(--s-3); }
.v3 .v3-account__agency-logo img { display: block; max-width: 160px; max-height: 56px; width: auto; height: auto; }
.v3 .profile-wrapper form.edit .v3-account__new-agency { display: block; }
.v3 .v3-account__new-agency summary { cursor: pointer; color: var(--body); font-size: var(--fs-sm); text-decoration: underline; }
.v3 .v3-account__new-agency[open] summary { margin-bottom: var(--s-2); }
.v3 .v3-dash__logout { margin-left: auto; }
.v3 .v3-dash__logout-end { display: none; }
.v3 .v3-dash { padding-top: var(--s-7); }
.v3 .v3-dash__main { display: grid; gap: var(--s-4); min-width: 0; }
.v3 .v3-dash__saved-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-2); }
.v3 .v3-dash__saved-head .v3-account__title { margin: 0; }
.v3 .v3-dash__n { margin-left: var(--s-1); color: var(--muted); font-weight: var(--w-book); }
.v3 .v3-dash__grid { gap: var(--s-5); }
.v3 .v3-dash__empty { margin: 0; max-width: none; }
.v3 .v3-dash__side { display: grid; gap: var(--s-5); align-content: start; }
@media (min-width: 640px) { .v3 .v3-dash__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) {
    .v3 .v3-dash .v3-account__grid { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); gap: var(--s-7); }
    .v3 .v3-dash__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .v3 .v3-dash__side { position: sticky; top: calc(var(--header-h, 72px) + var(--s-4)); }
}
@media (min-width: 1280px) { .v3 .v3-dash__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* En el celular las guardadas pasan de costado, de a una y media, para que se vea que hay más */
@media (max-width: 639px) {
    .v3 .v3-dash { padding-top: var(--s-5); }
    .v3 .v3-dash__head { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--s-3); }
    .v3 .v3-dash__avatar { width: 48px; height: 48px; font-size: var(--fs-md); }
    .v3 .v3-inst .page-head--compact .page-head__title { font-size: var(--fs-xl); }
    .v3 .v3-dash__email { overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; }
    .v3 .v3-dash__logout { display: none; }
    .v3 .v3-dash__logout-end { display: flex; }
    .v3 .v3-dash__grid { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 82%; gap: var(--s-3); margin-inline: calc(var(--gutter, 16px) * -1); padding-inline: var(--gutter, 16px); overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter, 16px); scrollbar-width: none; }
    .v3 .v3-dash__grid::-webkit-scrollbar { display: none; }
    .v3 .v3-dash__grid > li { scroll-snap-align: start; }
    .v3 .v3-dash__saved-head .btn { padding-inline: 0; }
}

/* Tus datos en el costado: en lectura, rótulo chico y valor; «Editar» y «Cambiar» arriba a la derecha */
.v3 .v3-dash__side .profile-wrapper { position: relative; }
.v3 .v3-dash__side .profile-wrapper .v3-account__title { margin-bottom: var(--s-3); }
.v3 .v3-dash__side #edit-profile:not(.edit) { gap: var(--s-3); }
.v3 .v3-dash__side #edit-profile:not(.edit) .field { gap: 0; }
.v3 .v3-dash__side #edit-profile:not(.edit) .field__label { color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }
.v3 .v3-dash__side #edit-profile:not(.edit) .field__input { min-height: 0; height: auto; padding-block: 2px; overflow: hidden; font-size: var(--fs-sm); text-overflow: ellipsis; }
.v3 .v3-dash__side #edit-profile:not(.edit) .field-row--2 { gap: var(--s-3); }
.v3 .v3-dash__side #edit-profile .edit-button { position: absolute; top: var(--s-5); right: var(--s-5); margin: 0; }
.v3 .v3-dash__side .v3-account__password, .v3 .v3-dash__side .v3-account__agency { margin-top: var(--s-4); padding-top: var(--s-4); }
.v3 .v3-dash__side .v3-account__password:not(.edit) { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
.v3 .v3-dash__side .v3-account__password:not(.edit) .v3-account__password-head { margin: 0; }
.v3 .v3-dash__side .v3-account__password:not(.edit) .field__label { color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }
.v3 .v3-dash__side .v3-account__password .edit-button { margin: 0; }
.v3 .v3-dash__side .edit-button .btn { min-height: 36px; padding-inline: var(--s-2); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 639px) { .v3 .v3-dash__side #edit-profile .edit-button { top: var(--s-4); right: var(--s-3); } }

/* Mapa: popups y apilados con el diseño v3 (pages/mapa.css queda como base del mapa de siempre) */
.v3 .lst-page--map #map { --map-boundary: var(--accent, var(--venta)); }
.v3 .lst-page--map .gm-style-iw-c { border-radius: var(--r-md, 12px) !important; box-shadow: var(--shadow-2) !important; }
.v3 .lst-page--map .prop-map-popup { color: var(--ink); font-family: var(--font, inherit); }
.v3 .lst-page--map .prop-map-popup:hover .prop-map-popup__price,
.v3 .lst-page--map .prop-map-popup:focus-visible .prop-map-popup__price { color: var(--accent, var(--venta)); }
.v3 .lst-page--map .prop-map-popup--loading { color: var(--body); font-weight: var(--w-book); }
.v3 .lst-page--map .prop-map-popup__media { background: var(--surface); }
.v3 .lst-page--map .prop-map-popup__body { gap: 2px; padding: var(--s-3) var(--s-4); }
.v3 .lst-page--map .prop-map-popup__price { color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); line-height: 1.2; }
.v3 .lst-page--map .prop-map-popup__specs { color: var(--body); font-size: var(--fs-xs); font-weight: var(--w-book); }
.v3 .lst-page--map .prop-map-popup__project { margin-top: var(--s-1); color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .lst-page--map .prop-map-popup__address { color: var(--muted); font-size: var(--fs-xs); }
.v3 .lst-page--map .prop-map-popup__chips { margin-top: var(--s-1); }
.v3 .lst-page--map .prop-map-popup__chip { padding: 2px 8px; background: var(--surface-soft); color: var(--ink); font-size: 11px; font-weight: var(--w-medium); }
.v3 .lst-page--map .prop-map-popup--row { border-color: var(--surface); border-radius: var(--r-sm, 8px); }
.v3 .lst-page--map .prop-map-popup--row:hover,
.v3 .lst-page--map .prop-map-popup--row:focus-visible { border-color: var(--ink); }
.v3 .lst-page--map .prop-map-popup--row.is-visited { border-color: var(--line); background: var(--surface-soft); }
.v3 .lst-page--map .prop-map-popup--row .prop-map-popup__price { font-size: var(--fs-md); }
.v3 .lst-page--map .prop-map-stack__head { padding: var(--s-4) 44px var(--s-3) var(--s-4); border-bottom: 1px solid var(--surface); background: var(--white); color: var(--ink); }
.v3 .lst-page--map .prop-map-stack__title { color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); letter-spacing: 0; text-transform: none; }
.v3 .lst-page--map .prop-map-stack__address { color: var(--body); font-size: var(--fs-xs); }
.v3 .lst-page--map .prop-map-stack__address--solo { color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .lst-page--map .prop-map-stack__count { color: var(--muted); font-size: var(--fs-xs); }
.v3 .lst-page--map .prop-map-stack__close { color: var(--ink); }
.v3 .lst-page--map .prop-map-stack__close:hover,
.v3 .lst-page--map .prop-map-stack__close:focus-visible { color: var(--accent, var(--venta)); }
.v3 .lst-page--map .prop-map-stack__list { gap: var(--s-2); padding: var(--s-3); }

/* Guías de barrio y de zona en formato ficha (/barrios/{barrio}, /punta-del-este/{zona}): epígrafe del hero,
   tarjeta de mercado, la guía por capítulos con su foto al costado y las búsquedas como chips */
.v3 .v3-zona .zn-intro > * { min-width: 0; }
.v3 .v3-zona .zn-market__num { overflow-wrap: anywhere; }
.v3 .v3-zona .hero__caption { position: absolute; right: max(var(--s-4), env(safe-area-inset-right, 0px)); bottom: var(--s-3); z-index: 1; max-width: min(60ch, 70%); margin: 0; color: rgb(255 255 255 / 0.75); font-size: var(--fs-xs); text-align: right; }
.v3 .v3-zona .zn-intro .fp-highlights { margin-top: var(--s-2); }
.v3 .v3-zona .zn-intro .fp-highlights li { font-size: var(--fs-md); color: var(--ink); }
.v3 .v3-zona .zn-market { margin-top: var(--s-5); padding: var(--s-5); border: 1px solid var(--surface); border-radius: var(--r-md); }
.v3 .v3-zona .zn-market__title { margin: 0 0 var(--s-4); color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }
.v3 .v3-zona .zn-market__grid { display: grid; gap: var(--s-5); margin: 0; }
.v3 .v3-zona .zn-market__grid div { display: grid; gap: 2px; align-content: start; }
.v3 .v3-zona .zn-market__grid dt { color: var(--muted); font-size: var(--fs-xs); }
.v3 .v3-zona .zn-market__grid dd { margin: 0; }
.v3 .v3-zona .zn-market__num { color: var(--ink); font-size: var(--fs-2xl); font-weight: var(--w-medium); line-height: 1.15; font-variant-numeric: tabular-nums; }
.v3 .v3-zona .zn-market__num small { color: var(--muted); font-size: var(--fs-sm); font-weight: var(--w-book); }
.v3 .v3-zona .zn-market__src { color: var(--muted); font-size: var(--fs-xs); }
@media (min-width: 640px) { .v3 .v3-zona .zn-market__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.v3 .v3-zona .zn-chapters { display: grid; gap: var(--s-7); margin-top: var(--s-5); }
.v3 .v3-zona .zn-chapter { display: grid; gap: var(--s-4); align-items: center; }
.v3 .v3-zona .zn-chapter__text { max-width: 62ch; min-width: 0; }
.v3 .v3-zona .zn-chapter h3 { margin: 0 0 var(--s-3); color: var(--ink); font-size: var(--fs-xl); font-weight: var(--w-medium); line-height: 1.2; text-wrap: balance; }
.v3 .v3-zona .zn-chapter p { margin: 0 0 var(--s-3); font-size: var(--fs-md); line-height: 1.65; }
.v3 .v3-zona .zn-chapter p:last-child { margin-bottom: 0; }
.v3 .v3-zona .zn-chapter a { color: var(--ink); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }
.v3 .v3-zona .zn-chapter__media { margin: 0; }
.v3 .v3-zona .zn-chapter__media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--r-md); background: var(--surface); }
.v3 .v3-zona .zn-chapter__media figcaption { margin-top: var(--s-2); color: var(--muted); font-size: var(--fs-xs); }
@media (min-width: 900px) {
    .v3 .v3-zona .zn-chapters { gap: var(--s-8); }
    .v3 .v3-zona .zn-chapter--media { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s-7); }
    .v3 .v3-zona .zn-chapter--media:nth-child(even) .zn-chapter__media { order: -1; }
}
@media (min-width: 1024px) { .v3 .v3-zona .zn-chapter:not(.zn-chapter--media) .zn-chapter__text { max-width: 70ch; } }
@media (hover: hover) and (pointer: fine) { .v3 .v3-zona .zn-chapter a:hover { text-decoration-color: var(--venta); } }

.v3 .v3-zona .zn-prose p { font-size: var(--fs-md); }
.v3 .v3-zona .zn-where { display: grid; gap: var(--s-6); }
@media (min-width: 900px) { .v3 .v3-zona .zn-where { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } }
.v3 .v3-zona .zn-links { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.v3 .v3-zona .zn-links a { display: inline-flex; align-items: center; gap: var(--s-2); min-height: 44px; padding: 0 var(--s-4); border: 1px solid var(--line); border-radius: var(--r-pill); color: var(--ink); font-size: var(--fs-sm); text-decoration: none; }
.v3 .v3-zona .zn-links svg { width: 16px; height: 16px; }
@media (hover: hover) and (pointer: fine) { .v3 .v3-zona .zn-links a:hover { border-color: var(--ink); } }

/* Notas de invertir: resumen arriba, texto a tamaño de lectura y fotos con epígrafe */
.v3 .v3-article .zn-summary { margin-bottom: var(--s-6); padding: var(--s-5); border-radius: var(--r-md); background: var(--surface-soft); }
.v3 .v3-article .zn-summary__title { margin: 0 0 var(--s-3); color: var(--ink); font-size: var(--fs-xs); font-weight: var(--w-medium); letter-spacing: var(--tracking-label); text-transform: uppercase; }
.v3 .v3-article .v3-article__main { min-width: 0; }
.v3 .v3-article .v3-article__body > h2:first-child { margin-top: 0; }
.v3 .v3-article .v3-article__body p,
.v3 .v3-article .v3-article__body li { font-size: var(--fs-md); line-height: 1.65; }
.v3 .v3-article .v3-article__body a { color: var(--ink); text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }
.v3 .v3-article .hero__lead { max-width: 60ch; }

/* Panel de filtros (#filtros): el título de cada grupo flota; todo lo demás va debajo, a todo el ancho */
.v3 .fgroup > :not(.fgroup__title):not(legend) { clear: both; }

/* Guía: mapa estático del barrio (contorno o pin) con el botón de Google Maps encima */
.v3 .v3-zona .zn-map--img { place-items: end start; min-height: 0; padding: 0; overflow: hidden; background: var(--surface); }
.v3 .v3-zona .zn-map--img img { display: block; grid-area: 1 / 1; width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; }
.v3 .v3-zona .zn-map--img .btn { grid-area: 1 / 1; margin: var(--s-4); box-shadow: 0 1px 4px rgb(0 0 0 / 0.16); }

/* Legal: política de privacidad, puntos numerados en una columna de lectura */
.v3 .v3-legal__list { display: grid; gap: var(--s-6); max-width: 720px; margin: 0; padding: 0; list-style: none; counter-reset: legal; }
.v3 .v3-legal__list > li { counter-increment: legal; }
.v3 .v3-legal__list h2 { margin: 0 0 var(--s-3); color: var(--ink); font-size: var(--fs-lg); font-weight: var(--w-medium); line-height: var(--lh-snug); }
.v3 .v3-legal__list h2::before { content: counter(legal) ". "; color: var(--muted); }
.v3 .v3-legal__list p { margin: 0 0 var(--s-3); color: var(--body); }
.v3 .v3-legal__list p:last-child { margin-bottom: 0; }
.v3 .v3-legal__list a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }

/* Cards con varias fotos: el zoom al señalar va en la tira de fotos, no en cada foto.
   Si se agrandara cada foto, asomaría el borde de la siguiente (se veía como una franja al costado). */
.v3 .card__media > .card__slides { transition: transform var(--t-slow, 0.4s) var(--ease, ease); }
@media (hover: hover) and (pointer: fine) {
    .v3 .card:hover .card__slides > img { transform: none; }
    .v3 .card:hover .card__slides { transform: scale(1.04); }
}

/* Reseñas del asesor: con más de 3, en computadora van en fila (3 a la vista) y se pasan con flechas */
.v3 .rail-nav { display: flex; gap: var(--s-2); }
.v3 .rail-nav .btn:disabled { opacity: 0.35; cursor: default; }
@media (min-width: 640px) {
    .v3 .reviews--rail { grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: calc((100% - var(--s-4)) / 2); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
    .v3 .reviews--rail::-webkit-scrollbar { display: none; }
    .v3 .reviews--rail > * { scroll-snap-align: start; }
}
@media (min-width: 1024px) { .v3 .reviews--rail { grid-auto-columns: calc((100% - 2 * var(--s-4)) / 3); } }

/* Home: opiniones, venta y alquiler traen 11 más la card de "Ver todas". En celular siguen el carrusel
   con puntos; desde tablet van en fila (2 a la vista, 4 en computadora y 3 opiniones) y las flechas de
   la cabecera pasan de a una página, con un contador al lado (site.js, [data-rail]). */
.v3 .v3-home .rail-nav { flex: none; align-items: center; }
.v3 .v3-home .rail-nav__count { min-width: 5.5em; margin-right: var(--s-1); color: var(--body); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.v3 .v3-home .rail-nav .btn--icon { border: 1px solid var(--line); border-radius: 50%; background: var(--white); }
.v3 .v3-home .rail-nav .btn--icon svg { width: 18px; height: 18px; }
@media (min-width: 640px) {
    .v3 .v3-home .rail {
        --rail-n: 2;
        --rail-gap: var(--s-5);
        grid-auto-flow: column;
        grid-template-columns: none;
        grid-auto-columns: calc((100% - (var(--rail-n) - 1) * var(--rail-gap)) / var(--rail-n));
        column-gap: var(--rail-gap);
        /* El scroll recorta la sombra del hover: un poco de aire arriba y abajo */
        margin-block: -8px;
        padding-block: 8px;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
    }
    .v3 .v3-home .rail::-webkit-scrollbar { display: none; }
    .v3 .v3-home .rail > * { scroll-snap-align: start; }
    /* La última card lleva al listado, como en el celular */
    .v3 .v3-home .rail > .card-more { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: var(--s-2); padding: var(--s-6); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--ink); text-align: center; text-decoration: none; }
    .v3 .v3-home .rail > .card-more strong { max-width: 18ch; font-size: var(--fs-lg); font-weight: var(--w-medium); text-wrap: balance; }
    .v3 .v3-home .rail > .card-more span:last-child { color: var(--body); font-size: var(--fs-sm); }
    .v3 .v3-home .rail > .card-more .card-more__icon { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: var(--s-2); border-radius: var(--r-bubble); background: var(--accent); color: var(--white); }
    .v3 .v3-home .rail > .card-more .card-more__icon svg { width: 24px; height: 24px; }
}
@media (min-width: 640px) and (hover: hover) and (pointer: fine) {
    .v3 .v3-home .rail > .card-more:hover { border-color: var(--ink); }
}
@media (min-width: 1024px) {
    .v3 .v3-home .grid-cards.rail { --rail-n: 4; }
    .v3 .v3-home .reviews.rail { --rail-n: 3; --rail-gap: var(--s-4); }
}

/* Puntaje de PROP en Google en la cabecera de opiniones (el del proyecto; igual que en la home) */
.v3 .reviews__score { display: flex; flex: none; align-items: center; gap: var(--s-2); margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .reviews__score .review__stars { font-size: var(--fs-xs); letter-spacing: 1px; }
.v3 .reviews__score > span:nth-child(2)::after { content: "·"; margin-left: var(--s-2); color: var(--muted); }
.v3 .reviews__score .btn--ghost { min-height: 44px; padding-inline: 0; }

/* Formulario de la ficha: precio y gastos arriba (en celular la caja de consulta no se ve) */
.v3 .sheet__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-2); margin: var(--s-3) 0 0; }
.v3 .sheet__price strong { color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); }
.v3 .sheet__price strong small { color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }
.v3 .sheet__price span { color: var(--body); font-size: var(--fs-sm); }
.v3 .sheet__price span::before { content: "·"; margin-right: var(--s-2); color: var(--muted); }
.v3 .sheet__price .ask__legal { flex-basis: 100%; margin-top: var(--s-1); }

/* Foco de los campos (desplegables y textos; el formulario de consulta tiene su regla): sutil, el borde pasa a negro como en
   el buscador, sin el anillo salmón. Casillas y opciones mantienen su marca de foco */
.v3 select:focus,
.v3 textarea:focus,
.v3 input:not([type="checkbox"]):not([type="radio"]):focus { outline: none; border-color: var(--ink); box-shadow: none; }


/* Fichas en el celular: precio, datos clave y consulta apenas termina la foto.
   Propiedades: las etiquetas van sobre la foto y el título (dos renglones, a todo el ancho) baja después de la consulta,
   separado por una línea y pegado a la descripción. Proyectos: el precio de entrada de cada tipología y los datos
   del proyecto en tabla. En computadora no cambia nada: el cabezal, la caja lateral y los datos con ícono siguen igual. */
.v3 .gallery__tags,
.v3 .fp-head__addr-short,
.v3 .dev-stats__s,
.v3 .dev-track__place,
.v3 .fp-dev__all,
.v3 .fp-head__ref,
.v3 .fp-head__project--ref { display: none; }

@media (max-width: 1023px) {
    .v3 #property-page-wrapper > .container > .crumbs,
    .v3 #property-page-wrapper > .container > .fp-head { order: 1; }
    .v3 #property-page-wrapper > .container > .p-body { order: 2; }
    .v3 #property-page-wrapper .fp-facts,
    .v3 #project-page-wrapper .fp-facts,
    .v3 .fp-head__side,
    .v3 #property-page-wrapper .fp-head .fp-tags,
    .v3 #project-page-wrapper .fp-tags__release { display: none; }

    /* Etiquetas sobre la foto, abajo a la izquierda (el contador queda a la derecha) */
    .v3 .gallery__tags { position: absolute; left: var(--gutter); bottom: var(--s-4); z-index: 1; display: flex; flex-wrap: wrap; gap: 6px; max-width: calc(100% - 2 * var(--gutter) - 72px); }
    .v3 .gallery__tags span { display: inline-flex; align-items: center; padding: 4px 9px; border-radius: var(--r-pill); background: rgb(255 255 255 / 0.95); color: var(--accent-ink); font-size: var(--fs-xs); font-weight: var(--w-medium); line-height: 1.3; }
    .v3 .gallery__tags span.is-plain { color: var(--ink); }

    /* Precio con compartir y guardar al lado */
    .v3 .fp-buy { gap: var(--s-4); padding: 0; border-bottom: 0; }
    .v3 .fp-buy__top { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
    .v3 .fp-buy__top .icon-actions { display: flex; flex: none; gap: var(--s-2); }
    .v3 .fp-buy__price strong { font-size: 2rem; line-height: 1.1; letter-spacing: -0.02em; white-space: nowrap; }
    .v3 .fp-buy__price strong small { color: var(--muted); font-size: var(--fs-sm); font-weight: var(--w-book); letter-spacing: 0; }
    .v3 .fp-buy__price > small { margin-top: 2px; }

    /* Datos clave en una fila, separados por líneas finas */
    .v3 .fp-strip { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); margin: 0; padding: var(--s-3) 0; border-block: 1px solid var(--surface); }
    .v3 .fp-strip div { display: grid; justify-items: center; gap: 2px; padding: 0 var(--s-1); text-align: center; }
    .v3 .fp-strip div + div { border-left: 1px solid var(--surface); }
    .v3 .fp-strip svg { width: 20px; height: 20px; margin-bottom: 2px; color: var(--accent); }
    .v3 .fp-strip dd { margin: 0; color: var(--ink); font-size: var(--fs-md); font-weight: var(--w-medium); line-height: 1.2; }
    .v3 .fp-strip dt { color: var(--muted); font-size: var(--fs-xs); }

    /* Título después de la consulta: una línea arriba, dos renglones como máximo */
    .v3 #property-page-wrapper .fp-head { grid-template-columns: minmax(0, 1fr); margin-top: var(--s-5); padding: var(--s-4) 0 0; border-top: 1px solid var(--surface); }
    .v3 #property-page-wrapper .fp-head h1 { font-size: 1.1875rem; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-wrap: pretty; }
    .v3 #property-page-wrapper .fp-head__addr { margin-top: 6px; }
    .v3 #property-page-wrapper .fp-head__project { margin-top: 6px; }
    .v3 .fp-head__ref { display: inline; margin-left: var(--s-2); color: var(--muted); font-size: var(--fs-xs); }
    .v3 .fp-head__project--ref { display: block; }
    .v3 .fp-head__project--ref .fp-head__ref { margin-left: 0; }
    .v3 #property-page-wrapper .p-body { padding-top: 0; }

    /* Proyecto: tipologías con su precio de entrada y datos del proyecto en tabla */
    /* Línea entre la consulta y la descripción, con los mismos espacios que la línea de las propiedades */
    .v3 .fp-buy--project { padding-bottom: var(--s-5); border-bottom: 1px solid var(--surface); }
    .v3 #project-page-wrapper .p-body { padding-top: 0; }
    .v3 #project-page-wrapper .p-body .fp-section:first-of-type { padding-top: var(--s-4); }
    .v3 .fp-buy--project .fp-buy__price strong { font-size: 1.75rem; }
    .v3 .fp-buy__price strong.is-text { font-size: 1.25rem; line-height: 1.25; white-space: normal; }
    .v3 .fp-buy__types { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--surface); }
    .v3 .fp-buy__types li { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-3); padding: var(--s-2) 0; border-bottom: 1px solid var(--surface); font-size: var(--fs-sm); }
    .v3 .fp-buy__types span { color: var(--body); }
    .v3 .fp-buy__types b { color: var(--ink); font-weight: var(--w-medium); white-space: nowrap; }
    .v3 .fp-buy__types b small { margin-right: 2px; color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }
    .v3 .fp-buy__note { margin: calc(var(--s-2) * -1) 0 0; color: var(--muted); font-size: var(--fs-xs); line-height: 1.45; }
    .v3 .fp-buy__table { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--surface); }
    .v3 .fp-buy__table div { display: grid; gap: 1px; padding: var(--s-2) 0; border-bottom: 1px solid var(--surface); }
    .v3 .fp-buy__table div:nth-child(odd) { padding-right: var(--s-3); }
    .v3 .fp-buy__table div:last-child:nth-child(odd) { grid-column: 1 / -1; }
    .v3 .fp-buy__table dt { color: var(--muted); font-size: var(--fs-xs); }
    .v3 .fp-buy__table dd { margin: 0; color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
    .v3 .fp-buy__table dd a { color: inherit; text-decoration: none; }

    /* Etiquetas sobre la foto (proyecto) y dirección en un renglón, sin el departamento (proyecto y propiedad) */
    .v3 #project-page-wrapper .fp-head .fp-tags,
    .v3 .fp-head__addr-full { display: none; }
    .v3 #project-page-wrapper .fp-head__addr,
    .v3 #property-page-wrapper .fp-head__addr { min-width: 0; }
    .v3 .fp-head__addr-short { display: block; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

    /* Desarrollador: logo chico al lado del nombre, cifras en una fila, proyectos con su estado en pastilla
       y el link a todos sus proyectos al final, como botón */
    .v3 #project-page-wrapper .fp-dev { flex-wrap: nowrap; gap: var(--s-3); }
    .v3 #project-page-wrapper .fp-dev__logo { width: 44px; height: 44px; font-size: 1.125rem; }
    .v3 #project-page-wrapper .fp-dev .btn--ghost,
    .v3 #project-page-wrapper .dev-more--delivered,
    .v3 #project-page-wrapper .dev-stats__l,
    .v3 #project-page-wrapper .dev-track__place-d { display: none; }
    .v3 #project-page-wrapper .dev-stats { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); row-gap: 0; margin: var(--s-4) 0 0; padding: var(--s-3) 0; }
    .v3 #project-page-wrapper .dev-stats li { justify-items: center; padding-inline: var(--s-1); text-align: center; }
    .v3 #project-page-wrapper .dev-stats li + li { padding-left: var(--s-1); border-left: 1px solid var(--surface); }
    .v3 #project-page-wrapper .dev-stats strong { font-size: 1.375rem; }
    .v3 #project-page-wrapper .dev-stats span { color: var(--muted); }
    .v3 #project-page-wrapper .dev-stats__s { display: block; }
    .v3 #project-page-wrapper .dev-track li { grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; }
    .v3 #project-page-wrapper .dev-track__year { font-weight: var(--w-book); }
    .v3 #project-page-wrapper .dev-track__name { line-height: 1.3; }
    .v3 #project-page-wrapper .dev-track__name a { color: var(--ink); font-weight: var(--w-medium); text-decoration: none; }
    .v3 #project-page-wrapper .dev-track__place { display: block; color: var(--muted); font-size: var(--fs-xs); }
    .v3 #project-page-wrapper .dev-track__state { padding: 3px 8px; border-radius: var(--r-pill); background: var(--accent-soft); color: var(--accent-ink); font-weight: var(--w-medium); white-space: nowrap; }
    .v3 #project-page-wrapper .dev-track__state--sold { background: var(--surface); color: var(--body); }
    .v3 #project-page-wrapper .fp-dev__all { display: flex; margin-top: var(--s-4); }
}

/* Similares en el celular: el link del título sobra, el carrusel termina en la card «Ver …» (.card-more, que se ve hasta 639px) */
@media (max-width: 639px) {
    .v3 #property-page-wrapper .section__head-link,
    .v3 #project-page-wrapper .section__head-link { display: none; }
}

/* Búsquedas relacionadas en el celular: sin hover, el subrayado va gris y fino como el resto de los links del sitio, no el negro del navegador */
@media (max-width: 1023px) {
    .v3 .seo-links__row a,
    .v3 .seo-links__text a { text-decoration: underline 1.5px var(--line); text-underline-offset: 4px; }
}

/* Landing de anuncios (/proyectos/{slug}/anuncio): foto, precio y el formulario a la vista.
   En el celular todo en una columna; en computadora el formulario queda fijo a la derecha. */
.v3 .lp__wrap { padding-bottom: calc(var(--s-8) + 64px); }
.v3 .lp__gallery { margin-bottom: var(--s-4); }
/* Foto más baja que en la ficha: en el celular el formulario tiene que asomar sin scrollear */
@media (max-width: 1023px) { .v3 .lp__gallery .gallery__item { aspect-ratio: 16 / 10; } }
.v3 .lp__main { display: flex; flex-direction: column; gap: var(--s-5); }
@media (max-width: 1023px) { .v3 .lp__side { display: contents; } }
.v3 .lp__head h1 { font-size: var(--fs-lg); line-height: 1.2; margin: 0 0 var(--s-1); }
.v3 .lp__addr { display: flex; align-items: center; gap: var(--s-1); margin: 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .lp__addr svg { width: 16px; height: 16px; flex: none; }
.v3 .lp__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2); margin: var(--s-3) 0 0; }
.v3 .lp__price > span:first-child { color: var(--body); font-size: var(--fs-sm); }
.v3 .lp__price strong { font-size: 1.75rem; font-weight: var(--w-medium); color: var(--ink); }
.v3 .lp__price small { flex-basis: 100%; color: var(--muted); font-size: var(--fs-xs); }
.v3 .lp__types small { color: var(--muted); font-weight: var(--w-book); }
.v3 .lp__specs { margin: var(--s-2) 0 0; color: var(--ink); font-size: var(--fs-sm); }
.v3 .lp__types { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: grid; gap: var(--s-1); }
.v3 .lp__types li { display: flex; justify-content: space-between; font-size: var(--fs-sm); color: var(--body); }
.v3 .lp__types b { color: var(--ink); font-weight: var(--w-medium); }
.v3 .lp__note { margin: var(--s-2) 0 0; color: var(--muted); font-size: var(--fs-xs); }
.v3 .lp__form { scroll-margin-top: calc(var(--header-h) + var(--s-3)); padding: var(--s-4); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); box-shadow: 0 6px 24px rgba(0, 0, 0, .06); }
.v3 .lp__agent { display: flex; gap: var(--s-3); align-items: center; margin-bottom: var(--s-3); }
.v3 .lp__agent img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: none; }
.v3 .lp__agent h2 { margin: 0; font-size: var(--fs-md); font-weight: var(--w-medium); line-height: 1.25; }
.v3 .lp__agent p { margin: 2px 0 0; color: var(--body); font-size: var(--fs-xs); }
.v3 .lp__lead.v3-lead { margin-top: 0; }
.v3 .lp__lead.v3-lead form { gap: var(--s-3); }
.v3 .lp__lead .chat-field { min-height: 48px; }
.v3 .lp__lead .chat-btn { width: 100%; }
.v3 .lp__form.is-sent .lp__agent { display: none; }
.v3 .lp__facts { margin: 0; }
.v3 .lp__section .fp-h2 { margin-bottom: var(--s-3); }
.v3 .lp__invest { display: flex; gap: var(--s-2); align-items: flex-start; margin: var(--s-3) 0 0; font-size: var(--fs-sm); color: var(--ink); }
.v3 .lp__invest svg { width: 18px; height: 18px; flex: none; color: var(--accent); }
.v3 .lp__map { width: 100%; height: auto; border-radius: var(--r-md); display: block; }
.v3 .lp__reviews { grid-template-columns: 1fr; }
.v3 .ldx--quick .ldx__quickhello { padding-bottom: var(--s-2); }
/* Landing de anuncios, al terminar: proyectos parecidos para seguir mirando */
.v3 .ldx__more { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-3); }
.v3 .ldx__more-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.v3 .ldx__more-list a { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-2); border: 1px solid var(--line); border-radius: var(--r-md); color: var(--ink); text-decoration: none; transition: border-color var(--t-fast); }
.v3 .ldx__more-list a:hover { border-color: var(--ink); }
.v3 .ldx__more-list img { width: 72px; height: 54px; flex: none; border-radius: var(--r-sm, 6px); object-fit: cover; background: var(--surface); }
.v3 .ldx__more-list span { display: grid; gap: 2px; min-width: 0; flex: 1; }
.v3 .ldx__more-list strong { overflow: hidden; font-size: var(--fs-sm); font-weight: var(--w-medium); text-overflow: ellipsis; white-space: nowrap; }
.v3 .ldx__more-list small { color: var(--body); font-size: var(--fs-xs); }
.v3 .ldx__more-list small b { font-weight: inherit; white-space: nowrap; }
.v3 .ldx__more > .btn { white-space: normal; text-align: center; }
.v3 .ldx__more-go { width: 16px; height: 16px; flex: none; color: var(--muted); }
.v3 .site-header__actions--landing { margin-left: auto; }
/* Landing de anuncios: en la computadora, el menú del sitio (el formulario está siempre a la vista: «Consultar» sobra);
   en el celular, solo el logo y «Consultar» */
@media (min-width: 1024px) { .v3 .site-header__actions--landing { display: none; } }
@media (max-width: 1023px) {
    .v3 .site-header--landing .site-nav,
    .v3 .site-header--landing .site-header__actions:not(.site-header__actions--landing) { display: none; }
}
@media (min-width: 1024px) {
    /* Una foto grande que se desliza (el mosaico de la ficha no entra en la columna) */
    .v3 .lp__gallery .gallery__track { display: flex; overflow-x: auto; height: min(62vh, 560px); border-radius: var(--r-md); }
    .v3 .lp__gallery .gallery__item { flex: 0 0 100%; display: block; }
    .v3 .lp__gallery .gallery__count { display: block; }
    /* A la derecha, lp__side ocupa la columna entera (sin separación entre filas: las vacías que abarca no suman
       alto) y el formulario queda fijo adentro; a la izquierda, la foto y abajo el resto, sin hueco */
    .v3 .lp__wrap { padding-top: var(--s-5); display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 0 var(--s-6); align-items: start; }
    .v3 .lp__gallery { grid-column: 1; grid-row: 1; margin-bottom: 0; }
    .v3 .lp__main { display: contents; }
    .v3 .lp__side { grid-column: 2; grid-row: 1 / span 30; align-self: stretch; display: flex; flex-direction: column; gap: var(--s-5); }
    .v3 .lp__form { position: sticky; top: calc(var(--header-h) + var(--s-4)); }
    /* Después de consultar es más alto que la pantalla: deja de quedar fijo y se scrollea con la página */
    .v3 .lp__form.is-sent { position: static; }
    .v3 .lp__main > .lp__facts, .v3 .lp__main > .lp__section { grid-column: 1; margin-top: var(--s-6); }
    .v3 .lp__reviews { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Landings de anuncios (proyectos y propiedades): el nombre, el barrio y las etiquetas sobre la foto, y el formulario
   encabezado por el precio (en proyectos, el de entrada de cada tipología: la que se toca se suma al mensaje). En el
   celular no va el header: el logo queda sobre la foto y la foto toma el alto justo para que el botón quede al pie
   de la primera pantalla (v3/ficha.js). */
.v3 .lp .lp__gallery::after { content: ""; position: absolute; inset: auto 0 0 0; z-index: 1; height: 160px; background: linear-gradient(transparent, rgb(0 0 0 / 0.62)); pointer-events: none; }
.v3 .lp .lp__title { position: absolute; left: var(--gutter); right: var(--gutter); bottom: var(--s-5); z-index: 2; pointer-events: none; }
.v3 .lp .lp__title h1 { margin: 0 0 var(--s-1); color: var(--white); font-size: 1.4rem; font-weight: var(--w-medium); line-height: 1.15; text-shadow: 0 1px 8px rgb(0 0 0 / 0.35); }
.v3 .lp .lp__title .gallery__tags { position: static; display: flex; flex-wrap: wrap; gap: 6px; max-width: none; }
.v3 .lp .lp__title .gallery__tags span { display: inline-flex; align-items: center; gap: 4px; padding: 4px 9px; border-radius: var(--r-pill); background: rgb(255 255 255 / 0.95); color: var(--accent-ink); font-size: var(--fs-xs); font-weight: var(--w-medium); line-height: 1.3; }
/* El barrio en su renglón, debajo del nombre; el estado y la entrega, en etiquetas abajo */
.v3 .lp__barrio { display: flex; align-items: center; gap: 4px; margin: 0 0 var(--s-2); color: var(--white); font-size: var(--fs-sm); font-weight: var(--w-medium); text-shadow: 0 1px 6px rgb(0 0 0 / 0.4); }
.v3 .lp__barrio svg { width: 14px; height: 14px; flex: none; }
.v3 .lp .lp__title .gallery__tags span.is-plain { color: var(--ink); }
/* Propiedades: el título es largo («Venta apartamento 3 dormitorios en…»): más chico y en dos renglones como mucho */
.v3 .lp .lp__title--propiedad h1 { display: -webkit-box; overflow: hidden; font-size: 1.2rem; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.v3 .lp__logo { display: none; }
/* En el «Listo» de las landings alcanza con el próximo paso: el resumen de respuestas es para el asesor */
.v3 .lp .ldx__done .ldx__knows { display: none; }
/* La pregunta recibe el foco para lectores de pantalla; no es un control, no lleva el recuadro */
.v3 .lp .ldx__q:focus { outline: none; }
/* Sin «Ver todas» al lado del puntaje (la landing no saca de la página): no va el separador */
.v3 .lp .reviews__score > span:nth-child(2)::after { content: none; }
.v3 .lp__known { margin: 0; color: var(--body); font-size: var(--fs-xs); }
.v3 .lp__known button { padding: 0; border: 0; background: none; color: var(--ink); font: inherit; font-weight: var(--w-medium); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.v3 .lp__pick { margin: 0 0 var(--s-3); padding-bottom: var(--s-3); border-bottom: 1px solid var(--line); }
.v3 .lp__pick .lp__price { margin: 0; }
.v3 .lp__pick .lp__note { margin-top: var(--s-2); }
.v3 .lp__pick-h { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-2); margin: 0 0 var(--s-2); color: var(--ink); font-size: var(--fs-sm); font-weight: var(--w-medium); }
.v3 .lp__pick-h small { color: var(--muted); font-size: var(--fs-xs); font-weight: var(--w-book); }
/* Tres entran a lo ancho; con más, la fila se desliza y la cuarta asoma */
.v3 .lp__pick-row { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; }
.v3 .lp__pick-row::-webkit-scrollbar { display: none; }
.v3 .lp__pick-row button { flex: 1 0 calc((100% - 12px) / 3); display: grid; gap: 2px; padding: var(--s-2) var(--s-1); border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); color: var(--body); font: inherit; text-align: center; cursor: pointer; transition: border-color var(--t-fast), background var(--t-fast); }
.v3 .lp__pick-row span { font-size: var(--fs-xs); }
.v3 .lp__pick-row b { color: var(--ink); font-size: 0.95rem; font-weight: var(--w-medium); white-space: nowrap; }
.v3 .lp__pick-row b small { color: var(--muted); font-size: 0.7em; font-weight: var(--w-book); }
.v3 .lp__pick-row button[aria-pressed="true"] { border-color: var(--accent); background: var(--venta-soft); box-shadow: inset 0 0 0 1px var(--accent); }
.v3 .lp__pick-row button[aria-pressed="true"] span { color: var(--accent-ink); }
.v3 .lp__form.is-sent .lp__pick { display: none; }
/* Formulario compacto: el rótulo va adentro del campo (el label queda para lectores de pantalla) */
.v3 .lp .lp__lead .field__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.v3 .lp .lp__lead .chat-field { min-height: 46px; }
.v3 .lp .lp__lead.v3-lead form { gap: var(--s-2); }
.v3 .lp .lp__agent img { width: 44px; height: 44px; }
@media (max-width: 1023px) {
    .v3:has(.lp) .site-header--landing { display: none; }
    .v3 .lp .lp__gallery { margin-bottom: 0; }
    .v3 .lp .lp__gallery .gallery__item { aspect-ratio: auto; height: var(--lp-photo-h, 56.25vw); }
    .v3 .lp .lp__gallery::before { content: ""; position: absolute; inset: 0 0 auto 0; z-index: 1; height: 80px; background: linear-gradient(rgb(0 0 0 / 0.4), transparent); pointer-events: none; }
    .v3 .lp .lp__logo { display: block; position: absolute; top: 14px; left: var(--gutter); z-index: 2; width: 66px; height: auto; filter: drop-shadow(0 1px 6px rgb(0 0 0 / 0.35)); pointer-events: none; }
    .v3 .lp .gallery__count { top: 14px; bottom: auto; right: var(--gutter); }
    .v3 .lp .lp__main { gap: var(--s-5); }
    .v3 .lp .lp__form { position: relative; z-index: 3; margin-top: calc(var(--s-5) * -1); padding: var(--s-3) var(--s-4) var(--s-4); border: 0; box-shadow: 0 -4px 24px rgb(0 0 0 / 0.10); scroll-margin-top: var(--s-3); }
    .v3 .lp .lp__agent { margin-bottom: var(--s-3); }
    /* Celular chico: lo que sobra para que el botón entre en la primera pantalla (la nota del * se queda: va pegada a los precios) */
    .v3 .lp--tight .lp__pick .lp__note:not(.lp__note--star),
    .v3 .lp--tight .lp__agent p,
    .v3 .lp--tight .lp__title .gallery__tags .lp__promo { display: none; }
    .v3 .lp--tight .lp__pick { padding-bottom: var(--s-2); margin-bottom: var(--s-2); }
    /* Con la foto mínima, el texto de la foto más junto para que no toque el logo */
    .v3 .lp--tight .lp__title { bottom: var(--s-4); }
    .v3 .lp--tight .lp__title h1 { font-size: 1.25rem; }
    .v3 .lp--tight .lp__barrio { margin-bottom: var(--s-1); }
    .v3 .lp--tight .lp__title--propiedad h1 { -webkit-line-clamp: 1; }
    /* Después de consultar, las preguntas ocupan toda la pantalla (ficha.js pone lp--asking) */
    .v3 .lp--asking .lp__gallery,
    .v3 .lp--asking .lp__main > :not(.lp__side),
    .v3:has(.lp--asking) .site-footer { display: none; }
    .v3 .lp--asking .lp__wrap { padding-bottom: 0; }
    .v3 .lp--asking .lp__form { margin-top: 0; min-height: 100svh; padding-top: var(--s-5); box-shadow: none; }
}
@media (max-width: 639px) {
    /* Opiniones de la landing: las dos una debajo de la otra, sin carrusel */
    .v3 .lp .lp__reviews { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: 1fr; gap: var(--s-3); margin-inline: 0; padding-inline: 0; overflow: visible; }
    .v3 .lp .lp__reviews .review { padding: var(--s-4); background: var(--surface-soft); }
    .v3 .lp .lp__reviews + .dots { display: none; }
}
@media (min-width: 1024px) {
    .v3 .lp .lp__title { left: var(--s-6); right: var(--s-6); bottom: var(--s-6); }
    .v3 .lp .lp__title h1 { font-size: 2rem; }
    .v3 .lp .lp__title--propiedad h1 { font-size: 1.6rem; }
}

/* Hoja de consulta de las fichas: quién atiende (v3/sheet_who), el formulario compacto con el comentario plegado
   y el botón fijo abajo. En el celular la hoja queda a la medida (se ve la ficha arriba) y las preguntas entran en
   la pantalla: mientras se responden, el título, quién atiende y el precio se van. */
.v3 .sheet-who { display: flex; align-items: center; gap: var(--s-3); margin: var(--s-3) 0; padding: var(--s-3); border-radius: var(--r-md); background: var(--surface-soft); }
.v3 .sheet-who p { display: grid; gap: 2px; margin: 0; }
.v3 .sheet-who strong { color: var(--ink); font-weight: var(--w-medium); }
.v3 .sheet-who small { color: var(--body); font-size: var(--fs-xs); }
.v3 .sheet-who__photo { flex: none; width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.v3 .sheet-who__p { flex: none; width: 48px; height: 48px; color: var(--accent); }
.v3 .sheet-who__faces { display: flex; flex: none; }
.v3 .sheet-who__faces img { width: 34px; height: 34px; margin-left: -10px; border: 2px solid var(--surface-soft); border-radius: 50%; object-fit: cover; }
.v3 .sheet-who__faces img:first-child { margin-left: 0; }
.v3 .sheet-who + .agency-chat { margin-top: 0; }
.v3 .sheet:has(.sheet-who) .sheet__grip { margin-bottom: var(--s-3); }
.v3 .sheet:has(.sheet-who) .title--sm .title__main { display: -webkit-box; overflow: hidden; color: var(--body); font-size: var(--fs-md); -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.v3 .sheet:has(.sheet-who) .title--sm .title__main::before { content: none; }
.v3 form.v3-lead--compact { gap: var(--s-2); }
.v3 .v3-lead--compact .chat-group:not(.chat-group--select) .field__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.v3 .v3-lead--compact .chat-field { min-height: 46px; }
.v3 .chat-group.is-folded { display: none; }
.v3 .v3-lead__add { justify-self: start; display: inline-flex; align-items: center; gap: var(--s-2); padding: var(--s-1) 0; border: 0; background: none; color: var(--ink); font: inherit; font-size: var(--fs-sm); font-weight: var(--w-medium); cursor: pointer; }
.v3 .v3-lead__add span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--surface-soft); line-height: 1; }
.v3 .sheet .v3-lead--compact .chat-btn { width: 100%; min-height: 50px; }
@media (max-width: 1023px) {
    .v3 .sheet__panel:has(.v3-lead--compact) { padding-bottom: 0; }
    .v3 .sheet .v3-lead--compact .chat-button { position: sticky; bottom: 0; z-index: 1; margin: 0 calc(var(--gutter) * -1); padding: var(--s-3) var(--gutter) calc(var(--s-4) + env(safe-area-inset-bottom)); background: var(--white); box-shadow: 0 -1px 0 var(--surface); }
    .v3 .sheet .ldx { gap: 10px; padding-bottom: var(--s-5); }
    .v3 .sheet__panel:has(.ldx:not([hidden])) :is(.title--sm, .sheet-who, .sheet__price) { display: none; }
    .v3 .sheet .ldx__step { gap: var(--s-2); }
    .v3 .sheet .ldx__top { min-height: 28px; }
    .v3 .sheet .ldx__step:not(.ldx__done) .ldx__q { font-size: 1.15rem; }
    .v3 .sheet .ldx__step:not(.ldx__done) .ldx__hint { display: none; }
    .v3 .sheet .ldx__opt { gap: 10px; padding: 6px var(--s-3); }
    .v3 .sheet .ldx__opt .ldx__ico { width: 30px; height: 30px; }
    .v3 .sheet .ldx__otext { gap: 0; }
    .v3 .sheet .ldx__opt .ldx__otext strong { font-size: var(--fs-sm); }
    .v3 .sheet .ldx__quickhello { padding-bottom: 0; }
}

/* Landing del desarrollador (/proyectos/{desarrollador}/meta o /g): sus proyectos en venta. No son links:
   tocar uno lo elige en el formulario (ficha.js) */
.v3 .lp-dev__projects { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v3 .lp-dev__projects button { display: flex; flex-direction: column; width: 100%; padding: 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--white); overflow: hidden; text-align: left; cursor: pointer; font: inherit; color: inherit; transition: border-color var(--t-fast); }
.v3 .lp-dev__projects button:hover { border-color: var(--ink); }
.v3 .lp-dev__projects img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; background: var(--surface); }
.v3 .lp-dev__info { display: grid; gap: 2px; padding: var(--s-3) var(--s-3) 0; }
.v3 .lp-dev__info strong { font-weight: var(--w-medium); font-size: var(--fs-sm); color: var(--ink); }
.v3 .lp-dev__info small { font-size: var(--fs-xs); color: var(--body); }
.v3 .lp-dev__ask { margin: var(--s-2) var(--s-3) var(--s-3); font-size: var(--fs-xs); font-weight: var(--w-medium); color: var(--venta); }
.v3 .lp--dev .lp__facts { margin: 0; }
@media (min-width: 1024px) { .v3 .lp-dev__projects { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Link de una inmobiliaria para su cliente (pages/agency-share.htm, layouts/agency.htm): su logo arriba y su contacto */
/* inmobiliariaonline: el verde del manual de marca (#2BAB92) en lugar del salmón y el violeta de PROP, para venta y alquiler */
.ash-body {
    --venta: #2bab92;
    --venta-ink: #1e7d6a;      /* texto chico sobre blanco con contraste AA */
    --venta-soft: #e6f6f2;
    --alquiler: var(--venta);
    --alquiler-ink: var(--venta-ink);
    --alquiler-soft: var(--venta-soft);
    --accent: var(--venta);
    --accent-ink: var(--venta-ink);
    --accent-soft: var(--venta-soft);
}
.v3 .ash__bar { background: var(--white); border-bottom: 1px solid var(--surface); }
.v3 .ash__bar-in { display: flex; align-items: center; min-height: 64px; padding-block: var(--s-2); }
.v3 .ash__logo { display: block; max-height: 48px; max-width: 200px; width: auto; height: auto; }
.v3 .ash__name { font-size: var(--fs-md); font-weight: var(--w-medium); color: var(--ink); }
.v3 .ash .lp__gallery::after { display: none; }
.v3 .ash .lp__title { position: static; padding: var(--s-3) 0 0; pointer-events: auto; }
@media (max-width: 1023px) { .v3 .ash .lp__title { padding-inline: var(--gutter); } }
.v3 .ash .lp__title h1 { color: var(--ink); text-shadow: none; }
.v3 .ash .lp__title .lp__barrio { color: var(--body); }
.v3 .ash .gallery__count { top: var(--s-3); bottom: auto; }
.v3 .ash__pick { margin-bottom: var(--s-4); }
.v3 .ash__contact .lp__agent p { margin: 2px 0 0; color: var(--body); font-size: var(--fs-sm); }
.v3 .ash__direct { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.v3 .ash__direct svg { width: 18px; height: 18px; }
.v3 .ash__to-ask { display: inline-block; margin-top: var(--s-3); font-size: var(--fs-sm); color: var(--accent-ink); text-decoration: underline; text-underline-offset: 3px; }
/* «¿Qué te pareció?»: respuestas de un toque */
.v3 .ash-ask__opts { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.v3 .ash-ask__hint { margin: var(--s-2) 0 0; font-size: var(--fs-sm); color: var(--body); }
.v3 .ash-ask__q { margin: 0 0 var(--s-2); font-weight: var(--w-medium); color: var(--ink); }
.v3 .ash-ask__other { display: flex; gap: var(--s-2); margin-top: var(--s-3); }
.v3 .ash-ask__other[hidden] { display: none; }
.v3 .ash-ask__other input { flex: 1; min-width: 0; }
.v3 .ash-ask__again { margin-top: var(--s-2); padding: 0; border: 0; background: none; font: inherit; font-size: var(--fs-sm); color: var(--body); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.v3 .ash .ash__error { margin-top: var(--s-2); }
.v3 .ash__error:empty { display: none; }
.v3 .ash__error { margin: 0; color: var(--danger, #c0392b); font-size: var(--fs-sm); }
.v3 .ash__sent { margin: 0; padding: var(--s-4); border-radius: var(--r-md, 12px); background: var(--surface); color: var(--ink); }
.v3 .ash__empty { padding-block: var(--s-8); max-width: 640px; }
.v3 .ash__empty h1 { font-size: 1.4rem; font-weight: var(--w-medium); }
@media (min-width: 1024px) { .v3 .ash__bar-bottom { display: none; } }

/* Panel de la flecha de compartir, para la gente de una inmobiliaria (v3/share_client, ficha.js) */
.v3 .share-panel { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: var(--gutter); background: rgb(0 0 0 / 0.45); }
.v3 .share-panel[hidden] { display: none; }
.v3 .share-panel__box { width: 100%; max-width: 440px; padding: var(--s-5); border-radius: var(--r-md); background: var(--white); box-shadow: var(--shadow-2); }
.v3 .share-panel__head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); margin-bottom: var(--s-2); }
.v3 .share-panel__title { margin: 0; font-size: var(--fs-md); font-weight: var(--w-medium); color: var(--ink); }
.v3 .share-panel__text, .v3 .share-panel__logo { margin: 0 0 var(--s-3); font-size: var(--fs-sm); color: var(--body); }
.v3 .share-panel__logo { margin: var(--s-3) 0 0; }
.v3 .share-client__link { display: flex; gap: var(--s-2); margin-bottom: var(--s-3); }
.v3 .share-client__link input { flex: 1; min-width: 0; }
.v3 .share-client__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.v3 .share-client__for { margin: 0 0 var(--s-2); font-size: var(--fs-sm); font-weight: var(--w-medium); color: var(--ink); }
.v3 .share-client__for[hidden] { display: none; }
.v3 .share-client__name { margin-top: var(--s-4); padding-top: var(--s-4); border-top: 1px solid var(--surface); }
.v3 .share-client__name .field__label { display: block; margin-bottom: var(--s-2); }
.v3 .share-client__name .share-client__link { margin-bottom: var(--s-2); }
.v3 .share-panel__hint { margin: 0; font-size: var(--fs-xs); color: var(--muted); }
@media (max-width: 639px) { .v3 .share-panel { align-items: flex-end; padding: 0; } .v3 .share-panel__box { max-width: none; border-radius: var(--r-md) var(--r-md) 0 0; } }

/* /inmobiliarias: qué pueden hacer las inmobiliarias con PROP y el registro (pages/inmobiliarias.htm, agency-signup.js) */
.v3 .agx__cta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin-top: var(--s-5); }
.v3 .agx__grid { display: grid; gap: var(--s-4); margin: var(--s-5) 0 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .v3 .agx__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .v3 .agx__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.v3 .agx__grid li { padding: var(--s-5); border: 1px solid var(--line); border-radius: var(--r-md); }
.v3 .agx__grid svg { width: 28px; height: 28px; color: var(--accent); }
.v3 .agx__grid h3 { margin: var(--s-3) 0 var(--s-2); font-size: var(--fs-lg); font-weight: var(--w-medium); }
.v3 .agx__grid p { margin: 0; color: var(--body); }
.v3 .agx__split { display: grid; gap: var(--s-7); }
@media (min-width: 1024px) { .v3 .agx__split { grid-template-columns: minmax(0, 1fr) minmax(0, 520px); gap: var(--s-8); align-items: start; } }
.v3 .agx__steps { display: grid; gap: var(--s-5); margin: var(--s-5) 0 0; padding: 0; list-style: none; counter-reset: agx-step; }
.v3 .agx__steps li { position: relative; padding-left: 56px; counter-increment: agx-step; }
.v3 .agx__steps li::before { content: counter(agx-step); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 40px; height: 40px; border-radius: var(--r-bubble); background: var(--ink); color: var(--white); font-weight: var(--w-medium); }
.v3 .agx__steps h3 { margin: 0 0 var(--s-1); font-size: var(--fs-lg); font-weight: var(--w-medium); }
.v3 .agx__steps p { margin: 0; color: var(--body); }
.v3 .agx__form { margin-top: var(--s-5); background: var(--white); }
.v3 .agx__step { display: grid; gap: var(--s-3); }
.v3 .agx__step[hidden] { display: none; }
.v3 .agx__row { display: grid; gap: var(--s-3); }
@media (min-width: 640px) { .v3 .agx__row { grid-template-columns: 1fr 1fr; } }
.v3 .agx__new summary { cursor: pointer; color: var(--body); font-size: var(--fs-sm); text-decoration: underline; }
.v3 .agx__new[open] summary { margin-bottom: var(--s-2); }
.v3 .agx__note { margin: 0; color: var(--body); }
.v3 .agx__small { margin: var(--s-3) 0 0; font-size: var(--fs-sm); color: var(--muted); }
.v3 .agx__error:empty { display: none; }
.v3 .agx__error { margin: 0; color: var(--error); font-size: var(--fs-sm); }
.v3 .agx__code { letter-spacing: 0.4em; text-align: center; font-size: var(--fs-lg); }
