/* =========================================================
   Vyora - Filtros de Productos v0.1.14
   Mockup fiel: blanco, liviano, bordes finos azul/gris,
   chips suaves, mucho aire. Sólo .vyora-filter-shell.
   ========================================================= */

.vyora-filter-shell{
	--vf-navy:#112f55;
	--vf-text:#294764;
	--vf-muted:#738399;
	--vf-line:#dfe6ee;
	--vf-border:#36577c;
	--vf-border-soft:#cbd6e2;
	--vf-blue:#1e63c6;
	--vf-blue-soft:#f4f8ff;
	--vf-chip:#eef3f9;
	--vf-white:#fff;

	position:relative;
	z-index:30;
	width:100%;
	margin:0 0 42px;
	padding:0;
	border:1px solid var(--vf-line);
	border-radius:16px;
	background:var(--vf-white);
	box-shadow:0 10px 28px rgba(18,47,76,.10);
	color:var(--vf-text);
	overflow:visible;
}

.vyora-filter-shell *,
.vyora-filter-shell *::before,
.vyora-filter-shell *::after{
	box-sizing:border-box;
}

/* ---------------------------------------------------------
   FILA SUPERIOR
   --------------------------------------------------------- */
.vyora-filter-form{
	margin:0;
	padding:0;
}

.vyora-filter-controls{
	padding:0;
}

.vyora-filter-topline{
	display:grid;
	grid-template-columns:auto minmax(0,1fr) auto;
	align-items:center;
	gap:28px;
	padding:22px 26px 18px;
}

.vyora-filter-heading{
	display:flex;
	align-items:center;
	gap:10px;
	min-width:max-content;
	color:var(--vf-navy);
}

.vyora-filter-heading strong{
	font-size:13px;
	line-height:1;
	font-weight:850;
	letter-spacing:.02em;
	white-space:nowrap;
}

.vyora-filter-heading-icon{
	display:grid;
	place-items:center;
	width:22px;
	height:22px;
	color:var(--vf-navy);
	flex:0 0 22px;
}

.vyora-filter-heading-icon svg{
	width:22px;
	height:22px;
	fill:none;
	stroke:currentColor;
	stroke-width:1.65;
	stroke-linecap:round;
	stroke-linejoin:round;
}

.vyora-filter-left{
	display:flex;
	align-items:center;
	flex-wrap:wrap;
	gap:10px 12px;
	min-width:0;
}

.vyora-filter-group{
	position:relative;
	flex:0 0 auto;
	margin:0;
}

/* ---------------------------------------------------------
   BOTONES DE FILTRO — BLANCOS, TAL CUAL MOCKUP
   --------------------------------------------------------- */
.vyora-filter-trigger{
	display:inline-flex!important;
	align-items:center!important;
	justify-content:space-between!important;
	gap:16px!important;
	min-width:124px!important;
	min-height:38px!important;
	margin:0!important;
	padding:0 14px!important;
	border:1px solid var(--vf-border)!important;
	border-radius:8px!important;
	background:#fff!important;
	color:var(--vf-navy)!important;
	box-shadow:0 1px 2px rgba(18,47,76,.04)!important;
	font:inherit!important;
	font-size:12.5px!important;
	line-height:1!important;
	font-weight:650!important;
	text-align:left!important;
	text-transform:none!important;
	cursor:pointer!important;
	transition:
		border-color .15s ease,
		background-color .15s ease,
		box-shadow .15s ease!important;
}

.vyora-filter-trigger:hover,
.vyora-filter-trigger:focus-visible{
	border-color:#203f64!important;
	background:#fbfdff!important;
	box-shadow:0 3px 9px rgba(18,47,76,.08)!important;
	outline:0!important;
}

/* Seleccionado: apenas celeste; no negro, no amarillo */
.vyora-filter-trigger.is-filtered{
	border-color:#8ca8c8!important;
	background:var(--vf-blue-soft)!important;
}

/* Abierto: borde azul, fondo blanco */
.vyora-filter-group.is-open > .vyora-filter-trigger{
	border-color:var(--vf-blue)!important;
	background:#fff!important;
	box-shadow:0 0 0 3px rgba(30,99,198,.09)!important;
}

