.tpfjs-filter-widget,
.tpfjs-filter-widget *,
.tpfjs-filter-widget *:before,
.tpfjs-filter-widget *:after{
	box-sizing:border-box;
}

.tpfjs-filter-widget{
	position:relative;
	width:100%;
	max-width:100%;
}

.tpfjs-filter{
	width:100%;
	max-width:100%;
}

.tpfjs-terms-track{
	display:flex;
	gap:8px;
	min-width:0;
	flex-direction:column;
	align-items:flex-start;
	overflow:visible;
	white-space:normal;
}

.tpfjs-terms-track::-webkit-scrollbar{
	display:none;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	flex-direction:row!important;
	align-items:center!important;
	overflow-x:auto!important;
	overflow-y:hidden!important;
	white-space:nowrap!important;
	scroll-behavior:smooth;
	-webkit-overflow-scrolling:touch;
	scrollbar-width:none;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-terms-track{
	-webkit-mask-image:linear-gradient(to right,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%);
	mask-image:linear-gradient(to right,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%);
}

.tpfjs-filter-widget.tpfjs-current-vertical .tpfjs-terms-track{
	flex-direction:column!important;
	align-items:flex-start!important;
	overflow:visible!important;
	white-space:normal!important;
	-webkit-mask-image:none!important;
	mask-image:none!important;
}

.tpfjs-term-link{
	display:inline-flex;
	align-items:baseline;
	gap:4px;
	text-decoration:none!important;
	color:inherit;
	line-height:1.35;
	transition:color .2s ease, opacity .18s ease;
}

.tpfjs-term-link.is-active{
	font-weight:600;
}

.tpfjs-term-label,
.tpfjs-term-count{
	display:inline-block;
	transition:color .2s ease;
}

.tpfjs-term-count{
	white-space:nowrap;
	font-size:.88em;
}

.tpfjs-term-link .tpfjs-term-label + .tpfjs-term-count,
.tpfjs-term-link .tpfjs-term-count + .tpfjs-term-label{
	margin-left:2px;
}

.tpfjs-term-link:has(.tpfjs-term-label + .tpfjs-term-count:last-child){
	flex-wrap:wrap;
}

.tpfjs-term-link .tpfjs-term-label + .tpfjs-term-count:last-child{
	flex:0 0 auto;
}

.tpfjs-empty{
	width:100%;
	padding:18px;
	border:1px solid rgba(44,62,80,.12);
	border-radius:12px;
	color:#5f6b76;
}

.tpfjs-nav-arrow{
	position:absolute;
	z-index:20;
	top:50%;
	transform:translateY(-50%);
	width:34px;
	height:34px;
	border:0!important;
	border-radius:0!important;
	background:transparent!important;
	color:#111827;
	display:none;
	align-items:center;
	justify-content:center;
	cursor:pointer;
	padding:0;
	box-shadow:none!important;
}

.tpfjs-nav-arrow-prev{
	left:-38px;
}

.tpfjs-nav-arrow-next{
	right:-38px;
}

.tpfjs-nav-arrow[disabled]{
	opacity:.25;
	pointer-events:none;
}

.tpfjs-nav-arrow svg{
	width:26px;
	height:26px;
	fill:none;
	stroke:currentColor;
	stroke-width:2.25;
	stroke-linecap:round;
	stroke-linejoin:round;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-nav-arrow{
	display:flex!important;
}

.tpfjs-filter-widget.tpfjs-current-vertical .tpfjs-nav-arrow{
	display:none!important;
}

.tpfjs-term-link.is-loading{
	pointer-events:none;
	opacity:.6;
}

.elementor-widget-loop-grid,
.elementor-widget-posts,
.elementor-widget-archive-posts,
.elementor-loop-container,
.elementor-posts-container,
.elementor-posts{
	position:relative;
}

.tpfjs-ajax-loading{
	position:relative!important;
	min-height:80px;
	opacity:.45;
	pointer-events:none;
	transition:opacity .18s ease;
}

.tpfjs-loader{
	position:absolute!important;
	top:50%!important;
	left:50%!important;
	right:auto!important;
	z-index:9999!important;
	width:42px!important;
	height:42px!important;
	display:none;
	align-items:center;
	justify-content:center;
	border-radius:999px;
	background:rgba(255,255,255,.9);
	box-shadow:0 10px 28px rgba(0,0,0,.12);
	pointer-events:none;
	transform:translate(-50%,-50%);
}

.tpfjs-ajax-loading > .tpfjs-loader{
	display:flex!important;
}

.tpfjs-loader-spinner{
	width:20px!important;
	height:20px!important;
	border:2px solid rgba(31,41,51,.18)!important;
	border-top-color:rgba(31,41,51,.78)!important;
	border-radius:999px!important;
	animation:tpfjs-loader-spin .7s linear infinite!important;
}

@keyframes tpfjs-loader-spin{
	to{
		transform:rotate(360deg);
	}
}

.tpfjs-is-loading{
	cursor:progress;
}

@media (max-width:767px){
	.tpfjs-nav-arrow-prev{
		left:-30px;
	}

	.tpfjs-nav-arrow-next{
		right:-30px;
	}

	.tpfjs-nav-arrow{
		width:28px;
		height:28px;
	}

	.tpfjs-nav-arrow svg{
		width:22px;
		height:22px;
	}
}

/* v1.0.11: sin reglas legacy por dispositivo. Elementor genera el responsive real y JS aplica el estado final. */


/* v1.0.12: flechas visibles dentro del área del filtro horizontal.
   Antes estaban fuera con left/right negativos y podían quedar ocultas por contenedores de Elementor. */
.tpfjs-filter-widget.tpfjs-current-horizontal{
	position:relative;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-filter{
	position:relative;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-terms-track{
	padding-left:38px;
	padding-right:38px;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	top:50%!important;
	display:none;
	width:32px!important;
	height:32px!important;
	border-radius:999px!important;
	background:rgba(255,255,255,.86)!important;
	box-shadow:0 4px 14px rgba(0,0,0,.10)!important;
	color:#1f2933;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-nav-arrow{
	display:flex!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:0!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:0!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
	width:22px!important;
	height:22px!important;
}

@media (max-width:767px){
	.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-terms-track{
		padding-left:32px;
		padding-right:32px;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
		width:28px!important;
		height:28px!important;
	}
}


/* v1.0.13: corrige detección/visibilidad de flechas en carrusel horizontal. */
.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-filter{
	position:relative;
	width:100%;
	max-width:100%;
	min-width:0;
	overflow:visible;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	width:100%!important;
	max-width:100%!important;
	min-width:0!important;
	flex-wrap:nowrap!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-term-link{
	flex:0 0 auto!important;
	white-space:nowrap!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow{
	padding-left:0;
	padding-right:0;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-terms-track{
	padding-left:42px!important;
	padding-right:42px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-nav-arrow{
	display:flex!important;
	visibility:visible!important;
	opacity:1;
}

.tpfjs-filter-widget.tpfjs-current-horizontal.tpfjs-has-overflow .tpfjs-nav-arrow[disabled]{
	opacity:.28;
	display:flex!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:4px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:4px!important;
}


/* v1.0.14: las flechas se muestran siempre en modo horizontal.
   Ya no dependen de tpfjs-has-overflow, porque en algunos contenedores Elementor
   calcula el overflow de forma irregular aunque visualmente exista scroll. */
.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	padding-left:42px!important;
	padding-right:42px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	display:flex!important;
	visibility:visible!important;
	opacity:1;
	z-index:99999!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow[disabled]{
	display:flex!important;
	visibility:visible!important;
	opacity:.28;
	pointer-events:none;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:4px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:4px!important;
}


/* v1.0.15: flechas minimalistas tipo pestañas de viaje, oscuras y siempre por encima. */
.tpfjs-filter-widget.tpfjs-current-horizontal{
	position:relative!important;
	overflow:visible!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	display:flex!important;
	visibility:visible!important;
	opacity:1!important;
	position:absolute!important;
	top:50%!important;
	transform:translateY(-50%)!important;
	z-index:999999!important;
	width:34px!important;
	height:34px!important;
	border:0!important;
	border-radius:0!important;
	background:transparent!important;
	box-shadow:none!important;
	color:#111827!important;
	padding:0!important;
	cursor:pointer!important;
	align-items:center!important;
	justify-content:center!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:-38px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:-38px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow[disabled]{
	display:flex!important;
	visibility:visible!important;
	opacity:.25!important;
	pointer-events:none!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
	width:26px!important;
	height:26px!important;
	display:block!important;
	overflow:visible!important;
	fill:none!important;
	stroke:#111827!important;
	stroke-width:2.75!important;
	stroke-linecap:round!important;
	stroke-linejoin:round!important;
}

/* Cuando el contenedor padre recorta overflow, usamos posición interior como fallback visual. */
@media (max-width:1200px){
	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
		left:0!important;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
		right:0!important;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
		padding-left:38px!important;
		padding-right:38px!important;
	}
}


/* v1.0.16: fallback visual para flechas en breakpoints ampliados de Elementor Pro.
   Si el JS tarda en recalcular en el editor, las flechas se muestran por CSS en las clases
   responsive que Elementor ya ha impreso en el HTML. */
@media (max-width:1875px){
	.tpfjs-filter-widget.tpfjs-filter-laptop-horizontal .tpfjs-nav-arrow{
		display:flex!important;
		visibility:visible!important;
		opacity:1!important;
		z-index:999999!important;
		color:#111827!important;
	}
	.tpfjs-filter-widget.tpfjs-filter-laptop-horizontal .tpfjs-terms-track{
		padding-left:38px!important;
		padding-right:38px!important;
	}
}

@media (max-width:1685px){
	.tpfjs-filter-widget.tpfjs-filter-tablet_extra-horizontal .tpfjs-nav-arrow,
	.tpfjs-filter-widget.tpfjs-filter-tablet-extra-horizontal .tpfjs-nav-arrow{
		display:flex!important;
		visibility:visible!important;
		opacity:1!important;
		z-index:999999!important;
		color:#111827!important;
	}
	.tpfjs-filter-widget.tpfjs-filter-tablet_extra-horizontal .tpfjs-terms-track,
	.tpfjs-filter-widget.tpfjs-filter-tablet-extra-horizontal .tpfjs-terms-track{
		padding-left:38px!important;
		padding-right:38px!important;
	}
}

@media (max-width:1024px){
	.tpfjs-filter-widget.tpfjs-filter-tablet-horizontal .tpfjs-nav-arrow{
		display:flex!important;
		visibility:visible!important;
		opacity:1!important;
		z-index:999999!important;
		color:#111827!important;
	}
	.tpfjs-filter-widget.tpfjs-filter-tablet-horizontal .tpfjs-terms-track{
		padding-left:38px!important;
		padding-right:38px!important;
	}
}

@media (max-width:767px){
	.tpfjs-filter-widget.tpfjs-filter-mobile-horizontal .tpfjs-nav-arrow{
		display:flex!important;
		visibility:visible!important;
		opacity:1!important;
		z-index:999999!important;
		color:#111827!important;
	}
	.tpfjs-filter-widget.tpfjs-filter-mobile-horizontal .tpfjs-terms-track{
		padding-left:32px!important;
		padding-right:32px!important;
	}
}


/* v1.0.17: JS reconstruido sin errores de sintaxis; AJAX de filtro y paginación restaurado. */


/* v1.0.18: más separación para flechas del carrusel, sin montar sobre el texto. */
.tpfjs-filter-widget.tpfjs-current-horizontal{
	--tpfjs-arrow-gutter: 54px;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	padding-left:var(--tpfjs-arrow-gutter)!important;
	padding-right:var(--tpfjs-arrow-gutter)!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	width:34px!important;
	height:34px!important;
	background:rgba(255,255,255,.92)!important;
	border-radius:999px!important;
	box-shadow:0 4px 14px rgba(0,0,0,.08)!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:8px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:8px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
	stroke:#111827!important;
	stroke-width:2.8!important;
}

@media (max-width:767px){
	.tpfjs-filter-widget.tpfjs-current-horizontal{
		--tpfjs-arrow-gutter: 44px;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
		width:30px!important;
		height:30px!important;
	}
}


/* v1.0.19: restauradas flechas minimalistas sin círculo, sin fondo y sin sombra. */
.tpfjs-filter-widget.tpfjs-current-horizontal{
	--tpfjs-arrow-gutter: 44px;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	padding-left:var(--tpfjs-arrow-gutter)!important;
	padding-right:var(--tpfjs-arrow-gutter)!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	width:34px!important;
	height:34px!important;
	border:0!important;
	border-radius:0!important;
	background:transparent!important;
	box-shadow:none!important;
	color:#111827!important;
	padding:0!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	left:4px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	right:4px!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
	width:26px!important;
	height:26px!important;
	stroke:#111827!important;
	stroke-width:2.75!important;
	fill:none!important;
	stroke-linecap:round!important;
	stroke-linejoin:round!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow[disabled]{
	opacity:.25!important;
	background:transparent!important;
	box-shadow:none!important;
}

@media (max-width:767px){
	.tpfjs-filter-widget.tpfjs-current-horizontal{
		--tpfjs-arrow-gutter: 38px;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
		width:30px!important;
		height:30px!important;
	}

	.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
		width:23px!important;
		height:23px!important;
	}
}


/* v1.0.20: flechas fuera de la caja de etiquetas usando columnas propias, sin montarse sobre el texto. */
.tpfjs-filter-widget.tpfjs-current-horizontal{
	display:grid!important;
	grid-template-columns:30px minmax(0,1fr) 30px!important;
	column-gap:14px!important;
	align-items:center!important;
	overflow:visible!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-filter{
	grid-column:2!important;
	min-width:0!important;
	width:100%!important;
	overflow:hidden!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-terms-track{
	padding-left:0!important;
	padding-right:0!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow{
	position:static!important;
	transform:none!important;
	display:flex!important;
	visibility:visible!important;
	width:30px!important;
	height:30px!important;
	border:0!important;
	border-radius:0!important;
	background:transparent!important;
	box-shadow:none!important;
	color:#111827!important;
	padding:0!important;
	z-index:2!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-prev{
	grid-column:1!important;
	justify-self:start!important;
	left:auto!important;
	right:auto!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow-next{
	grid-column:3!important;
	justify-self:end!important;
	left:auto!important;
	right:auto!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow svg{
	width:26px!important;
	height:26px!important;
	stroke:#111827!important;
	stroke-width:2.75!important;
	fill:none!important;
	stroke-linecap:round!important;
	stroke-linejoin:round!important;
}

.tpfjs-filter-widget.tpfjs-current-horizontal .tpfjs-nav-arrow[disabled]{
	display:flex!important;
	visibility:visible!important;
	opacity:.25!important;
	background:transparent!important;
	box-shadow:none!important;
	pointer-events:none!important;
}

.tpfjs-filter-widget.tpfjs-current-vertical{
	display:block!important;
}

.tpfjs-filter-widget.tpfjs-current-vertical .tpfjs-nav-arrow{
	display:none!important;
}


/* v1.0.23: la paginación AJAX conserva la categoría/etiqueta activa del filtro. */


/* v1.0.24: la paginación conserva e-page-*; el hook PHP ya no fuerza paged=1. */


/* v1.0.26: rollback seguro de AJAX a la base estable v1.0.24.
   Refuerzo CSS mínimo para loop items, sin tocar la sustitución AJAX ni forzar recarga. */
.elementor-widget-loop-grid .e-loop-item{
	min-width:0;
}

.elementor-widget-loop-grid .e-loop-item .elementor-widget-theme-post-title,
.elementor-widget-loop-grid .e-loop-item .elementor-widget-post-info,
.elementor-widget-loop-grid .e-loop-item .elementor-widget-button{
	position:relative;
	z-index:1;
}


/* v1.0.34:
   Corrector fuerte para tarjetas de Loop Grid con imagen panorámica/outlier.
   El JS añade estas clases únicamente al item afectado. */
.elementor-widget-loop-grid .e-loop-item.tpfjs-hard-card-fixed{
	overflow:visible!important;
}

.elementor-widget-loop-grid .e-loop-item .tpfjs-hard-image-host{
	width:100%!important;
	flex:0 0 auto!important;
}

.elementor-widget-loop-grid .e-loop-item .tpfjs-hard-content-widget{
	width:100%!important;
	flex:0 0 auto!important;
}

/* v1.0.43: corrección global del estirado interno de Elementor Loop Grid.
   Generaliza la regla validada manualmente, sin acotarla a un widget concreto. */
.elementor-widget-loop-grid .e-loop-item > .e-con{
	height:0%!important;
}
