/* =============================================================================
   TERRITORIO INMUEBLES · identidad sobre Houzez
   Paleta, tipografía, componentes y movimiento. La búsqueda por mapa está en
   territorio-mapa.css.
   ========================================================================== */

:root {
	--t-azul: #0B2D5B;
	--t-azul-2: #1B4E8F;
	--t-azul-3: #2C6BB8;
	--t-aqua: #14B8A6;
	--t-aqua-2: #0E8F86;
	--t-menta: #7EE2D1;
	--t-menta-2: #D7F6F0;
	--t-coral: #FF7B7B;
	--t-coral-2: #FFE3E3;
	--t-arena: #F7F4ED;
	--t-arena-2: #EFEADF;
	--t-tinta: #0F1E33;
	--t-gris: #5B6B82;
	--t-gris-2: #8C99AC;
	--t-linea: rgba(11, 45, 91, .10);

	--t-fuente: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--t-fuente-titulo: "Montserrat", "Plus Jakarta Sans", system-ui, sans-serif;

	--t-radio: 20px;
	--t-radio-s: 14px;
	--t-sombra-1: 0 1px 2px rgba(11, 45, 91, .06), 0 4px 14px rgba(11, 45, 91, .06);
	--t-sombra-2: 0 2px 6px rgba(11, 45, 91, .08), 0 18px 40px -12px rgba(11, 45, 91, .22);
	--t-sombra-3: 0 30px 60px -20px rgba(11, 45, 91, .35);

	--t-rapido: 180ms;
	--t-base: 320ms;
	--t-lento: 640ms;
	--t-curva: cubic-bezier(.22, 1, .36, 1);
	--t-rebote: cubic-bezier(.34, 1.56, .64, 1);
}

/* Colores y tipografías globales de Elementor = la marca. */
body.territorio {
	--e-global-color-primary: #0B2D5B;
	--e-global-color-secondary: #1B4E8F;
	--e-global-color-text: #5B6B82;
	--e-global-color-accent: #14B8A6;
	--e-global-typography-primary-font-family: "Montserrat";
	--e-global-typography-primary-font-weight: 800;
	--e-global-typography-secondary-font-family: "Montserrat";
	--e-global-typography-text-font-family: "Plus Jakarta Sans";
	--e-global-typography-accent-font-family: "Plus Jakarta Sans";
}

/* Transiciones suaves entre páginas (Chrome/Edge; los demás navegan normal). */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: t-vt-salida .28s var(--t-curva) both; }
::view-transition-new(root) { animation: t-vt-entrada .42s var(--t-curva) both; }
@keyframes t-vt-salida { to { opacity: 0; transform: translateY(-8px); } }
@keyframes t-vt-entrada { from { opacity: 0; transform: translateY(12px); } }

/* -----------------------------------------------------------------------------
   Base y tipografía
   -------------------------------------------------------------------------- */
body.territorio {
	font-family: var(--t-fuente);
	color: var(--t-tinta);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.territorio h1, .territorio h2, .territorio h3, .territorio h4, .territorio h5, .territorio h6,
.territorio .page-title, .territorio .item-title, .territorio .item-title a,
.territorio .block-title-wrap h2, .territorio .property-title-wrap h1 {
	font-family: var(--t-fuente-titulo);
	color: var(--t-azul);
	letter-spacing: -.01em;
}
.territorio h1 { font-weight: 800; letter-spacing: -.02em; }
/* En español no se capitaliza cada palabra (el demo lo hacía en inglés). */
.territorio .elementor-heading-title,
.territorio .elementor-icon-box-title:not(:has(a[href*="property-type"])) { text-transform: none !important; }
.territorio h2, .territorio h3 { font-weight: 800; }
.territorio a { transition: color var(--t-rapido) ease; }
.territorio ::selection { background: var(--t-menta); color: var(--t-azul); }
.territorio :focus-visible { outline: 3px solid var(--t-aqua); outline-offset: 2px; }

/* -----------------------------------------------------------------------------
   Botones
   -------------------------------------------------------------------------- */
.territorio .btn {
	font-family: var(--t-fuente);
	font-weight: 700;
	border-radius: var(--t-radio-s);
	transition: transform var(--t-base) var(--t-rebote), box-shadow var(--t-base) var(--t-curva), background-color var(--t-rapido) ease, color var(--t-rapido) ease, border-color var(--t-rapido) ease;
}
.territorio .btn:active { transform: scale(.97); }
.territorio .btn-primary,
.territorio .btn-secondary,
.territorio .wpcf7-submit {
	position: relative;
	overflow: hidden;
	background: var(--t-azul) !important;
	border-color: var(--t-azul) !important;
	color: #fff !important;
}
.territorio .btn-search,
.territorio .houzez-search-button {
	position: relative;
	overflow: hidden;
	background: linear-gradient(135deg, var(--t-aqua) 0%, var(--t-aqua-2) 100%) !important;
	border-color: transparent !important;
	color: #fff !important;
}
.territorio .btn-primary:hover,
.territorio .btn-search:hover,
.territorio .btn-secondary:hover,
.territorio .houzez-search-button:hover,
.territorio .wpcf7-submit:hover {
	transform: translateY(-2px);
	box-shadow: 0 12px 24px -10px rgba(20, 184, 166, .65);
}
/* Brillo que cruza el botón al pasar el mouse. */
.territorio .btn-primary::after,
.territorio .btn-search::after,
.territorio .houzez-search-button::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .35) 50%, transparent 70%);
	transform: translateX(-120%);
	pointer-events: none;
}
.territorio .btn-primary:hover::after,
.territorio .btn-search:hover::after,
.territorio .houzez-search-button:hover::after { transform: translateX(120%); transition: transform .8s var(--t-curva); }
.territorio .btn-primary-outlined,
.territorio .btn-grey-outlined {
	border: 1.5px solid var(--t-linea) !important;
	color: var(--t-azul) !important;
	background: #fff !important;
}
.territorio .btn-primary-outlined:hover,
.territorio .btn-grey-outlined:hover { border-color: var(--t-aqua) !important; color: var(--t-aqua-2) !important; }