.vyora-filter-trigger svg{
	width:15px!important;
	height:15px!important;
	flex:0 0 15px!important;
	fill:none!important;
	stroke:currentColor!important;
	stroke-width:1.8!important;
	stroke-linecap:round!important;
	stroke-linejoin:round!important;
	transition:transform .15s ease;
}

.vyora-filter-group.is-open > .vyora-filter-trigger svg{
	transform:rotate(180deg);
}

/* no se usan badges numéricos en el mockup */
.vyora-filter-count{
	display:none!important;
}

/* ---------------------------------------------------------
   META DERECHA: contador + divisor + ordenar
   --------------------------------------------------------- */
.vyora-filter-meta{
	display:flex;
	align-items:center;
	justify-content:flex-end;
	gap:13px;
	min-width:max-content;
}

.vyora-filter-result{
	margin:0;
	padding:0;
	color:var(--vf-muted);
	font-size:12.5px;
	line-height:1;
	font-weight:550;
	white-space:nowrap;
}

.vyora-filter-meta-divider{
	display:block;
	width:1px;
	height:30px;
	background:#e2e8ef;
}

.vyora-filter-sort-label{
	color:#6f8094;
	font-size:12.5px;
	font-weight:550;
	white-space:nowrap;
}

.vyora-filter-group--sort .vyora-filter-trigger{
	min-width:132px!important;
}

/* ---------------------------------------------------------
   DIVISOR + FILA DE CHIPS
   --------------------------------------------------------- */
.vyora-filter-bottomline{
	min-height:58px;
	margin:0 18px;
	padding:14px 8px 16px;
	border-top:1px solid #e6ebf1;
}

.vyora-filter-bottomline:empty{
	display:none;
}

.vyora-filter-chips{
	display:flex;
	align-items:center;
	flex-wrap:wrap;
	gap:9px 10px;
	margin:0;
	padding:0;
}

.vyora-filter-chip{
	display:inline-flex;
	align-items:center;
	gap:8px;
	min-height:30px;
	padding:6px 11px 6px 12px;
	border:0;
	border-radius:999px;
	background:var(--vf-chip);
	color:var(--vf-navy)!important;
	box-shadow:none;
	font-size:11.5px;
	line-height:1;
	font-weight:600;
	text-decoration:none!important;
}

.vyora-filter-chip:hover{
	background:#e5edf6;
	color:#0c2949!important;
}

.vyora-filter-chip svg{
	width:12px;
	height:12px;
	fill:none;
	stroke:currentColor;
	stroke-width:1.7;
	stroke-linecap:round;
}

.vyora-filter-clear{
	display:inline-flex;
	align-items:center;
	min-height:30px;
	padding:5px 8px;
	color:#1262d3!important;
	font-size:11.5px;
	line-height:1;
	font-weight:650;
	text-decoration:none!important;
}

.vyora-filter-clear:hover{
	text-decoration:underline!important;
	text-underline-offset:3px;
}

/* ---------------------------------------------------------
   DROPDOWNS
   --------------------------------------------------------- */
.vyora-filter-panel{
	position:absolute;
	z-index:80;
	top:calc(100% + 8px);
	left:0;
	display:none;
	width:285px;
	max-width:min(360px,calc(100vw - 26px));
	max-height:430px;
	padding:17px;
	border:1px solid #d7e0e9;
	border-radius:11px;
	background:#fff;
	box-shadow:0 16px 38px rgba(18,47,76,.16);
	overflow:auto;
}

.vyora-filter-group.is-open > .vyora-filter-panel{
	display:block;
}

.vyora-filter-panel--price{
	width:310px;
}

.vyora-filter-panel--sort{
	right:0;
	left:auto;
	width:250px;
}

.vyora-filter-panel--variations{
	width:min(620px,calc(100vw - 30px));
}

.vyora-filter-panel-title{
	margin:0 0 12px;
	color:var(--vf-navy);
	font-size:14px;
	line-height:1.2;
	font-weight:800;
}

.vyora-filter-search{
	display:flex;
	align-items:center;
	gap:8px;
	min-height:40px;
	margin:0 0 11px;
	padding:0 10px;
	border:1px solid #ccd7e2;
	border-radius:8px;
	background:#fff;
	color:#73869a;
}

