/* inmo. — Estilo común de módulos (ventanas que se abren sobre la aplicación).
   Norma de diseño: docs/continuidad/DISENO-MODULOS.md. Usa los colores de la paleta 10 definidos en styles.css.
   Escritorio: panel centrado. Teléfono: hoja que sube desde abajo, a pantalla casi completa. */

.modulo-capa{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:rgba(15,27,46,.55);animation:modulo-fundido .16s ease-out}
[data-theme=dark] .modulo-capa{background:rgba(0,0,0,.62)}
html.modulo-abierto,html.modulo-abierto body{overflow:hidden}

.modulo{--modulo-acento:var(--accent);--modulo-acento-suave:var(--soft);--modulo-sobre-acento:#fff;
 position:relative;display:flex;flex-direction:column;width:min(880px,100%);max-height:min(88dvh,920px);
 background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:20px;
 box-shadow:0 30px 80px rgba(15,27,46,.28);overflow:hidden;animation:modulo-entrada .2s ease-out}
[data-theme=dark] .modulo{--modulo-sobre-acento:#0f1b2e;box-shadow:0 30px 80px rgba(0,0,0,.5)}

/* Color de sección: el módulo toma el acento de la sección desde la que se abre (valores --nav-color y --nav-soft de styles.css). */
.modulo--inmuebles{--modulo-acento:#85520b;--modulo-acento-suave:#fff5e3}
[data-theme=dark] .modulo--inmuebles{--modulo-acento:#f2c779;--modulo-acento-suave:#372d20}
.modulo--clientes{--modulo-acento:#087c70;--modulo-acento-suave:#e1f3ee}
[data-theme=dark] .modulo--clientes{--modulo-acento:#7adac5;--modulo-acento-suave:#193d39}
.modulo--captacion{--modulo-acento:#7342b5;--modulo-acento-suave:#f3edfc}
[data-theme=dark] .modulo--captacion{--modulo-acento:#d1b4ff;--modulo-acento-suave:#302744}

/* Reinicio local: los estilos generales de botones y títulos no deben deformar el módulo. */
.modulo button{font:inherit;margin:0;flex:none;width:auto;min-width:0;text-align:center;letter-spacing:normal;line-height:1.2}
.modulo h2,.modulo h3,.modulo h4,.modulo p{margin:0}
.modulo label{margin:0;font-weight:inherit;font-size:inherit}
.modulo svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* Cabecera */
.modulo-cabecera{display:flex;align-items:flex-start;gap:14px;padding:20px 24px 16px;border-bottom:1px solid var(--border);background:var(--surface)}
.modulo-icono{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--modulo-acento-suave);color:var(--modulo-acento);flex:none}
.modulo-icono svg{width:22px;height:22px}
.modulo-titulos{flex:1;min-width:0}
.modulo-eyebrow{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--modulo-acento)}
.modulo-titulo{font-size:20px;font-weight:650;line-height:1.25;margin-top:2px;overflow-wrap:anywhere}
.modulo-subtitulo{font-size:14px;color:var(--muted-ink);margin-top:2px;overflow-wrap:anywhere}
.modulo-cerrar{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:12px;background:transparent;color:var(--muted-ink)}
.modulo-cerrar:hover{background:var(--soft);color:var(--ink)}

/* Cuerpo y pie */
.modulo-cuerpo{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:20px 24px 24px}
.modulo-pie{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;padding-bottom:max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface)}
.modulo-pie[hidden]{display:none}
.modulo-nota{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted-ink)}
.modulo-nota svg{width:16px;height:16px}

/* Botones */
.modulo-boton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}
.modulo-boton:hover{background:var(--soft)}
.modulo-boton--primario{background:var(--accent);border-color:var(--accent);color:#fff}
.modulo-boton--primario:hover{background:var(--accent);filter:brightness(1.06)}
[data-theme=dark] .modulo-boton--primario{color:#0f1b2e}
.modulo-boton--suave{border-color:transparent;background:transparent;color:var(--muted-ink);padding:8px 12px;min-height:40px}
.modulo-boton--suave:hover{color:var(--ink)}
.modulo-boton--peligro{background:var(--danger);border-color:var(--danger);color:#fff}
[data-theme=dark] .modulo-boton--peligro{color:#1b0d12}
.modulo-boton--cuidado{background:transparent;color:var(--danger)}
.modulo-boton--cuidado:hover{background:var(--danger-bg);border-color:var(--danger)}
.modulo-boton[disabled],.modulo-cerrar[disabled]{opacity:.45;cursor:not-allowed}
.modulo :focus-visible{outline:3px solid var(--modulo-acento);outline-offset:2px}
.modulo:focus{outline:none}
/* Texto de botón en dos versiones: completo en computadora, corto en teléfono. */
.modulo-texto-corto{display:none}

/* Avisos: nunca se deja una acción sin respuesta visible. */
.modulo-aviso{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:12px;font-size:14px;line-height:1.45;background:var(--soft);color:var(--ink)}
.modulo-aviso svg{margin-top:1px}
.modulo-aviso[hidden]{display:none}
.modulo-aviso--exito{background:#e7f5ec;color:#1d5e3b}
[data-theme=dark] .modulo-aviso--exito{background:#1d3a2b;color:#a6e1bf}
.modulo-aviso--error{background:var(--danger-bg);color:var(--danger)}
.modulo-aviso--cuidado{background:var(--amber-soft);color:var(--amber)}

/* Barra de progreso */
.modulo-progreso{height:6px;border-radius:999px;background:var(--soft);overflow:hidden}
.modulo-progreso span{display:block;height:100%;background:var(--modulo-acento);border-radius:inherit;transition:width .25s}

/* Fichas: portada, cifra destacada, chips, datos y listas. Reutilizables en cualquier ficha. */
.modulo .modulo-portada{position:relative;display:block;width:100%;height:clamp(170px,30vh,250px);padding:0;margin:0 0 18px;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--base);cursor:pointer}
.modulo-portada img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s}
.modulo-portada-vacia{display:none;position:absolute;inset:0;align-content:center;justify-items:center;gap:8px;color:var(--muted-ink);font-size:14px}
.modulo-portada img[hidden]+.modulo-portada-vacia{display:grid}
.modulo .modulo-portada-vacia svg{width:30px;height:30px;color:var(--modulo-acento)}
.modulo-destacado{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-bottom:18px}
.modulo .modulo-cifra{font-size:26px;font-weight:700;letter-spacing:-.01em;line-height:1.2;color:var(--ink)}
.modulo-cifra span{font-size:15px;font-weight:600;color:var(--muted-ink)}
.modulo-chips{display:flex;flex-wrap:wrap;gap:6px}
.modulo-chip{display:inline-flex;align-items:center;padding:5px 11px;border-radius:999px;font-size:13px;font-weight:600;background:var(--soft);color:var(--ink)}
.modulo-chip--acento{background:var(--modulo-acento-suave);color:var(--modulo-acento)}
.modulo-chip--aviso{background:var(--amber-soft);color:var(--amber)}
.modulo-datos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0 0 22px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--border)}
.modulo-datos div{padding:12px 14px;background:var(--surface);min-width:0}
.modulo-datos dt{font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--muted-ink);margin:0 0 3px}
.modulo-datos dd{margin:0;font-size:15px;color:var(--ink);overflow-wrap:anywhere}
.modulo-sin-dato{color:var(--muted-ink);font-style:italic}
/* Con un número impar de datos, el último ocupa todo el ancho y no deja un hueco gris. */
.modulo-datos div:last-child:nth-child(odd){grid-column:1/-1}
/* Los avisos generales (toast) deben verse por encima de un módulo abierto, también en la hoja inferior del teléfono. */
html.modulo-abierto #toast{z-index:70}
.modulo-seccion{margin:0 0 20px}
.modulo .modulo-seccion-titulo{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:650;margin:0 0 10px}
.modulo-seccion-titulo span{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 7px;border-radius:999px;background:var(--soft);font-size:12px;color:var(--muted-ink)}
.modulo-lista{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:14px;overflow:hidden}
.modulo-lista li+li{border-top:1px solid var(--border)}
.modulo .modulo-fila{display:flex;align-items:center;gap:12px;width:100%;min-height:62px;padding:10px 14px;border:0;border-radius:0;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer}
.modulo-fila>svg{color:var(--muted-ink)}
.modulo-avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--modulo-acento-suave);color:var(--modulo-acento);font-size:13px;font-weight:700;flex:none}
.modulo-fila-texto{display:grid;gap:2px;flex:1;min-width:0}
.modulo-fila-texto strong{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modulo-fila-texto span{font-size:13px;color:var(--muted-ink)}
.modulo-nota--bloque{align-items:flex-start}

/* Accesos rápidos: acciones frecuentes de una ficha como botones con icono y texto. */
.modulo-accesos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px}
.modulo .modulo-acceso{display:grid;justify-items:center;align-content:center;gap:6px;min-height:76px;padding:10px 6px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer}
.modulo-acceso span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--modulo-acento-suave);color:var(--modulo-acento)}
.modulo-acceso span svg{width:18px;height:18px}
.modulo-acceso--inactivo{opacity:.55}