/* -----------------------------------------------------------------------------
   Encabezado
   -------------------------------------------------------------------------- */
.territorio .t-logo img { height: 40px; width: auto; display: block; transition: transform var(--t-base) var(--t-rebote); }
.territorio .logo-mobile.t-logo img { height: 32px; }
.territorio .t-logo a:hover img { transform: scale(1.03); }
.territorio .header-main-wrap,
.territorio .header-mobile {
	background: rgba(255, 255, 255, .88) !important;
	-webkit-backdrop-filter: saturate(1.6) blur(14px);
	backdrop-filter: saturate(1.6) blur(14px);
	border-bottom: 1px solid var(--t-linea);
	transition: box-shadow var(--t-base) var(--t-curva);
}
.territorio.t-scroll .header-main-wrap,
.territorio.t-scroll .header-mobile { box-shadow: 0 10px 30px -18px rgba(11, 45, 91, .35); }
.territorio .navbar-nav > li > a {
	font-family: var(--t-fuente);
	font-weight: 600;
	color: var(--t-azul) !important;
	position: relative;
}
.territorio .navbar-nav > li > a::after,
.territorio .houzez-elementor-menu > li > a::after {
	content: "";
	position: absolute;
	left: 50%;
	right: 50%;
	bottom: 6px;
	height: 3px;
	border-radius: 3px;
	background: var(--t-aqua);
	transition: left var(--t-base) var(--t-curva), right var(--t-base) var(--t-curva);
}
.territorio .navbar-nav > li > a:hover::after,
.territorio .navbar-nav > li.current-menu-item > a::after { left: 14px; right: 14px; }
.territorio .dropdown-menu {
	border: 1px solid var(--t-linea);
	border-radius: var(--t-radio-s);
	box-shadow: var(--t-sombra-2);
	padding: 8px;
}
.territorio .dropdown-menu.show { animation: t-asomar .24s var(--t-curva); }
.territorio .dropdown-menu .dropdown-item { border-radius: 8px; }
.territorio .dropdown-menu .dropdown-item:hover,
.territorio .dropdown-menu .dropdown-item.active,
.territorio .dropdown-menu .selected > .dropdown-item { background: var(--t-menta-2); color: var(--t-azul); }
@keyframes t-asomar { from { opacity: 0; transform: translateY(6px) scale(.98); } }

/* Páginas de Elementor del demo: aire a los lados y nada que se salga del ancho. */
.territorio .main-wrap { overflow-x: clip; }
.territorio .elementor > .e-con-boxed > .e-con-inner { padding-left: clamp(16px, 4vw, 56px); padding-right: clamp(16px, 4vw, 56px); }

/* Logo dentro de Elementor (inc/elementor.php): oscuro arriba, blanco en el pie. */
.territorio .t-logo-elementor .t-logo-claro { display: none; }
.territorio .elementor-location-footer .t-logo-elementor .t-logo-claro,
.territorio .footer-wrap .t-logo-elementor .t-logo-claro { display: block; }
.territorio .elementor-location-footer .t-logo-elementor .t-logo-oscuro,
.territorio .footer-wrap .t-logo-elementor .t-logo-oscuro { display: none; }
.territorio .t-logo-elementor img { height: 42px; width: auto; max-width: none; }
.territorio .t-logo-pie img { height: 46px; }

/* Encabezado transparente sobre la foto de portada: logo blanco y menú en blanco. */
.territorio.transparent-yes #header-hz-elementor .t-logo-oscuro { display: none; }
.territorio.transparent-yes #header-hz-elementor .t-logo-claro { display: block; }
.territorio.transparent-yes #header-hz-elementor .houzez-elementor-menu > li > a { color: #fff !important; text-shadow: 0 1px 12px rgba(11, 45, 91, .35); }
.territorio.transparent-yes #header-hz-elementor .houzez-elementor-menu > li > a::after { background: var(--t-menta); }

