/*
Theme Name: Casamedida
Theme URI: https://nueva.casamedida.com
Description: Tema a medida para Alfa Rivas Casamedida — inmobiliaria en Rivas Vaciamadrid. Incluye buscador, fichas de inmuebles sincronizadas con Inmovilla y automatizaciones con IA.
Author: Alfa Rivas Casamedida
Version: 1.1.1
Text Domain: casamedida
*/

:root {
	--azul: #006CB7;
	--azul-oscuro: #004a80;
	--naranja: #E26A27;
	--rojo: #E31C23;
	--texto: #232a31;
	--gris: #5c6770;
	--fondo: #f6f8fa;
	--borde: #e3e8ec;
	--radio: 12px;
	--sombra: 0 4px 18px rgba(20, 40, 70, .08);
}

* { box-sizing: border-box; }

body {
	margin: 0;
	font-family: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
	color: var(--texto);
	background: #fff;
	line-height: 1.6;
}

a { color: var(--azul); text-decoration: none; }
a:hover { text-decoration: underline; }

img { max-width: 100%; height: auto; }

.container { max-width: 1180px; margin: 0 auto; padding: 0 20px; }

/* ===== Cabecera ===== */
.site-header {
	background: #fff;
	border-bottom: 1px solid var(--borde);
	position: sticky;
	top: 0;
	z-index: 900;
}
.site-header .container { display: flex; align-items: center; gap: 24px; min-height: 78px; flex-wrap: wrap; }
.site-branding img { max-height: 64px; width: auto; }
.main-nav { margin-left: auto; }
.main-nav ul { display: flex; gap: 26px; list-style: none; margin: 0; padding: 0; }
.main-nav a { color: var(--texto); font-weight: 600; font-size: 15.5px; padding: 8px 0; border-bottom: 2px solid transparent; }
.main-nav a:hover { color: var(--azul); text-decoration: none; border-bottom-color: var(--naranja); }
.header-cta { background: var(--naranja); color: #fff; padding: 10px 18px; border-radius: 8px; font-weight: 700; font-size: 15px; }
.header-cta:hover { background: #c95a1d; text-decoration: none; }

/* ===== Hero ===== */
.hero {
	background:
		linear-gradient(rgba(0, 40, 80, .55), rgba(0, 40, 80, .65)),
		url('assets/hero.jpg') center/cover no-repeat;
	color: #fff;
	padding: 84px 0 64px;
}
.hero h1 { font-size: clamp(28px, 4.6vw, 46px); margin: 0 0 10px; line-height: 1.15; }
.hero p { font-size: 19px; margin: 0 0 28px; opacity: .92; max-width: 620px; }
.hero .btn { background: var(--naranja); }
.hero .btn:hover { background: #c95a1d; }

.btn {
	display: inline-block;
	background: var(--azul);
	color: #fff;
	padding: 13px 26px;
	border-radius: 9px;
	font-weight: 700;
	font-size: 16px;
	border: 0;
	cursor: pointer;
}
.btn:hover { background: var(--azul-oscuro); text-decoration: none; }

/* ===== Buscador ===== */
.cminv-search { background: #fff; border-radius: var(--radio); padding: 22px; box-shadow: var(--sombra); }
.cminv-search-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; align-items: end; }
.cminv-field label { display: block; font-size: 13px; font-weight: 700; color: var(--gris); margin-bottom: 5px; text-transform: uppercase; letter-spacing: .04em; }
.cminv-field input, .cminv-field select, .cminv-field textarea {
	width: 100%;
	padding: 11px 12px;
	border: 1px solid #cdd6dd;
	border-radius: 8px;
	font-size: 15px;
	font-family: inherit;
	background: #fff;
}
.cminv-field-btn .btn { width: 100%; }

/* ===== Grid de inmuebles ===== */
.section-title { font-size: 30px; margin: 0 0 6px; }
.section-sub { color: var(--gris); margin: 0 0 26px; }
.cminv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 22px; }
.cminv-card {
	background: #fff;
	border: 1px solid var(--borde);
	border-radius: var(--radio);
	overflow: hidden;
	transition: box-shadow .2s, transform .2s;
}
.cminv-card:hover { box-shadow: var(--sombra); transform: translateY(-3px); }
.cminv-card-link { display: block; color: inherit; }
.cminv-card-link:hover { text-decoration: none; }
.cminv-card-media {
	height: 190px;
	background-size: cover;
	background-position: center;
	background-color: #dde4e9;
}
.cminv-card-body { padding: 16px 18px 18px; }
.cminv-card-body h3 { font-size: 17px; margin: 8px 0 2px; line-height: 1.3; }
.cminv-tag {
	display: inline-block;
	background: var(--azul);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	padding: 3px 10px;
	border-radius: 999px;
	text-transform: uppercase;
	letter-spacing: .05em;
}
.cminv-card-loc { color: var(--gris); font-size: 14px; margin: 0 0 10px; }
.cminv-card-features { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 10px; padding: 0; color: var(--gris); font-size: 13.5px; }
.cminv-card-price { color: var(--naranja); font-size: 20px; font-weight: 800; margin: 0; }
.cminv-empty { grid-column: 1/-1; color: var(--gris); }

.cminv-pagination { margin-top: 30px; text-align: center; }
.cminv-pagination .page-numbers {
	display: inline-block;
	padding: 8px 14px;
	margin: 0 3px;
	border: 1px solid var(--borde);
	border-radius: 8px;
	color: var(--texto);
}
.cminv-pagination .page-numbers.current { background: var(--azul); color: #fff; border-color: var(--azul); }

/* ===== Ficha de inmueble ===== */
.inmueble-hero { display: grid; grid-template-columns: 2fr 1fr; gap: 26px; margin: 34px 0; }
.inmueble-galeria img { width: 100%; border-radius: var(--radio); }
.inmueble-galeria-mini { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; }
.inmueble-galeria-mini img { width: 92px; height: 68px; object-fit: cover; border-radius: 8px; cursor: pointer; border: 2px solid transparent; }
.inmueble-galeria-mini img:hover { border-color: var(--azul); }
.inmueble-datos {
	background: var(--fondo);
	border-radius: var(--radio);
	padding: 24px;
	align-self: start;
}
.inmueble-datos .cminv-card-price { font-size: 26px; }
.inmueble-features { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 0; margin: 14px 0; color: var(--gris); }
.inmueble-descripcion { margin: 26px 0; }
.etiqueta-energia { display: inline-block; padding: 4px 12px; border-radius: 6px; color: #fff; font-weight: 800; }

/* ===== Formularios ===== */
.cminv-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; background: var(--fondo); padding: 26px; border-radius: var(--radio); }
.cminv-form .cminv-field-full { grid-column: 1 / -1; }
.cminv-check { display: flex; gap: 8px; align-items: flex-start; font-size: 14px; color: var(--gris); }
.aviso-ok { background: #e2f3e7; color: #17572c; padding: 14px 18px; border-radius: 10px; font-weight: 600; }

/* ===== Secciones home ===== */
.home-section { padding: 64px 0; }
.home-section.alt { background: var(--fondo); }
.cards-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 22px; }
.card {
	background: #fff;
	border: 1px solid var(--borde);
	border-radius: var(--radio);
	padding: 28px;
}
.card h3 { margin-top: 0; }
.card .icono { font-size: 34px; }
.cta-band { background: var(--azul); color: #fff; padding: 54px 0; }
.cta-band h2 { margin: 0 0 8px; font-size: 28px; }
.cta-band p { margin: 0 0 20px; opacity: .9; }
.cta-band .btn { background: #fff; color: var(--azul); }
.cta-band .btn:hover { background: #eef4f9; }

/* ===== Pie ===== */
.site-footer { background: #10222f; color: #c7d3db; padding: 46px 0 26px; font-size: 14.5px; }
.site-footer a { color: #fff; }
.footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 28px; }
.footer-grid h3 { color: #fff; font-size: 16px; margin-top: 0; }
.site-footer .legal { margin-top: 30px; border-top: 1px solid #24404f; padding-top: 18px; display: flex; justify-content: space-between; gap: 14px; flex-wrap: wrap; }

/* ===== Utilidades ===== */
.page-content-wrap { padding: 44px 0 64px; }
.entry-title { font-size: 32px; margin-top: 0; }
.site-main article { max-width: 820px; }

@media (max-width: 860px) {
	body.single-inmueble.cm-contact-visible .cminv-launcher:not(.active) { display: none; }
	.inmueble-hero { grid-template-columns: 1fr; }
	.main-nav ul { flex-wrap: wrap; gap: 14px; }
}

/* Fichas completas: componentes aislados del resto de la web. */
.cm-property {
	--cm-sm: .875rem; --cm-base: 1rem; --cm-heading: clamp(1.25rem, 1rem + .5vw, 1.5rem);
	--cm-title: clamp(1.5rem, 1.1rem + 1.2vw, 2rem);
	--cm-s1: .25rem; --cm-s2: .5rem; --cm-s3: .75rem; --cm-s4: 1rem; --cm-s6: 1.5rem; --cm-s8: 2rem; --cm-s12: 3rem;
	font-size: var(--cm-base);
}
.cm-property button, .cm-property input, .cm-property textarea { font: inherit; }
.cm-property button { cursor: pointer; }
.cm-property :focus-visible { outline: 3px solid var(--azul); outline-offset: 3px; }
.cm-property .container { min-width: 0; }
.cm-breadcrumb { display: flex; flex-wrap: wrap; gap: var(--cm-s2); padding-top: var(--cm-s6); color: var(--gris); font-size: var(--cm-sm); }
.cm-property-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cm-s6); padding-block: var(--cm-s6); }
.cm-property-heading h1 { font-size: var(--cm-title); line-height: 1.25; margin: var(--cm-s3) 0; max-width: 850px; overflow-wrap: anywhere; }
.cm-property-heading p { margin: 0; color: var(--gris); }
.cm-property-heading .cm-mobile-price { display: none; }
.cm-reference { display: inline-block; margin-left: var(--cm-s3); font-size: var(--cm-sm); }
.cm-property-actions { display: flex; gap: var(--cm-s2); flex-shrink: 0; }
.cm-property-actions button, .cm-media-links a, .cm-map button { border: 1px solid var(--borde); background: #fff; color: var(--azul-oscuro); padding: var(--cm-s2) var(--cm-s3); border-radius: 8px; font-size: var(--cm-sm); font-weight: 600; }
.cm-property-actions button:hover, .cm-media-links a:hover { background: var(--fondo); }
.cm-property-top { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(280px, 1fr); gap: var(--cm-s6); align-items: start; }
.cm-photo-panel { min-width: 0; }
.cm-photo-main { display: block; width: 100%; position: relative; padding: 0; border: 0; background: var(--fondo); border-radius: var(--radio); overflow: hidden; }
.cm-photo-main > img { display: block; width: 100%; height: auto; aspect-ratio: 16/10; object-fit: cover; }
.cm-photo-main > span { position: absolute; right: var(--cm-s4); bottom: var(--cm-s4); background: #fff; color: var(--texto); padding: var(--cm-s2) var(--cm-s3); border-radius: 8px; font-weight: 700; font-size: var(--cm-sm); box-shadow: var(--sombra); }
.cm-photo-thumbs { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: var(--cm-s2); margin-top: var(--cm-s2); }
.cm-photo-thumbs button { min-width: 0; border: 0; padding: 0; border-radius: 8px; background: var(--fondo); overflow: hidden; }
.cm-photo-thumbs img { display: block; width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; transition: opacity .18s; }
.cm-photo-thumbs button:hover img { opacity: .75; }
.cm-media-links { display: flex; flex-wrap: wrap; gap: var(--cm-s2); margin-top: var(--cm-s4); }
.cm-photo-unavailable { padding: var(--cm-s12); background: var(--fondo); border-radius: var(--radio); }
.cm-summary { background: var(--fondo); border: 1px solid var(--borde); border-radius: var(--radio); padding: var(--cm-s6); }
.cm-eyebrow { font-size: .75rem; text-transform: uppercase; letter-spacing: .11em; font-weight: 700; color: var(--gris); margin: 0 0 var(--cm-s2); }
.cm-price { font-size: clamp(1.75rem, 1.3rem + 1vw, 2.25rem); font-weight: 800; color: var(--azul-oscuro); line-height: 1.2; margin: 0 0 var(--cm-s6); }
.cm-key-stats { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cm-s4); margin-bottom: var(--cm-s6); }
.cm-key-stats strong { display: block; font-size: var(--cm-heading); line-height: 1.3; }
.cm-key-stats span { font-size: var(--cm-sm); color: var(--gris); }
.cm-condition { font-size: var(--cm-sm); border-top: 1px solid var(--borde); padding-top: var(--cm-s4); }
.cm-wide { display: block; width: 100%; text-align: center; font-size: var(--cm-sm); padding-inline: var(--cm-s3); }
.cm-call { display: block; text-align: center; margin-top: var(--cm-s4); font-weight: 600; }
.cm-fine { color: var(--gris); font-size: .8125rem; line-height: 1.6; }
.cm-section-nav { display: flex; flex-wrap: wrap; gap: var(--cm-s2) var(--cm-s6); border-block: 1px solid var(--borde); padding-block: var(--cm-s4); margin-top: var(--cm-s8); }
.cm-section-nav a { color: var(--texto); font-size: var(--cm-sm); font-weight: 600; padding-block: var(--cm-s1); }
.cm-section-nav a:hover { color: var(--azul); }
.cm-property-body { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(280px, 1fr); gap: var(--cm-s8); }
.cm-property-details { min-width: 0; }
.cm-section { padding-block: var(--cm-s8); border-bottom: 1px solid var(--borde); scroll-margin-top: 110px; }
.cm-section h2 { font-size: var(--cm-heading); margin: 0 0 var(--cm-s6); line-height: 1.3; }
.cm-section h3 { font-size: var(--cm-base); margin-top: var(--cm-s6); }
.cm-description { line-height: 1.85; overflow-wrap: anywhere; }
.cm-description p { margin: 0 0 var(--cm-s4); }
.cm-specs { margin: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 var(--cm-s6); }
.cm-specs > div { padding-block: var(--cm-s3); border-bottom: 1px solid var(--borde); min-width: 0; }
.cm-specs dt { font-size: var(--cm-sm); color: var(--gris); margin-bottom: var(--cm-s1); }
.cm-specs dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.cm-extras { padding: 0; margin: 0; list-style: none; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--cm-s3) var(--cm-s4); }
.cm-extras li { font-size: var(--cm-sm); display: flex; gap: var(--cm-s2); align-items: baseline; }
.cm-extras li::before { content: "✓"; color: var(--azul); font-weight: 800; }
.cm-energy { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cm-s6); }
.cm-energy h3 { margin-top: 0; }
.cm-energy-grade { display: inline-block; font-size: var(--cm-heading); background: #5b626b; color: #fff; padding: var(--cm-s2) var(--cm-s6); border-radius: 4px; }
.cm-energy-grade[data-grade="A"] { background: #126c3b; }.cm-energy-grade[data-grade="B"] { background: #44782d; }.cm-energy-grade[data-grade="C"] { background: #6d741b; }.cm-energy-grade[data-grade="D"] { background: #847111; }.cm-energy-grade[data-grade="E"] { background: #a35d08; }.cm-energy-grade[data-grade="F"] { background: #b34314; }.cm-energy-grade[data-grade="G"] { background: #b12828; }
.cm-energy-pending { background: var(--fondo); border-left: 3px solid var(--azul); padding: var(--cm-s4); }
.cm-map { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--cm-s3); background: var(--fondo); border: 1px solid var(--borde); border-radius: var(--radio); min-height: 280px; margin-bottom: var(--cm-s4); overflow: hidden; text-align: center; }
.cm-map p { margin: 0; }.cm-map small { font-size: .75rem; color: var(--gris); }
.cm-map iframe { display: block; border: 0; width: 100%; height: 320px; }
.cm-mortgage { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cm-s4); background: var(--fondo); padding: var(--cm-s6); border-radius: var(--radio); }
.cm-mortgage label { display: block; font-size: var(--cm-sm); margin-bottom: var(--cm-s2); }
.cm-mortgage input { width: 100%; min-width: 0; border: 1px solid var(--borde); border-radius: 6px; background: #fff; color: var(--texto); padding: var(--cm-s3); }
.cm-mortgage button { align-self: end; }
.cm-mortgage-result { grid-column: 1/-1; display: grid; gap: var(--cm-s2); padding-top: var(--cm-s4); border-top: 1px solid var(--borde); }
.cm-mortgage-result strong { font-size: var(--cm-title); color: var(--azul-oscuro); }.cm-mortgage-result small { color: var(--gris); }
.cm-property-form { grid-template-columns: 1fr 1fr; padding: var(--cm-s6); }
.cm-property-form label { text-transform: none; letter-spacing: normal; font-size: var(--cm-sm); }
.cm-property-form textarea { resize: vertical; }
.cm-property-form .cminv-check { display: flex; font-weight: 400; }
.cm-property-form .cminv-check input { width: auto; margin-top: var(--cm-s1); flex: 0 0 auto; }
.cm-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.cm-contact-aside { padding-top: var(--cm-s8); }
.cm-contact-aside > div { position: sticky; top: 110px; border: 1px solid var(--borde); border-radius: var(--radio); padding: var(--cm-s6); }
.cm-contact-aside h2 { font-size: var(--cm-heading); margin-top: 0; line-height: 1.3; }
.cm-related { border: 0; padding-bottom: var(--cm-s12); }
.cm-related-img { display: block; width: 100%; height: 190px; object-fit: cover; }
.cm-lightbox { position: fixed; border: 0; border-radius: var(--radio); background: #101820; color: #fff; width: min(1200px,96vw); max-width: 96vw; max-height: 94dvh; padding: var(--cm-s4); }
.cm-lightbox::backdrop { background: rgba(0,0,0,.85); }
.cm-lightbox-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--cm-s3); }
.cm-lightbox button { background: #fff; border: 0; border-radius: 6px; padding: var(--cm-s2) var(--cm-s4); color: #101820; }
.cm-lightbox-stage { display: grid; grid-template-columns: 44px minmax(0,1fr) 44px; gap: var(--cm-s2); align-items: center; }
.cm-lightbox-stage > img { width: 100%; height: min(72dvh,780px); object-fit: contain; }
.cm-lightbox-stage > button { font-size: 1.5rem; padding-inline: 0; min-height: 44px; }
.cm-lightbox > p { text-align: center; font-size: var(--cm-sm); margin-bottom: 0; }
.cm-share-status:not([hidden]) { position: fixed; bottom: var(--cm-s6); left: var(--cm-s6); z-index: 1100; background: #10222f; color: #fff; border-radius: 8px; padding: var(--cm-s4); max-width: min(90vw,500px); overflow-wrap: anywhere; }
@media (max-width: 860px) {
	body.single-inmueble .site-header .container { display: grid; grid-template-columns: 60px 1fr; gap: 12px; padding-block: 8px; min-height: 72px; }
	body.single-inmueble .site-branding img { max-height: 48px; }
	body.single-inmueble .main-nav { margin-left: 0; }
	body.single-inmueble .main-nav ul { justify-content: flex-end; gap: 6px 12px; }
	body.single-inmueble .main-nav a { font-size: 14px; padding-block: 4px; }
	body.single-inmueble .header-cta { display: none; }
	.cm-property-top,.cm-property-body { grid-template-columns: 1fr; }
	.cm-contact-aside { display: none; }
	.cm-property-heading { flex-direction: column; gap: var(--cm-s4); }
	.cm-summary { padding: var(--cm-s6); }
	.cm-section-nav { gap: var(--cm-s2) var(--cm-s4); }
	.cm-key-stats { grid-template-columns: repeat(4,minmax(0,1fr)); gap: var(--cm-s3); }
	.cm-property-heading .cm-mobile-price { display: block; font-size: var(--cm-title); color: var(--azul-oscuro); font-weight: 800; margin-top: var(--cm-s3); }
}
@media (max-width: 480px) {
	.cm-key-stats { grid-template-columns: 1fr 1fr; }
	.cm-mortgage,.cm-property-form { grid-template-columns: 1fr; padding: var(--cm-s4); }
	.cm-extras,.cm-energy { grid-template-columns: 1fr; }
	.cm-photo-thumbs { grid-template-columns: repeat(3,minmax(0,1fr)); }
	.cm-photo-thumbs button:nth-child(n+4) { display: none; }
	.cm-lightbox { padding: var(--cm-s2); }
	.cm-lightbox-stage { grid-template-columns: 36px minmax(0,1fr) 36px; gap: var(--cm-s1); }
}
@media print {
	.site-header,.site-footer,#wpadminbar,.cm-property-actions,.cm-contact-aside,.cm-section-nav,.cm-media-links,.cm-photo-thumbs,#contactar,#hipoteca,.cm-related,.cm-lightbox,.cm-share-status,.cminv-launcher,[class*="cminv-chat"] { display:none !important; }
	.cm-property-top,.cm-property-body { display: block; }
	.cm-summary { margin-top: 20px; }.cm-map { display:none; }.cm-section { break-inside: avoid; }
}