/* Tarjeta de resumen: lo más importante de un vistazo (por ejemplo, el próximo seguimiento). */
.modulo-resumen{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:0 0 18px;border-radius:14px;background:var(--modulo-acento-suave)}
.modulo-resumen>svg{width:22px;height:22px;color:var(--modulo-acento)}
.modulo-resumen div{display:grid;gap:2px;min-width:0}
.modulo-resumen small{font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--modulo-acento)}
.modulo-resumen strong{font-size:15px;font-weight:650;overflow-wrap:anywhere}
.modulo-resumen span{font-size:13px;color:var(--muted-ink)}
.modulo-resumen--vacio{background:var(--base)}
.modulo-resumen--vacio>svg,.modulo-resumen--vacio small{color:var(--muted-ink)}
/* Lo vencido va en ámbar, como en Hoy (diseño aprobado): se distingue de la sección. */
.modulo-resumen--vencido{background:var(--amber-soft)}
.modulo-resumen--vencido>svg,.modulo-resumen--vencido small{color:var(--amber)}

/* Texto libre del usuario (observaciones, notas). */
.modulo-texto{padding:12px 14px;border-radius:14px;background:var(--base);font-size:14px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}

/* Historial en línea de tiempo */
.modulo-historial{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.modulo-evento{position:relative;padding:12px 14px 12px 36px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.modulo-evento::before{content:"";position:absolute;left:15px;top:18px;width:9px;height:9px;border-radius:50%;background:var(--modulo-acento)}
.modulo-evento-meta{font-size:12px;font-weight:600;color:var(--muted-ink)}
.modulo .modulo-evento h4{font-size:15px;font-weight:650;margin:3px 0 2px}
.modulo .modulo-evento p{font-size:14px;line-height:1.5;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}
.modulo-evento p strong{font-weight:600}

/* Formularios: grupos con título, campos a dos columnas en computadora y una en teléfono. */
.modulo-formulario{display:grid;gap:22px}
.modulo .modulo-grupo{margin:0;padding:0;border:0;min-width:0}
.modulo .modulo-grupo legend{padding:0;margin:0 0 12px;font-size:15px;font-weight:650;color:var(--ink)}
.modulo-campos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.modulo .modulo-campo{display:grid;gap:6px;min-width:0;margin:0;font-weight:400}
.modulo-campo--ancho{grid-column:1/-1}
.modulo-etiqueta{font-size:13px;font-weight:600;color:var(--ink)}
.modulo-etiqueta em{font-style:normal;color:var(--danger)}
.modulo-ayuda{font-size:12px;color:var(--muted-ink)}
/* 16 px en los campos: el iPhone no acerca la pantalla al escribir. */
.modulo input:not([type=radio]):not([type=checkbox]):not([type=file]),.modulo select,.modulo textarea{box-sizing:border-box;width:100%;min-height:46px;margin:0;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:var(--field);color:var(--ink);font:inherit;font-size:16px;-webkit-appearance:none;appearance:none}
.modulo select{padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%2353657c%27 stroke-width=%272%27 stroke-linecap=%27round%27%3E%3Cpath d=%27m6 9 6 6 6-6%27/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px}
.modulo input:focus,.modulo select:focus,.modulo textarea:focus{outline:none;border-color:var(--modulo-acento);box-shadow:0 0 0 3px var(--modulo-acento-suave)}
.modulo-campo--error input{border-color:var(--danger)}
.modulo-entrada-grupo{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:12px;background:var(--field);overflow:hidden}
.modulo .modulo-entrada-grupo input{flex:1;min-width:0;border:0;border-radius:0;box-shadow:none}
.modulo-entrada-grupo:focus-within{border-color:var(--modulo-acento);box-shadow:0 0 0 3px var(--modulo-acento-suave)}
.modulo-prefijo,.modulo-sufijo{display:grid;place-items:center;padding:0 12px;background:var(--base);color:var(--muted-ink);font-weight:600;white-space:nowrap}
.modulo-sufijo[hidden]{display:none}
.modulo-segmento{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;border:1px solid var(--border);border-radius:12px;background:var(--base)}
.modulo .modulo-segmento label{position:relative;display:block;margin:0}
.modulo-segmento input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.modulo-segmento span{display:grid;place-items:center;min-height:40px;border-radius:9px;font-weight:600;color:var(--muted-ink)}
.modulo-segmento input:checked+span{background:var(--surface);color:var(--modulo-acento);box-shadow:0 1px 4px rgba(15,27,46,.14)}
.modulo-segmento input:focus-visible+span{outline:3px solid var(--modulo-acento);outline-offset:1px}

/* Acciones delicadas al final de la ficha, separadas del resto. */
.modulo-cuidado{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding-top:16px;border-top:1px solid var(--border)}
.modulo-cuidado .modulo-nota{flex:1 1 220px}

/* Resaltados al pasar el ratón solo donde hay ratón: en pantallas táctiles se quedaban marcados. */
@media (hover:hover){
 .modulo-portada:hover img{transform:scale(1.02)}
 .modulo .modulo-fila:hover,.modulo .modulo-acceso:hover{background:var(--base)}
}

/* Estado vacío */
.modulo-vacio{display:grid;justify-items:center;gap:6px;padding:28px 16px;text-align:center;color:var(--muted-ink);font-size:14px}
.modulo-vacio strong{color:var(--ink);font-size:15px}
.modulo-seccion .modulo-vacio{padding:20px 16px;border:1px dashed var(--border);border-radius:14px}

@keyframes modulo-fundido{from{opacity:0}to{opacity:1}}
@keyframes modulo-entrada{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}

/* Teléfono: hoja inferior */
@media (max-width:640px){
 .modulo-capa{padding:0;place-items:end stretch}
 .modulo{width:100%;max-height:calc(100dvh - 12px);border-radius:20px 20px 0 0;border-bottom:0;animation-name:modulo-hoja}
 .modulo::before{content:"";position:absolute;top:7px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:999px;background:var(--border)}
 .modulo-cabecera{padding:22px 16px 14px}
 .modulo-titulo{font-size:18px}
 .modulo-cuerpo{padding:16px}
 .modulo-pie{padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom))}
 .modulo-pie .modulo-nota{display:none}
 .modulo-pie .modulo-boton{flex:1;padding:10px 12px}
 .modulo-texto-largo{display:none}
 .modulo-texto-corto{display:inline}
 .modulo .modulo-portada{height:auto;aspect-ratio:16/10}
 .modulo .modulo-cifra{font-size:22px}
 .modulo-accesos{gap:8px}
 .modulo-campos{grid-template-columns:1fr}
 .modulo-cuidado{display:grid;grid-template-columns:1fr}
 .modulo-cuidado .modulo-boton{width:100%}
 .modulo .modulo-acceso{min-height:70px;font-size:12px}
}
@media (max-width:380px){.modulo-datos{grid-template-columns:1fr}}
@keyframes modulo-hoja{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.modulo,.modulo-capa{animation:none}}
/* Entrega 21: inmuebles ofrecidos o vinculados a un contacto */
.modulo-chip--descartado{background:var(--base);color:var(--muted-ink)}
.modulo .modulo-opcion .modulo-fila{align-items:flex-start}
.modulo-opcion .modulo-fila>.modulo-chip{flex-shrink:0;margin-top:2px}
.modulo-fila-texto .modulo-opcion-nota{color:var(--ink);white-space:normal;overflow-wrap:anywhere}
.modulo-opcion--descartada .modulo-fila-texto strong{color:var(--muted-ink)}
.modulo .modulo-opcion-mas{width:100%;margin-top:12px}
.modulo-formulario textarea{min-height:92px;resize:vertical}
@media (max-width:640px){.modulo .modulo-opcion .modulo-fila{flex-wrap:wrap}.modulo-opcion .modulo-fila>.modulo-chip{margin-left:52px}}

/* Entrega22: nombre completo de opciones; estado en fila propia en móvil. */
.modulo-opcion .modulo-fila-texto strong{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
@media(max-width:600px){
 .modulo-opcion .modulo-fila{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}
 .modulo-opcion .modulo-fila>.modulo-chip{grid-column:2;justify-self:start;max-width:100%;white-space:normal}
}