/* -----------------------------------------------------------------------------
   Formularios y búsqueda
   -------------------------------------------------------------------------- */
.territorio .form-control,
.territorio .bootstrap-select > .dropdown-toggle {
	border-radius: var(--t-radio-s) !important;
	border: 1.5px solid var(--t-linea) !important;
	background-color: #fff !important;
	color: var(--t-tinta);
	font-family: var(--t-fuente);
	transition: border-color var(--t-rapido) ease, box-shadow var(--t-base) var(--t-curva);
}
.territorio .form-control:focus,
.territorio .bootstrap-select.show > .dropdown-toggle {
	border-color: var(--t-aqua) !important;
	box-shadow: 0 0 0 4px rgba(20, 184, 166, .16) !important;
}
.territorio .search-banner-wrap .advanced-search,
.territorio .houzez-ele-search-form-wrapper {
	border-radius: var(--t-radio);
	background: rgba(255, 255, 255, .9);
	-webkit-backdrop-filter: saturate(1.5) blur(14px);
	backdrop-filter: saturate(1.5) blur(14px);
	box-shadow: var(--t-sombra-3);
	padding: 14px 16px 16px;
}
.territorio .houzez-ele-search-form-wrapper .elementor-field-label { color: var(--t-azul) !important; font-weight: 700; letter-spacing: .06em; }

/* -----------------------------------------------------------------------------
   Tarjetas de propiedad
   -------------------------------------------------------------------------- */
.territorio .item-listing-wrap .item-wrap {
	background: #fff;
	border: 1px solid var(--t-linea) !important;
	border-radius: var(--t-radio) !important;
	box-shadow: var(--t-sombra-1);
	transition: transform var(--t-lento) var(--t-curva), box-shadow var(--t-lento) var(--t-curva), border-color var(--t-base) ease;
}
.territorio .item-listing-wrap:hover .item-wrap,
.territorio .item-listing-wrap.t-activa .item-wrap {
	transform: translateY(-4px);
	box-shadow: var(--t-sombra-2);
	border-color: rgba(20, 184, 166, .5) !important;
}
.territorio .listing-image-wrap,
.territorio .listing-thumb { border-radius: calc(var(--t-radio) - 6px); overflow: hidden; }
.territorio .listing-thumb img { transition: transform 1.1s var(--t-curva); }
.territorio .item-listing-wrap:hover .listing-thumb img { transform: scale(1.06); }
.territorio .item-title,
.territorio .item-title a { font-weight: 700; color: var(--t-azul) !important; text-transform: none !important; }
.territorio .item-title a:hover { color: var(--t-aqua-2) !important; }
.territorio .item-price,
.territorio .item-price .price {
	font-family: var(--t-fuente-titulo);
	font-weight: 800 !important;
	color: var(--t-azul) !important;
	letter-spacing: -.01em;
}
.territorio .item-price .price-postfix { color: var(--t-gris); font-weight: 500; font-family: var(--t-fuente); }
.territorio .item-address { color: var(--t-gris); }
.territorio .item-address .icon-pin { color: var(--t-aqua); }
.territorio .item-amenities i { color: var(--t-aqua-2); }
.territorio .h-type span { color: var(--t-aqua-2); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: 11px; }