.vyora-filter-search:focus-within{
	border-color:#5d81ab;
	box-shadow:0 0 0 3px rgba(54,87,124,.08);
}

.vyora-filter-search svg{
	width:16px;
	height:16px;
	fill:none;
	stroke:currentColor;
	stroke-width:1.6;
	stroke-linecap:round;
}

.vyora-filter-search input{
	width:100%!important;
	height:38px!important;
	margin:0!important;
	padding:0!important;
	border:0!important;
	outline:0!important;
	background:transparent!important;
	box-shadow:none!important;
	color:var(--vf-navy)!important;
	font:inherit!important;
	font-size:12.5px!important;
}

.vyora-filter-options{
	display:flex;
	flex-direction:column;
	gap:2px;
}

.vyora-filter-options--scroll{
	max-height:285px;
	overflow:auto;
	padding-right:3px;
}

.vyora-filter-option{
	display:grid;
	grid-template-columns:19px minmax(0,1fr);
	align-items:center;
	gap:9px;
	min-height:35px;
	margin:0;
	padding:5px 6px;
	border-radius:6px;
	cursor:pointer;
	transition:background .12s ease;
}

.vyora-filter-option:hover{
	background:#f5f8fb;
}

.vyora-filter-option.is-disabled{
	opacity:.42;
	cursor:not-allowed;
}

.vyora-filter-option input{
	position:absolute!important;
	width:1px!important;
	height:1px!important;
	opacity:0!important;
	pointer-events:none!important;
}

.vyora-filter-check{
	display:grid;
	place-items:center;
	width:17px;
	height:17px;
	border:1.4px solid #9dacbc;
	border-radius:4px;
	background:#fff;
}

.vyora-filter-option input[type="radio"] + .vyora-filter-check{
	border-radius:50%;
}

.vyora-filter-option input:checked + .vyora-filter-check{
	border-color:var(--vf-blue);
	background:var(--vf-blue);
}

.vyora-filter-option input:checked + .vyora-filter-check::after{
	content:"";
	width:7px;
	height:4px;
	border-left:2px solid #fff;
	border-bottom:2px solid #fff;
	transform:rotate(-45deg) translateY(-1px);
}

.vyora-filter-option input[type="radio"]:checked + .vyora-filter-check::after{
	width:6px;
	height:6px;
	border:0;
	border-radius:50%;
	background:#fff;
	transform:none;
}

.vyora-filter-option-label{
	color:#38536d;
	font-size:12.5px;
	line-height:1.25;
	font-weight:550;
}

.vyora-filter-panel-separator{
	height:1px;
	margin:11px 0;
	background:#e8edf2;
}

/* Precio */
.vyora-filter-price-fields{
	display:grid;
	grid-template-columns:1fr 1fr;
	gap:10px;
}

.vyora-filter-price-fields label{
	color:#667a8e;
	font-size:11.5px;
	font-weight:650;
}

.vyora-filter-price-fields label > span{
	display:block;
	margin-bottom:5px;
}

.vyora-filter-money{
	display:flex;
	align-items:center;
	min-height:40px;
	padding:0 9px;
	border:1px solid #cdd7e2;
	border-radius:7px;
	background:#fff;
	color:#6b7d8f;
}

.vyora-filter-money input{
	width:100%!important;
	height:38px!important;
	margin:0!important;
	padding:0 0 0 4px!important;
	border:0!important;
	outline:0!important;
	background:transparent!important;
	box-shadow:none!important;
	font:inherit!important;
	font-size:12px!important;
}

.vyora-filter-apply{
	width:100%!important;
	min-height:39px!important;
	margin:12px 0 0!important;
	padding:8px 12px!important;
	border:1px solid var(--vf-navy)!important;
	border-radius:7px!important;
	background:var(--vf-navy)!important;
	color:#fff!important;
	font:inherit!important;
	font-size:12.5px!important;
	font-weight:750!important;
	cursor:pointer!important;
}

/* Variaciones dentro de un único dropdown como en plugin original */
.vyora-filter-variations-grid{
	display:grid;
	grid-template-columns:repeat(2,minmax(0,1fr));
	gap:16px;
}

.vyora-filter-variation-section h4,
.vyora-filter-more-section h4{
	margin:0 0 8px;
	color:var(--vf-navy);
	font-size:12.5px;
	font-weight:800;
}

