/* © Fernando Martínez Marín · VEOVIRTUAL® · veovirtual.com */

/* Base */
body [class^="vvf-"],
body [class*=" vvf-"],
body [class^="vvf-"]::before,
body [class^="vvf-"]::after {
box-sizing:border-box;
}
body .vvf-caja {
max-width:var(--vv-ancho, 1240px);
margin:0 auto;
padding:0 clamp(16px, 4vw, 32px);
box-sizing:border-box;
}
body .vvf-oculto {
position:absolute;
width:1px;
height:1px;
overflow:hidden;
clip:rect(0 0 0 0);
white-space:nowrap;
}
body .vvf-ico {
flex:none;
width:1.15em;
height:1.15em;
}
body .vvf-seccion__titulo {
margin:0 0 clamp(16px, 2.5vw, 24px);
color:var(--vv-oscuro, #1f2429);
font-family:var(--vv-fuente-titulos, inherit);
font-size:clamp(1.4rem, 2.6vw, 1.9rem);
line-height:1.2;
}
html.vvf-sin-scroll {
overflow:hidden;
}

/* Migas */
body .vvf-migas__lista {
display:flex;
flex-wrap:wrap;
align-items:center;
gap:6px;
margin:0 0 18px;
padding:0;
font-size:0.9rem;
list-style:none;
}
body .vvf-migas__item {
display:flex;
align-items:center;
gap:6px;
}
body .vvf-migas__item + .vvf-migas__item::before {
content:"/";
opacity:0.5;
}
body .vvf-migas__enlace {
display:inline-flex;
align-items:center;
min-height:32px;
color:inherit;
text-decoration:underline;
text-underline-offset:3px;
}
body .vvf-migas__actual {
font-weight:600;
}

/* Cabecera */
body .vvf-cabecera {
position:relative;
padding:clamp(28px, 5vw, 56px) 0 clamp(24px, 4vw, 40px);
background-color:var(--vv-claro, #f4f1ec);
color:var(--vv-oscuro, #1f2429);
}
body .vvf-cabecera--foto {
display:flex;
align-items:flex-end;
min-height:clamp(340px, 52vh, 560px);
padding-top:clamp(90px, 14vw, 140px);
overflow:hidden;
background-color:var(--vv-oscuro, #1f2429);
color:#ffffff;
}
body .vvf-cabecera__fondo {
position:absolute;
inset:0;
}
body .vvf-cabecera__fondo::after {
content:"";
position:absolute;
inset:0;
background:linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.15) 40%, rgba(0,0,0,0.72) 100%);
}
body .vvf-cabecera__img {
width:100%;
height:100%;
object-fit:cover;
}
body .vvf-cabecera__caja {
position:relative;
width:100%;
}
body .vvf-cabecera__etiquetas {
display:flex;
flex-wrap:wrap;
gap:8px;
margin:0 0 12px;
}
body .vvf-cabecera__etiquetas span {
padding:4px 12px;
border-radius:999px;
background-color:var(--vv-acento, #3d7f8f);
color:#ffffff;
font-size:0.8rem;
font-weight:600;
letter-spacing:0.02em;
}
body .vvf-cabecera__titulo {
max-width:22ch;
margin:0;
color:inherit;
font-family:var(--vv-fuente-titulos, inherit);
font-size:clamp(2rem, 5vw, 3.4rem);
line-height:1.08;
}
body .vvf-cabecera__resumen {
max-width:62ch;
margin:14px 0 0;
font-size:clamp(1.02rem, 1.6vw, 1.2rem);
line-height:1.55;
opacity:0.92;
}
body .vvf-cabecera--foto .vvf-migas__enlace,
body .vvf-cabecera--foto .vvf-migas__actual {
color:#ffffff;
}

/* Botones */
body .vvf-boton {
display:inline-flex;
align-items:center;
justify-content:center;
gap:8px;
min-height:46px;
padding:10px 20px;
border:1px solid var(--vv-acento, #3d7f8f);
border-radius:var(--vv-radio-boton, 999px);
background-color:#ffffff;
color:var(--vv-oscuro, #1f2429);
font:inherit;
font-weight:600;
line-height:1.2;
text-align:center;
text-decoration:none;
cursor:pointer;
transition:background-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
body .vvf-boton:hover,
body .vvf-boton:focus-visible {
background-color:var(--vv-acento, #3d7f8f);
color:#ffffff;
}
body .vvf-boton--principal {
background-color:var(--vv-acento, #3d7f8f);
color:#ffffff;
}
body .vvf-boton--principal:hover,
body .vvf-boton--principal:focus-visible {
background-color:var(--vv-oscuro, #1f2429);
border-color:var(--vv-oscuro, #1f2429);
}
body .vvf-botones {
display:flex;
flex-wrap:wrap;
gap:10px;
}
body .vvf-botones--bloque .vvf-boton {
flex:1 1 100%;
}

/* Filtros */
body .vvf-filtros {
display:flex;
flex-direction:column;
gap:10px;
margin:0 0 clamp(20px, 3vw, 32px);
}
body .vvf-filtros__grupo {
display:flex;
flex-wrap:wrap;
gap:8px;
}
body .vvf-chip {
min-height:42px;
padding:8px 18px;
border:1px solid color-mix(in srgb, var(--vv-oscuro, #1f2429) 22%, transparent);
border-radius:999px;
background-color:#ffffff;
color:var(--vv-oscuro, #1f2429);
font:inherit;
font-size:0.95rem;
font-weight:600;
cursor:pointer;
transition:background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
body .vvf-chip:hover {
border-color:var(--vv-acento, #3d7f8f);
}
body .vvf-chip.is-activo {
border-color:var(--vv-oscuro, #1f2429);
background-color:var(--vv-oscuro, #1f2429);
color:#ffffff;
}
body .vvf-filtros__cuenta {
margin:0;
font-size:0.9rem;
opacity:0.7;
}
body .vvf-vacio {
padding:32px;
border-radius:var(--vv-radio, 16px);
background-color:var(--vv-claro, #f4f1ec);
text-align:center;
}

/* Rejilla equilibrada */
body .vvf-rejilla {
--vvf-cols:3;
display:grid;
grid-template-columns:repeat(12, minmax(0, 1fr));
gap:clamp(14px, 2.2vw, 28px);
}
body .vvf-rejilla > * {
grid-column:span 4;
min-width:0;
}
body .vvf-rejilla--4 {
--vvf-cols:4;
}
body .vvf-rejilla--2 {
--vvf-cols:2;
}

/* Tarjeta */
body .vvf-tarjeta {
position:relative;
display:flex;
flex-direction:column;
overflow:visible;
border-radius:var(--vv-radio, 16px);
background-color:#ffffff;
box-shadow:0 1px 2px rgba(0,0,0,0.06), 0 10px 30px -12px rgba(0,0,0,0.22);
transition:transform 0.25s ease, box-shadow 0.25s ease;
}
body .vvf-tarjeta:hover {
transform:translateY(-4px);
box-shadow:0 1px 2px rgba(0,0,0,0.06), 0 22px 40px -16px rgba(0,0,0,0.3);
}
body .vvf-tarjeta__enlace {
display:flex;
flex:1;
flex-direction:column;
color:inherit;
text-decoration:none;
}
body .vvf-tarjeta__foto {
position:relative;
flex:none;
height:var(--vvf-foto-alto, clamp(190px, 19vw, 250px));
overflow:hidden;
border-radius:var(--vv-radio, 16px) var(--vv-radio, 16px) 0 0;
background-color:var(--vv-claro, #f4f1ec);
}
body .vvf-tarjeta__img {
display:block;
width:100%;
height:100%;
object-fit:cover;
transition:transform 0.6s ease;
}
body .vvf-tarjeta:hover .vvf-tarjeta__img {
transform:scale(1.05);
}
body .vvf-tarjeta__sinfoto {
display:grid;
place-items:center;
width:100%;
height:100%;
color:var(--vv-acento, #3d7f8f);
}
body .vvf-tarjeta__sinfoto .vvf-ico {
width:48px;
height:48px;
opacity:0.5;
}
body .vvf-tarjeta__insignia {
position:absolute;
top:12px;
left:12px;
padding:4px 12px;
border-radius:999px;
background-color:rgba(255,255,255,0.94);
color:var(--vv-oscuro, #1f2429);
font-size:0.8rem;
font-weight:700;
}
body .vvf-tarjeta__icono {
position:absolute;
top:-22px;
right:18px;
z-index:2;
display:grid;
place-items:center;
width:56px;
height:56px;
border-radius:50%;
background-color:var(--vv-acento, #3d7f8f);
color:#ffffff;
box-shadow:0 8px 18px -6px rgba(0,0,0,0.35);
}
body .vvf-tarjeta__icono .vvf-ico {
width:28px;
height:28px;
}
body .vvf-tarjeta__texto {
display:flex;
flex:1;
flex-direction:column;
gap:8px;
padding:clamp(16px, 2vw, 22px);
}
body .vvf-tarjeta__titulo {
margin:0;
color:var(--vv-oscuro, #1f2429);
font-family:var(--vv-fuente-titulos, inherit);
font-size:clamp(1.1rem, 1.6vw, 1.3rem);
line-height:1.25;
}
body .vvf-tarjeta__meta {
display:flex;
flex-wrap:wrap;
gap:6px 14px;
margin:0;
font-size:0.88rem;
opacity:0.8;
}
body .vvf-tarjeta__meta span {
display:inline-flex;
align-items:center;
gap:5px;
}
body .vvf-tarjeta__resumen {
margin:0;
font-size:0.97rem;
line-height:1.5;
}
body .vvf-tarjeta__mas {
display:inline-flex;
align-items:center;
gap:6px;
margin-top:auto;
padding-top:6px;
color:var(--vv-acento, #3d7f8f);
font-weight:700;
}
body .vvf-tarjeta__acciones {
display:flex;
flex-wrap:wrap;
gap:8px;
padding:0 clamp(16px, 2vw, 22px) clamp(16px, 2vw, 22px);
}
body .vvf-tarjeta__acciones .vvf-boton {
flex:1 1 auto;
min-height:42px;
padding:8px 14px;
font-size:0.92rem;
}

/* Ficha */
body .vvf-ficha__cuerpo {
display:grid;
grid-template-columns:minmax(0, 1fr) minmax(280px, 360px);
gap:clamp(24px, 4vw, 56px);
padding-top:clamp(28px, 4vw, 48px);
padding-bottom:clamp(28px, 4vw, 48px);
}
body .vvf-ficha__texto {
min-width:0;
font-size:1.05rem;
line-height:1.7;
}
body .vvf-ficha__texto > * + * {
margin-top:1em;
}
body .vvf-ficha__texto img {
max-width:100%;
height:auto;
border-radius:var(--vv-radio, 16px);
}
body .vvf-ficha__texto h2,
body .vvf-ficha__texto h3 {
color:var(--vv-oscuro, #1f2429);
font-family:var(--vv-fuente-titulos, inherit);
line-height:1.25;
}
body .vvf-ficha__lateral {
min-width:0;
}
body .vvf-info {
position:sticky;
top:calc(var(--vv-cabecera-alto, 80px) + 16px);
display:flex;
flex-direction:column;
gap:18px;
padding:clamp(18px, 2.4vw, 26px);
border-radius:var(--vv-radio, 16px);
background-color:var(--vv-claro, #f4f1ec);
}
body .vvf-datos__titulo {
margin:0;
color:var(--vv-oscuro, #1f2429);
font-family:var(--vv-fuente-titulos, inherit);
font-size:1.2rem;
}
body .vvf-datos {
display:flex;
flex-direction:column;
gap:12px;
margin:0;
}
body .vvf-datos__fila {
display:grid;
grid-template-columns:auto minmax(0, 1fr);
gap:2px 10px;
}
body .vvf-datos__fila .vvf-ico {
grid-row:span 2;
margin-top:2px;
color:var(--vv-acento, #3d7f8f);
}
body .vvf-datos__fila:not(:has(.vvf-ico)) {
grid-template-columns:minmax(0, 1fr);
}
body .vvf-datos dt {
font-size:0.8rem;
font-weight:700;
letter-spacing:0.04em;
text-transform:uppercase;
opacity:0.65;
}
body .vvf-datos dd {
margin:0;
line-height:1.45;
}
body .vvf-seccion {
padding-top:clamp(28px, 4vw, 56px);
padding-bottom:clamp(28px, 4vw, 56px);
}
body .vvf-seccion--clara {
background-color:var(--vv-claro, #f4f1ec);
}

/* Galería */
body .vvf-galeria {
margin-top:clamp(28px, 4vw, 44px);
}
body .vvf-galeria__lista {
--vvf-cols:3;
display:grid;
grid-template-columns:repeat(12, minmax(0, 1fr));
grid-auto-flow:dense;
gap:10px;
margin:0;
padding:0;
list-style:none;
}
body .vvf-galeria__item {
grid-column:span 4;
min-width:0;
}
body .vvf-galeria__enlace {
display:block;
height:100%;
overflow:hidden;
border-radius:calc(var(--vv-radio, 16px) * 0.7);
}
body .vvf-galeria__img {
display:block;
width:100%;
height:100%;
min-height:180px;
aspect-ratio:4 / 3;
object-fit:cover;
transition:transform 0.5s ease;
}
body .vvf-galeria__enlace:hover .vvf-galeria__img {
transform:scale(1.04);
}

/* Fotos y galerías dentro del texto */
body .vvf-foto {
margin:1.6em 0;
}
body .vvf-foto__enlace {
display:block;
overflow:hidden;
border-radius:var(--vv-radio, 16px);
}
body .vvf-foto__img {
display:block;
width:100%;
height:auto;
transition:transform 0.5s ease;
}
body .vvf-ficha__texto .vvf-foto__img {
border-radius:0;
}
body .vvf-foto__enlace:hover .vvf-foto__img {
transform:scale(1.02);
}
body .vvf-galeria-texto {
margin:1.6em 0;
}
body .vvf-galeria-texto .vvf-galeria {
margin-top:0;
}
body .vvf-galeria-texto ul.vvf-galeria__lista {
margin:0;
padding:0;
}
body .vvf-galeria-texto li.vvf-galeria__item {
margin:0;
padding:0;
}
body .vvf-galeria-texto li.vvf-galeria__item::before {
content:none;
}
body .vvf-ficha__texto .vvf-galeria__img {
border-radius:0;
}

/* Documentos */
body .vvf-docs {
margin-top:clamp(28px, 4vw, 44px);
}
body .vvf-docs__lista {
display:flex;
flex-direction:column;
gap:10px;
margin:0;
padding:0;
list-style:none;
}
body .vvf-docs__enlace {
display:grid;
grid-template-columns:auto minmax(0, 1fr) auto;
align-items:center;
gap:4px 14px;
padding:14px 18px;
border:1px solid color-mix(in srgb, var(--vv-oscuro, #1f2429) 14%, transparent);
border-radius:calc(var(--vv-radio, 16px) * 0.8);
background-color:#ffffff;
color:inherit;
text-decoration:none;
transition:border-color 0.2s ease, box-shadow 0.2s ease;
}
body .vvf-docs__enlace:hover {
border-color:var(--vv-acento, #3d7f8f);
box-shadow:0 8px 20px -12px rgba(0,0,0,0.3);
}
body .vvf-docs__enlace > .vvf-ico:first-child {
grid-row:span 2;
width:34px;
height:34px;
color:var(--vv-acento, #3d7f8f);
}
body .vvf-docs__nombre {
font-weight:700;
}
body .vvf-docs__meta {
grid-column:2;
font-size:0.85rem;
opacity:0.7;
}
body .vvf-docs__bajar {
grid-column:3;
grid-row:1 / span 2;
}

/* Paginación */
body .vvf-paginas ul {
display:flex;
flex-wrap:wrap;
justify-content:center;
gap:8px;
margin:clamp(24px, 4vw, 40px) 0 0;
padding:0;
list-style:none;
}
body .vvf-paginas a,
body .vvf-paginas span {
display:grid;
place-items:center;
min-width:44px;
min-height:44px;
border-radius:999px;
font-weight:700;
text-decoration:none;
}
body .vvf-paginas a {
border:1px solid color-mix(in srgb, var(--vv-oscuro, #1f2429) 20%, transparent);
color:inherit;
}
body .vvf-paginas span {
background-color:var(--vv-oscuro, #1f2429);
color:#ffffff;
}

/* Calendario */
body .vvf-cal {
position:relative;
display:inline-block;
}
body .vvf-cal__menu {
position:absolute;
top:calc(100% + 6px);
left:0;
z-index:20;
display:flex;
flex-direction:column;
min-width:230px;
padding:6px;
border-radius:14px;
background-color:#ffffff;
box-shadow:0 18px 40px -12px rgba(0,0,0,0.35);
}
body .vvf-cal__menu[hidden] {
display:none;
}
body .vvf-cal__menu a {
display:flex;
align-items:center;
gap:10px;
min-height:44px;
padding:8px 12px;
border-radius:10px;
color:var(--vv-oscuro, #1f2429);
font-weight:600;
text-decoration:none;
}
body .vvf-cal__menu a:hover {
background-color:var(--vv-claro, #f4f1ec);
}

/* Visor */
body .vvf-visor {
position:fixed;
inset:0;
z-index:9999;
display:flex;
align-items:center;
justify-content:center;
padding:clamp(12px, 4vw, 56px);
background-color:rgba(12,14,16,0.94);
touch-action:pan-y;
}
body .vvf-visor[hidden] {
display:none;
}
body .vvf-visor__fig {
display:flex;
flex-direction:column;
align-items:center;
gap:12px;
max-width:100%;
max-height:100%;
margin:0;
}
body .vvf-visor__img {
max-width:100%;
max-height:calc(100vh - 120px);
border-radius:8px;
object-fit:contain;
}
body .vvf-visor__pie {
color:#ffffff;
font-size:0.9rem;
opacity:0.85;
}
body .vvf-visor__btn {
position:absolute;
display:grid;
place-items:center;
width:52px;
height:52px;
border:0;
border-radius:50%;
background-color:rgba(255,255,255,0.12);
color:#ffffff;
cursor:pointer;
}
body .vvf-visor__btn:hover,
body .vvf-visor__btn:focus-visible {
background-color:rgba(255,255,255,0.25);
}
body .vvf-visor__btn svg {
width:26px;
height:26px;
fill:none;
stroke:currentColor;
stroke-width:2;
stroke-linecap:round;
stroke-linejoin:round;
}
body .vvf-visor__btn--ant {
left:clamp(8px, 2vw, 24px);
}
body .vvf-visor__btn--sig {
right:clamp(8px, 2vw, 24px);
}
body .vvf-visor__btn--cerrar {
top:clamp(8px, 2vw, 24px);
right:clamp(8px, 2vw, 24px);
}
body .vvf-visor.is-una .vvf-visor__btn--ant,
body .vvf-visor.is-una .vvf-visor__btn--sig {
display:none;
}

/* Tarjeta destacada */
@media (min-width:768px) {
body .vvf-rejilla > .vvf-destacada .vvf-tarjeta__enlace {
flex-direction:row;
}
body .vvf-rejilla > .vvf-destacada .vvf-tarjeta__foto {
flex:0 0 55%;
height:auto;
min-height:calc(var(--vvf-foto-alto, clamp(190px, 19vw, 250px)) * 1.3);
border-radius:var(--vv-radio, 16px) 0 0 var(--vv-radio, 16px);
}
body .vvf-rejilla > .vvf-destacada .vvf-tarjeta__texto {
justify-content:center;
padding:clamp(22px, 3vw, 40px);
}
body .vvf-rejilla > .vvf-destacada .vvf-tarjeta__titulo {
font-size:clamp(1.3rem, 2.2vw, 1.8rem);
}
}

@media (max-width:959px) {
body .vvf-rejilla {
--vvf-cols:2;
}
body .vvf-rejilla > * {
grid-column:span 6;
}
body .vvf-ficha__cuerpo {
grid-template-columns:minmax(0, 1fr);
}
body .vvf-info {
position:static;
}
}
@media (max-width:767px) {
body .vvf-rejilla {
gap:12px;
}
body .vvf-rejilla--1 {
--vvf-cols:1;
}
body .vvf-tarjeta__texto {
padding:12px;
}
body .vvf-tarjeta__titulo {
font-size:1rem;
}
body .vvf-tarjeta__resumen {
display:none;
}
body .vvf-tarjeta__foto {
height:var(--vvf-foto-alto-movil, 150px);
}
body .vvf-tarjeta__icono {
top:-16px;
right:10px;
width:40px;
height:40px;
}
body .vvf-tarjeta__icono .vvf-ico {
width:20px;
height:20px;
}
body .vvf-tarjeta__acciones {
padding:0 12px 12px;
}
body .vvf-galeria__lista {
--vvf-cols:2;
}
body .vvf-galeria__item {
grid-column:span 6;
}
body .vvf-galeria__img {
min-height:120px;
}
}

/* Ocultos */
body .vvf-tarjeta[hidden],
body [data-vvf-item][hidden] {
display:none !important;
}