/* Etiquetas */
.territorio .label,
.territorio .label-featured {
	font-family: var(--t-fuente);
	font-weight: 700;
	border-radius: 999px !important;
	padding: 5px 10px 4px !important;
	letter-spacing: .04em;
	box-shadow: 0 4px 12px -6px rgba(11, 45, 91, .5);
}
.territorio .label-status { background: var(--t-azul) !important; color: #fff !important; }
.territorio .label-featured { background: var(--t-coral) !important; color: #fff !important; }

/* Favorito, comparar, vista rápida */
.territorio .item-tool > span,
.territorio .item-tool > a {
	border-radius: 999px !important;
	background: rgba(255, 255, 255, .92) !important;
	color: var(--t-azul) !important;
	transition: transform var(--t-base) var(--t-rebote), color var(--t-rapido) ease;
}
.territorio .item-tool > span:hover,
.territorio .item-tool > a:hover { transform: scale(1.12); color: var(--t-aqua-2) !important; }
.territorio .item-favorite .text-danger { color: var(--t-coral) !important; }
.territorio .t-latido { animation: t-latido .6s var(--t-rebote); }
@keyframes t-latido { 0% { transform: scale(1); } 30% { transform: scale(1.45); } 60% { transform: scale(.9); } 100% { transform: scale(1); } }

/* Sello 360° en la foto de las tarjetas (territorio-motion.js) */
.territorio .t-sello-360 {
	position: absolute;
	z-index: 3;
	left: 12px;
	bottom: 12px;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 6px 10px 6px 8px;
	border-radius: 999px;
	background: rgba(11, 45, 91, .78);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	color: #fff;
	font: 800 11px/1 var(--t-fuente);
	letter-spacing: .04em;
	box-shadow: 0 6px 16px -8px rgba(11, 45, 91, .8);
	pointer-events: none;
}
.territorio .t-sello-360 svg { width: 15px; height: 15px; color: var(--t-menta); animation: t-girar-360 6s linear infinite; }
@keyframes t-girar-360 { to { transform: rotateY(360deg); } }

/* -----------------------------------------------------------------------------
   Recorrido virtual 360° de la ficha (property-details/virtual-tour.php)
   -------------------------------------------------------------------------- */
.t-recorrido .block-title-wrap { gap: 12px; }
.t-recorrido__origen {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--t-menta-2);
	color: var(--t-aqua-2);
	font: 800 12px/1 var(--t-fuente);
	letter-spacing: .04em;
	white-space: nowrap;
}
.t-recorrido__origen::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--t-aqua); }
.t-recorrido__origen--matterport { background: #EEF1F6; color: var(--t-azul); }
.t-recorrido__origen--matterport::before { background: var(--t-azul-2); }
.t-recorrido__marco {
	position: relative;
	aspect-ratio: 16 / 10;
	border-radius: var(--t-radio);
	overflow: hidden;
	background: var(--t-azul);
	box-shadow: var(--t-sombra-2);
}
.t-recorrido__marco:fullscreen { border-radius: 0; aspect-ratio: auto; }
.t-recorrido__marco iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	opacity: 0;
	transition: opacity .6s var(--t-curva);
}
.t-recorrido__marco.t-listo iframe { opacity: 1; }
.t-recorrido__portada {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	background-size: cover;
	background-position: center;
	cursor: pointer;
	transition: opacity .5s var(--t-curva), transform .9s var(--t-curva);
	animation: t-paneo 18s ease-in-out infinite alternate;
}
@keyframes t-paneo { from { background-position: 35% 50%; } to { background-position: 65% 50%; } }
.t-recorrido__marco.t-listo .t-recorrido__portada { opacity: 0; transform: scale(1.06); pointer-events: none; }
.t-recorrido__velo { position: absolute; inset: 0; background: radial-gradient(60% 60% at 50% 50%, rgba(11, 45, 91, .25), rgba(11, 45, 91, .7)); }
.t-recorrido__orbita {
	position: absolute;
	width: min(420px, 80%);
	overflow: visible;
}
.t-recorrido__orbita ellipse { fill: none; stroke: rgba(255, 255, 255, .5); stroke-width: 1.5; stroke-dasharray: 3 7; }
.t-recorrido__orbita .t-sat { fill: var(--t-menta); filter: drop-shadow(0 0 6px var(--t-aqua)); offset-path: path("M110 0 A110 42 0 1 1 -110 0 A110 42 0 1 1 110 0"); animation: t-sp-orbita 4s linear infinite; }
.t-recorrido__entrar {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 10px 22px 10px 10px;
	border: 0;
	border-radius: 999px;
	background: #fff;
	color: var(--t-azul);
	font: 800 16px/1 var(--t-fuente);
	box-shadow: 0 20px 40px -14px rgba(0, 0, 0, .55);
	transition: transform var(--t-base) var(--t-rebote);
}
.t-recorrido__entrar:hover { transform: scale(1.05); }
.t-recorrido__360 {
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--t-aqua), var(--t-aqua-2));
	color: #fff;
	font: 800 13px/1 var(--t-fuente-titulo);
	animation: t-latir-punto 1.8s ease-out infinite;
}
.t-recorrido__ayuda { position: relative; margin: 0; color: rgba(255, 255, 255, .88); font-size: 14px; text-shadow: 0 1px 8px rgba(0, 0, 0, .4); }
.t-recorrido__completa {
	position: absolute;
	z-index: 3;
	right: 14px;
	top: 14px;
	width: 42px;
	height: 42px;
	display: grid;
	place-items: center;
	border: 0;
	border-radius: 14px;
	background: rgba(255, 255, 255, .9);
	color: var(--t-azul);
	box-shadow: 0 8px 22px -10px rgba(0, 0, 0, .5);
}
.t-recorrido__completa svg { width: 20px; height: 20px; }

/* -----------------------------------------------------------------------------
   Asesores e inmobiliarias (tarjetas y reseñas)
   -------------------------------------------------------------------------- */