/* Scroll discreto */
.vyora-filter-panel,
.vyora-filter-options--scroll{
	scrollbar-width:thin;
	scrollbar-color:#c7d1dc transparent;
}

/* ---------------------------------------------------------
   MOBILE
   --------------------------------------------------------- */
.vyora-filter-mobile-bar,
.vyora-filter-mobile-head,
.vyora-filter-mobile-actions,
.vyora-filter-overlay{
	display:none;
}

@media(max-width:1180px){
	.vyora-filter-topline{
		grid-template-columns:auto minmax(0,1fr);
		gap:16px 22px;
	}

	.vyora-filter-meta{
		grid-column:1 / -1;
		justify-content:flex-end;
		padding-top:3px;
	}
}

@media(max-width:1280px){
	.vyora-filter-shell{
		margin-bottom:28px;
		border-radius:14px;
	}

	.vyora-filter-form{
		padding:14px;
	}

	.vyora-filter-mobile-bar{
		display:block;
	}

	.vyora-filter-mobile-open{
		display:flex!important;
		align-items:center!important;
		justify-content:center!important;
		gap:9px!important;
		width:100%!important;
		min-height:46px!important;
		margin:0!important;
		padding:9px 14px!important;
		border:1px solid var(--vf-border)!important;
		border-radius:8px!important;
		background:#fff!important;
		color:var(--vf-navy)!important;
		font:inherit!important;
		font-size:13px!important;
		font-weight:750!important;
		cursor:pointer!important;
	}

	.vyora-filter-mobile-open svg{
		width:19px;
		height:19px;
		fill:none;
		stroke:currentColor;
		stroke-width:1.7;
		stroke-linecap:round;
		stroke-linejoin:round;
	}

	.vyora-filter-controls{
		position:fixed;
		z-index:1002;
		top:0;
		right:0;
		bottom:0;
		display:flex;
		flex-direction:column;
		width:min(430px,94vw);
		height:100dvh;
		padding:0 18px 18px;
		background:#fff;
		box-shadow:-20px 0 45px rgba(0,0,0,.18);
		transform:translateX(106%);
		transition:transform .22s ease;
		overflow-y:auto;
	}

	.vyora-filter-shell.is-mobile-open .vyora-filter-controls{
		transform:translateX(0);
	}

	.vyora-filter-mobile-head{
		position:sticky;
		z-index:5;
		top:0;
		display:flex;
		align-items:center;
		justify-content:space-between;
		min-height:64px;
		margin:0 -18px 8px;
		padding:0 18px;
		border-bottom:1px solid #e7ecf2;
		background:#fff;
	}

	.vyora-filter-mobile-head strong{
		color:var(--vf-navy);
		font-size:17px;
		font-weight:800;
	}

	.vyora-filter-mobile-head button{
		display:grid!important;
		place-items:center!important;
		width:38px!important;
		height:38px!important;
		margin:0!important;
		padding:0!important;
		border:0!important;
		background:transparent!important;
		color:var(--vf-navy)!important;
	}

	.vyora-filter-mobile-head svg{
		width:20px;
		height:20px;
		fill:none;
		stroke:currentColor;
		stroke-width:1.7;
	}

	.vyora-filter-topline{
		display:block;
		padding:0;
	}

	.vyora-filter-heading{
		display:none;
	}

	.vyora-filter-left{
		display:block;
	}

	.vyora-filter-meta{
		display:block;
		padding:0;
	}

	.vyora-filter-result,
	.vyora-filter-meta-divider,
	.vyora-filter-sort-label{
		display:none;
	}

	.vyora-filter-group{
		width:100%;
		border-bottom:1px solid #edf1f5;
	}

	.vyora-filter-trigger,
	.vyora-filter-group--sort .vyora-filter-trigger{
		width:100%!important;
		min-width:0!important;
		min-height:52px!important;
		padding:0 3px!important;
		border:0!important;
		border-radius:0!important;
		background:#fff!important;
		color:var(--vf-navy)!important;
		box-shadow:none!important;
	}

	.vyora-filter-trigger.is-filtered{
		background:#fff!important;
		color:var(--vf-blue)!important;
	}

	.vyora-filter-group.is-open > .vyora-filter-trigger{
		border:0!important;
		background:#fff!important;
		box-shadow:none!important;
		color:var(--vf-blue)!important;
	}

	.vyora-filter-panel,
	.vyora-filter-panel--price,
	.vyora-filter-panel--sort,
	.vyora-filter-panel--variations{
		position:static;
		display:none;
		width:100%;
		max-width:none;
		max-height:none;
		padding:0 0 15px;
		border:0;
		border-radius:0;
		background:#fff;
		box-shadow:none;
		overflow:visible;
	}

	.vyora-filter-group.is-open > .vyora-filter-panel{
		display:block;
	}

	.vyora-filter-panel-title{
		display:none;
	}

	.vyora-filter-options--scroll{
		max-height:none;
	}

	.vyora-filter-variations-grid{
		grid-template-columns:1fr;
	}

	.vyora-filter-mobile-actions{
		position:sticky;
		bottom:-18px;
		display:grid;
		grid-template-columns:1fr auto;
		gap:10px;
		margin:auto -18px -18px;
		padding:13px 18px calc(13px + env(safe-area-inset-bottom));
		border-top:1px solid #e4eaf0;
		background:#fff;
	}

	.vyora-filter-mobile-apply{
		min-height:44px!important;
		margin:0!important;
		padding:9px 14px!important;
		border:1px solid var(--vf-navy)!important;
		border-radius:7px!important;
		background:var(--vf-navy)!important;
		color:#fff!important;
		font:inherit!important;
		font-size:13px!important;
		font-weight:800!important;
	}

	.vyora-filter-mobile-actions a{
		display:flex;
		align-items:center;
		padding:0 8px;
		color:#1662c8!important;
		font-size:12.5px;
		font-weight:700;
		text-decoration:none!important;
	}

	.vyora-filter-bottomline{
		margin:0 14px;
		padding:12px 2px 14px;
	}

	.vyora-filter-overlay{
		position:fixed;
		z-index:1001;
		inset:0;
		background:rgba(15,29,43,.42);
		opacity:0;
		pointer-events:none;
		transition:opacity .2s ease;
	}

	.vyora-filter-shell.is-mobile-open .vyora-filter-overlay{
		display:block;
		opacity:1;
		pointer-events:auto;
	}

	body.vyora-filter-lock{
		overflow:hidden;
	}
}

@media(max-width:520px){
	.vyora-filter-price-fields{
		grid-template-columns:1fr;
	}
}


/* =========================================================
   v0.1.15 — REGLA ESTRUCTURAL DEFINITIVA
   1) Todas las cápsulas tienen EXACTAMENTE el mismo tamaño.
   2) Todas las cápsulas permanecen SIEMPRE en UNA sola fila.
   3) Si hace falta espacio, el bloque usa el ancho completo de la ventana.
   4) Por debajo de 1281px se usa el drawer móvil: nunca se permite una 2ª fila.
   ========================================================= */

@media (min-width:1281px){

	.vyora-filter-shell{
		--vf-capsule-width:105px;

		/* breakout controlado del contenedor del tema */
		width:calc(100vw - 24px)!important;
		max-width:none!important;
		margin-left:calc(50% - 50vw + 12px)!important;
		margin-right:calc(50% - 50vw + 12px)!important;
		margin-bottom:42px!important;
	}

	.vyora-filter-topline{
		display:grid!important;
		grid-template-columns:auto minmax(0,1fr) auto!important;
		align-items:center!important;
		column-gap:18px!important;
		row-gap:0!important;
		padding:22px 22px 18px!important;
		overflow:visible!important;
	}

	.vyora-filter-heading{
		min-width:155px!important;
	}

	.vyora-filter-heading strong{
		font-size:12px!important;
	}

	/* FILA ÚNICA: prohibido envolver */
	.vyora-filter-left{
		display:flex!important;
		align-items:center!important;
		flex-wrap:nowrap!important;
		gap:8px!important;
		min-width:0!important;
		width:auto!important;
		overflow:visible!important;
	}

	/* Todas las cápsulas de filtros: mismo ancho y mismo alto */
	.vyora-filter-left > .vyora-filter-group{
		flex:0 0 var(--vf-capsule-width)!important;
		width:var(--vf-capsule-width)!important;
		min-width:var(--vf-capsule-width)!important;
		max-width:var(--vf-capsule-width)!important;
		margin:0!important;
	}

	.vyora-filter-left > .vyora-filter-group > .vyora-filter-trigger{
		width:100%!important;
		min-width:100%!important;
		max-width:100%!important;
		height:40px!important;
		min-height:40px!important;
		max-height:40px!important;
		padding:0 10px!important;
		gap:7px!important;
		font-size:11.5px!important;
		white-space:nowrap!important;
		overflow:hidden!important;
	}

	.vyora-filter-left > .vyora-filter-group > .vyora-filter-trigger > span:first-child{
		min-width:0!important;
		overflow:hidden!important;
		text-overflow:ellipsis!important;
		white-space:nowrap!important;
	}

	/* Sort también es una cápsula: exactamente el mismo tamaño */
	.vyora-filter-meta{
		display:flex!important;
		align-items:center!important;
		justify-content:flex-end!important;
		flex-wrap:nowrap!important;
		gap:10px!important;
		min-width:max-content!important;
		padding:0!important;
		grid-column:auto!important;
	}

	.vyora-filter-meta .vyora-filter-group--sort{
		flex:0 0 var(--vf-capsule-width)!important;
		width:var(--vf-capsule-width)!important;
		min-width:var(--vf-capsule-width)!important;
		max-width:var(--vf-capsule-width)!important;
	}

	.vyora-filter-meta .vyora-filter-group--sort > .vyora-filter-trigger{
		width:100%!important;
		min-width:100%!important;
		max-width:100%!important;
		height:40px!important;
		min-height:40px!important;
		max-height:40px!important;
		padding:0 10px!important;
		gap:7px!important;
		font-size:11.5px!important;
		white-space:nowrap!important;
		overflow:hidden!important;
	}

	.vyora-filter-meta .vyora-filter-group--sort > .vyora-filter-trigger > span:first-child{
		min-width:0!important;
		overflow:hidden!important;
		text-overflow:ellipsis!important;
		white-space:nowrap!important;
	}

	.vyora-filter-result,
	.vyora-filter-sort-label{
		font-size:11.5px!important;
	}

	.vyora-filter-meta-divider{
		height:28px!important;
	}

	/* Nunca una segunda fila en desktop */
	.vyora-filter-left,
	.vyora-filter-meta,
	.vyora-filter-topline{
		flex-wrap:nowrap!important;
	}

	/* paneles desplegables no alteran el tamaño de la cápsula */
	.vyora-filter-group{
		position:relative!important;
	}
}