.territorio .agent-grid-wrap {
	background: #fff;
	border: 1px solid var(--t-linea) !important;
	border-radius: var(--t-radio);
	overflow: hidden;
	box-shadow: var(--t-sombra-1);
	transition: transform var(--t-lento) var(--t-curva), box-shadow var(--t-lento) var(--t-curva), border-color var(--t-base) ease;
}
.territorio .agent-grid-wrap:hover { transform: translateY(-6px); box-shadow: var(--t-sombra-2); border-color: rgba(20, 184, 166, .45) !important; }
.territorio .agent-grid-image-wrap { position: relative; width: 100%; background: linear-gradient(180deg, var(--t-arena) 0%, #fff 100%); }
.territorio .agent-grid-image img { border-radius: 50%; box-shadow: 0 0 0 4px #fff, 0 0 0 6px rgba(20, 184, 166, .35), 0 16px 30px -14px rgba(11, 45, 91, .5); transition: transform .6s var(--t-rebote); }
.territorio .agent-grid-wrap:hover .agent-grid-image img { transform: scale(1.05); }
.territorio .agent-grid-content-wrap { border-top: 1px solid var(--t-linea) !important; }
.territorio .agent-list-position { color: var(--t-aqua-2) !important; font-weight: 700; letter-spacing: .1em; font-size: 11px; }
.territorio .agent-grid-wrap .btn { border-radius: 999px !important; }
.territorio .agent-grid-wrap:hover .btn { background: var(--t-azul) !important; border-color: var(--t-azul) !important; color: #fff !important; }
.territorio .agent-verified-badge { background: var(--t-aqua) !important; border-radius: 999px; }
/* Estrellas de reseñas en Aqua */
.territorio .rating-score-wrap .icon-rating,
.territorio .rating-score-wrap .full-star,
.territorio .houzez-icon.icon-rating-star-full,
.territorio .star-rating .full-star,
.territorio .review-stars .full-star { color: #F5B544 !important; }
.territorio .review-block,
.territorio .review-wrap { border-radius: var(--t-radio); }

/* -----------------------------------------------------------------------------
   Selector de idioma (inc/elementor.php)
   -------------------------------------------------------------------------- */
.t-idioma { position: relative; display: flex; align-items: center; margin-left: 6px; }
.t-idioma__boton {
	display: inline-flex !important;
	align-items: center;
	gap: 7px;
	height: 36px;
	padding: 0 10px 0 8px !important;
	border: 1px solid var(--t-linea) !important;
	border-radius: 999px;
	background: rgba(255, 255, 255, .7);
	color: var(--t-azul) !important;
	font: 700 12px/1 var(--t-fuente) !important;
	letter-spacing: .06em;
	cursor: pointer;
	transition: background-color var(--t-rapido) ease, box-shadow var(--t-base) ease;
}
.t-idioma__boton::after { display: none !important; }
.t-idioma__boton:hover { background: #fff; box-shadow: var(--t-sombra-1); }
.territorio.transparent-yes #header-hz-elementor .t-idioma__boton { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .35) !important; color: #fff !important; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.t-bandera { width: 21px; height: 14px; border-radius: 3px; box-shadow: 0 0 0 1px rgba(11, 45, 91, .12); flex: none; }
.t-idioma__flecha { width: 14px; height: 14px; transition: transform var(--t-base) var(--t-curva); }
.t-idioma.t-abierto .t-idioma__flecha { transform: rotate(180deg); }
.t-idioma__menu {
	position: absolute;
	z-index: 1000;
	top: calc(100% + 10px);
	right: 0;
	min-width: 220px;
	padding: 6px;
	border-radius: 16px;
	background: #fff;
	box-shadow: var(--t-sombra-2), 0 0 0 1px var(--t-linea);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px) scale(.98);
	transform-origin: 90% 0;
	transition: opacity .2s ease, transform .3s var(--t-curva), visibility 0s .3s;
}
.t-idioma.t-abierto .t-idioma__menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.t-idioma__op { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 11px; color: var(--t-azul); font: 600 14px/1.2 var(--t-fuente); }
.t-idioma__op.t-activo { background: var(--t-menta-2); }
.t-idioma__ok { width: 18px; height: 18px; margin-left: auto; color: var(--t-aqua-2); }
.t-idioma__op.t-pronto { color: var(--t-gris-2); padding-left: 43px; }
.t-idioma__op small { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--t-aqua-2); background: var(--t-menta-2); padding: 3px 7px; border-radius: 999px; }

/* -----------------------------------------------------------------------------
   Íconos de la guía (assets/iconos) en cajas de Elementor
   -------------------------------------------------------------------------- */
.territorio .elementor-icon .t-icono { width: 1em; height: 1em; display: block; overflow: visible; }
.territorio .elementor-widget-icon-box .elementor-icon { font-size: 56px; transition: transform .5s var(--t-rebote); }
.territorio .elementor-widget-icon-box:hover .elementor-icon { transform: translateY(-4px) rotate(-4deg); }
.territorio .t-icono > * { transform-box: fill-box; transform-origin: 50% 100%; }
.t-js .t-revelar .t-icono > * { opacity: 0; transform: translateY(6px) scale(.85); transition: opacity .5s ease, transform .7s var(--t-rebote); }
.t-js .t-revelar.t-visto .t-icono > * { opacity: 1; transform: none; }
.t-js .t-revelar.t-visto .t-icono > :nth-child(2) { transition-delay: .08s; }
.t-js .t-revelar.t-visto .t-icono > :nth-child(3) { transition-delay: .16s; }
.t-js .t-revelar.t-visto .t-icono > :nth-child(4) { transition-delay: .24s; }
.t-js .t-revelar.t-visto .t-icono > :nth-child(n+5) { transition-delay: .32s; }

/* -----------------------------------------------------------------------------
   Motion de portada y títulos (territorio-motion.js)
   -------------------------------------------------------------------------- */
/* Titular: cada palabra sube desde una máscara. */
.t-palabras .t-pal { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.t-palabras .t-pal > span { display: inline-block; transform: translateY(105%); transition: transform 1s var(--t-curva); transition-delay: calc(var(--t-w, 0) * 70ms + 150ms); }
.t-palabras.t-visto .t-pal > span { transform: none; }
/* Títulos de sección: una línea Aqua se dibuja debajo. */
.t-subrayado { position: relative; }
.t-subrayado::after {
	content: "";
	display: block;
	width: 56px;
	height: 4px;
	margin-top: 16px;
	border-radius: 4px;
	background: linear-gradient(90deg, var(--t-aqua), var(--t-menta));
	transform-origin: 0 50%;
	transform: scaleX(0);
	transition: transform .9s var(--t-curva) .35s;
}
.elementor-widget-heading[style*="text-align: center"] .t-subrayado::after,
.elementor-align-center .t-subrayado::after { margin-left: auto; margin-right: auto; transform-origin: 50% 50%; }
.t-subrayado.t-visto::after { transform: none; }

/* Capa de mapa viva sobre la foto de portada: ruta que se dibuja y pines que llegan. */
.t-capa-mapa { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.t-capa-mapa svg { position: absolute; right: -2%; top: 8%; width: min(54vw, 760px); height: auto; opacity: .95; }
.t-capa-mapa .t-ruta { fill: none; stroke: rgba(255, 255, 255, .85); stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 2 9; }
.t-capa-mapa .t-ruta-luz { fill: none; stroke: var(--t-menta); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 60 1400; stroke-dashoffset: 0; filter: drop-shadow(0 0 6px rgba(126, 226, 209, .9)); animation: t-ruta-luz 6s linear infinite; }
@keyframes t-ruta-luz { to { stroke-dashoffset: -1460; } }
.t-capa-mapa .t-pin { transform-box: fill-box; transform-origin: 50% 100%; opacity: 0; transform: translateY(-24px) scale(.6); animation: t-pin-llega .9s var(--t-rebote) forwards; }
.t-capa-mapa .t-pin:nth-of-type(2) { animation-delay: .9s; }
.t-capa-mapa .t-pin:nth-of-type(3) { animation-delay: 1.5s; }
.t-capa-mapa .t-pin:nth-of-type(4) { animation-delay: 2.1s; }
@keyframes t-pin-llega { to { opacity: 1; transform: none; } }
.t-capa-mapa .t-pin-cuerpo { fill: var(--t-aqua); stroke: #fff; stroke-width: 2; }
.t-capa-mapa .t-pin-coral .t-pin-cuerpo { fill: var(--t-coral); }
.t-capa-mapa .t-pin-punto { fill: #fff; }
.t-capa-mapa .t-precio rect { fill: rgba(255, 255, 255, .95); }
.t-capa-mapa .t-precio text { font: 800 13px var(--t-fuente-titulo); fill: var(--t-azul); }
.t-capa-mapa .t-latido { transform-box: fill-box; transform-origin: center; animation: t-onda-pin 2.6s ease-out infinite 2.4s; opacity: 0; }
@keyframes t-onda-pin { 0% { transform: scale(.4); opacity: .7; } 100% { transform: scale(2.4); opacity: 0; } }
@media (max-width: 900px) { .t-capa-mapa { display: none; } }

/* Tarjetas con inclinación 3D y reflejo al pasar el mouse (sólo con mouse). */
@media (hover: hover) and (pointer: fine) {
	.territorio .t-inclina { transform-style: preserve-3d; will-change: transform; }
	.territorio .t-inclina .item-wrap { transform: perspective(900px) rotateX(var(--t-rx, 0deg)) rotateY(var(--t-ry, 0deg)) translateY(var(--t-ty, 0)); }
	.territorio .t-inclina .listing-image-wrap::after {
		content: "";
		position: absolute;
		inset: 0;
		z-index: 2;
		pointer-events: none;
		background: radial-gradient(400px circle at var(--t-mx, 50%) var(--t-my, 50%), rgba(255, 255, 255, .22), transparent 45%);
		opacity: 0;
		transition: opacity .3s ease;
	}
	.territorio .t-inclina:hover .listing-image-wrap::after { opacity: 1; }
}

/* Hilo de lectura arriba en páginas largas. */
.t-lectura { position: fixed; z-index: 99999; top: 0; left: 0; right: 0; height: 2px; pointer-events: none; }
.t-lectura i { display: block; height: 100%; background: linear-gradient(90deg, var(--t-aqua), var(--t-menta)); transform-origin: 0 50%; transform: scaleX(var(--t-leido, 0)); }

/* -----------------------------------------------------------------------------
   Paginación, pie y extras
   -------------------------------------------------------------------------- */
.territorio .pagination .page-link {
	border: 0;
	border-radius: 12px !important;
	margin: 0 3px;
	color: var(--t-azul);
	font-weight: 700;
	transition: background-color var(--t-rapido) ease, transform var(--t-base) var(--t-rebote);
}
.territorio .pagination .page-link:hover { background: var(--t-menta-2); transform: translateY(-2px); }
.territorio .pagination .active .page-link { background: var(--t-azul); color: #fff; }

.territorio .footer-wrap,
.territorio .footer-top-wrap,
.territorio .footer-bottom-wrap {
	background: var(--t-azul) !important;
	color: rgba(255, 255, 255, .78) !important;
}
.territorio .footer-top-wrap { background: radial-gradient(120% 140% at 0% 0%, var(--t-azul-2) 0%, var(--t-azul) 55%) !important; }
.territorio .footer-bottom-wrap { border-top: 1px solid rgba(255, 255, 255, .08); }
.territorio .footer-wrap a { color: rgba(255, 255, 255, .86) !important; }
.territorio .footer-wrap a:hover { color: var(--t-menta) !important; }

.territorio .back-to-top-wrap a {
	background: var(--t-aqua) !important;
	border-radius: 999px !important;
	box-shadow: 0 10px 24px -10px rgba(20, 184, 166, .8);
}

/* Barra de progreso al cambiar de página (la dibuja territorio-motion.js). */
.t-progreso {
	position: fixed;
	z-index: 100000;
	top: 0;
	left: 0;
	height: 3px;
	width: 100%;
	background: linear-gradient(90deg, var(--t-aqua), var(--t-menta));
	transform-origin: 0 50%;
	transform: scaleX(0);
	opacity: 0;
	pointer-events: none;
	box-shadow: 0 0 12px rgba(20, 184, 166, .7);
}
.t-progreso.t-on { opacity: 1; transform: scaleX(.82); transition: transform 6s cubic-bezier(.1, .7, .2, 1), opacity .2s; }

/* Aparición al hacer scroll (la activa territorio-motion.js). */
.t-js .t-revelar {
	opacity: 0;
	transform: translateY(26px) scale(.985);
	transition: opacity .8s var(--t-curva), transform .9s var(--t-curva);
	transition-delay: calc(var(--t-i, 0) * 70ms);
}
.t-js .t-revelar.t-visto { opacity: 1; transform: none; }

/* -----------------------------------------------------------------------------
   SPLASH de entrada (inc/splash.php): blanco, el ícono se arma por piezas
   -------------------------------------------------------------------------- */
.t-splash { display: none; }
html.t-con-splash { overflow: hidden; }
html.t-con-splash .t-splash {
	display: grid;
	place-items: center;
	position: fixed;
	inset: 0;
	z-index: 2147483000;
	overflow: hidden;
	background:
		radial-gradient(60% 50% at 50% 42%, #FFFFFF 0%, rgba(255, 255, 255, 0) 70%),
		linear-gradient(180deg, #FFFFFF 0%, var(--t-arena) 100%);
	font-family: var(--t-fuente);
	cursor: pointer;
	transition: transform .9s cubic-bezier(.76, 0, .24, 1), opacity .6s ease .25s;
}
.t-splash__lienzo { display: flex; flex-direction: column; align-items: center; transform: translateY(18px); }

/* 1 · El ícono se arma */
.t-splash__icono {
	position: relative;
	width: 128px;
	height: 128px;
	border-radius: 30px;
	overflow: hidden;
	transform: scale(.82);
	opacity: 0;
	filter: blur(8px);
	box-shadow: 0 2px 4px rgba(11, 45, 91, .08), 0 30px 60px -24px rgba(11, 45, 91, .55);
	transition: transform 1s var(--t-rebote), opacity .5s ease, filter .7s ease, width .9s var(--t-curva), height .9s var(--t-curva), border-radius .9s var(--t-curva);
}
.t-splash__icono svg { display: block; width: 100%; height: 100%; }
.t-splash__icono .t-hoja { transform-box: fill-box; transform-origin: 50% 100%; transform: scale(0) rotate(-18deg); }
.t-splash__icono .t-hoja-der { transform: scale(0) rotate(18deg); }
.t-splash__icono .t-casa { transform-box: fill-box; transform-origin: 50% 100%; transform: translateY(-60%) scale(.7); opacity: 0; }
.t-splash__icono .t-puerta { transform-box: fill-box; transform-origin: 50% 100%; transform: scaleY(0); }
.t-splash__brillo {
	position: absolute;
	inset: -20%;
	background: linear-gradient(115deg, transparent 38%, rgba(255, 255, 255, .55) 50%, transparent 62%);
	transform: translateX(-120%);
	pointer-events: none;
}
.t-splash.t-f1 .t-splash__icono { transform: none; opacity: 1; filter: none; }
.t-splash.t-f1 .t-hoja { transform: none; transition: transform .9s var(--t-rebote) .25s; }
.t-splash.t-f1 .t-hoja-der { transition-delay: .36s; }
.t-splash.t-f1 .t-casa { transform: none; opacity: 1; transition: transform .8s var(--t-rebote) .5s, opacity .3s ease .5s; }
.t-splash.t-f1 .t-puerta { transform: none; transition: transform .45s var(--t-curva) .95s; }
.t-splash.t-f2 .t-splash__brillo { transform: translateX(120%); transition: transform 1.1s var(--t-curva); }

/* 2 · La palabra se descubre y el punto cae */
.t-splash__palabra { width: min(380px, 74vw); margin-top: 30px; }
.t-splash__palabra svg { display: block; width: 100%; height: auto; overflow: visible; }
.t-splash__palabra .t-letra {
	transform-box: fill-box;
	transform-origin: 50% 100%;
	opacity: 0;
	transform: translateY(55%) scaleY(.85);
	filter: blur(3px);
	transition: transform .9s var(--t-curva), opacity .5s ease, filter .6s ease;
	transition-delay: calc(var(--t-l, 1) * 45ms);
}
.t-splash__palabra .t-punto { transform-box: fill-box; transform-origin: 50% 50%; transform: translateY(-120px) scale(.6); opacity: 0; }
.t-splash__palabra .t-pal-inm { opacity: 0; transform: translateX(-14px); transition: opacity .7s ease .55s, transform 1.1s var(--t-curva) .55s; }
.t-splash.t-f2 .t-letra { opacity: 1; transform: none; filter: none; }
.t-splash.t-f2 .t-punto { transform: none; opacity: 1; transition: transform .75s var(--t-rebote) .75s, opacity .2s ease .75s; }
.t-splash.t-f2 .t-pal-inm { opacity: 1; transform: none; }
.t-splash__promesa {
	margin: 22px 0 0;
	color: var(--t-gris);
	font-size: clamp(16px, 2vw, 19px);
	font-weight: 500;
	letter-spacing: .32em;
	text-transform: uppercase;
	opacity: 0;
	transform: translateY(8px);
	transition: opacity .7s ease 1.1s, transform .9s var(--t-curva) 1.1s, letter-spacing 1.4s var(--t-curva) 1.1s;
}
.t-splash.t-f2 .t-splash__promesa { opacity: 1; transform: none; letter-spacing: .18em; }

/* Hilo de carga, fino */
.t-splash__hilo {
	position: absolute;
	left: 50%;
	bottom: 12vh;
	width: 120px;
	height: 2px;
	margin-left: -60px;
	border-radius: 2px;
	background: rgba(11, 45, 91, .08);
	overflow: hidden;
}
.t-splash__hilo::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, var(--t-aqua), var(--t-menta));
	transform-origin: 0 50%;
	transform: scaleX(0);
	transition: transform 2.8s cubic-bezier(.3, .6, .2, 1);
}
.t-splash.t-f1 .t-splash__hilo::after { transform: scaleX(1); }
.t-splash__saltar {
	position: absolute;
	top: 20px;
	right: 20px;
	border: 1px solid var(--t-linea);
	background: rgba(255, 255, 255, .7);
	color: var(--t-gris);
	font: 600 12px var(--t-fuente);
	letter-spacing: .04em;
	padding: 8px 14px;
	border-radius: 999px;
	cursor: pointer;
}

/* 4 · El telón sube */
.t-splash.t-salida { transform: translateY(-100%); pointer-events: none; }
.t-splash.t-salida .t-splash__lienzo { transform: translateY(-40px); opacity: .0; transition: transform .7s var(--t-curva), opacity .4s ease; }

@media (max-width: 600px) {
	.t-splash__icono { width: 104px; height: 104px; border-radius: 24px; }
}

/* Reducir movimiento: sin splash, sin entradas, sin rebotes. */
@media (prefers-reduced-motion: reduce) {
	html.t-con-splash { overflow: auto; }
	html.t-con-splash .t-splash { display: none; }
	.t-js .t-revelar { opacity: 1; transform: none; transition: none; }
	.territorio *, .territorio *::before, .territorio *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