/* Laptop / desktop compacto: mismas cápsulas entre sí, sólo cambia la medida global */
@media (min-width:1281px) and (max-width:1500px){
	.vyora-filter-shell{
		--vf-capsule-width:105px;
	}

	.vyora-filter-topline{
		column-gap:12px!important;
		padding-left:16px!important;
		padding-right:16px!important;
	}

	.vyora-filter-heading{
		min-width:145px!important;
	}

	.vyora-filter-heading{
		gap:7px!important;
	}

	.vyora-filter-heading strong{
		font-size:11px!important;
	}

	.vyora-filter-heading-icon,
	.vyora-filter-heading-icon svg{
		width:19px!important;
		height:19px!important;
	}

	.vyora-filter-left{
		gap:7px!important;
	}

	.vyora-filter-meta{
		gap:8px!important;
	}

	.vyora-filter-result,
	.vyora-filter-sort-label{
		font-size:11px!important;
	}
}

/* Monitores amplios: cápsulas más cómodas, pero TODAS siguen idénticas */
@media (min-width:1501px){
	.vyora-filter-shell{
		--vf-capsule-width:138px;
	}

	.vyora-filter-left{
		gap:10px!important;
	}

	.vyora-filter-left > .vyora-filter-group > .vyora-filter-trigger,
	.vyora-filter-meta .vyora-filter-group--sort > .vyora-filter-trigger{
		height:42px!important;
		min-height:42px!important;
		max-height:42px!important;
		padding:0 13px!important;
		font-size:12.5px!important;
	}

	.vyora-filter-heading{
		min-width:185px!important;
	}

	.vyora-filter-heading strong{
		font-size:12.5px!important;
	}
}
