/* KEONI VGN · kvgn-ui 1.1.2 · Reseñas propias (sustituye en pantalla al carrusel de Trustindex) */
.ti-widget.kv-rv-oculto,.kv-rv~.ti-widget{display:none!important}
.kv-rv{--kv-oro:#c39f74;--kv-oro-cl:#e3ca8a;--kv-rojo:#d60a18;width:100%;max-width:1180px;margin:8px auto 40px;text-align:left;color:#e9e4dc;font-size:15px}
.kv-rv *{box-sizing:border-box}
.kv-rv-cab{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 14px;margin:0 16px 22px;text-align:center}
.kv-rv-nota{font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;font-size:15px}
.kv-rv-base{color:#bdb5aa;font-size:14px}
.kv-rv-g{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#bdb5aa;border:1px solid rgba(195,159,116,.35);border-radius:999px;padding:4px 10px}
.kv-rv-est{color:var(--kv-oro-cl);letter-spacing:2px;font-size:15px;line-height:1;text-shadow:0 0 10px rgba(227,202,138,.35)}
.kv-rv-cab .kv-rv-est{font-size:19px}
.kv-rv-vent{position:relative;-webkit-mask:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);mask:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%)}
.kv-rv-pista{display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding:0 16px;padding:6px 16px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch;outline:none;align-items:stretch}
.kv-rv-pista::-webkit-scrollbar{display:none}
.kv-rv-pista.kv-rv-mueve{scroll-snap-type:none}
.kv-rv-pista:focus-visible{box-shadow:inset 0 0 0 2px rgba(195,159,116,.6);border-radius:16px}
.kv-rv-item{flex:0 0 86%;scroll-snap-align:start;display:flex;flex-direction:column;gap:12px;padding:22px 22px 18px;border-radius:16px;background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.015));box-shadow:inset 0 0 0 1px rgba(195,159,116,.32),0 10px 30px rgba(0,0,0,.35);transition:box-shadow .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.kv-rv-item:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px rgba(227,202,138,.7),0 14px 36px rgba(0,0,0,.45),0 0 26px rgba(214,10,24,.18)}}
@media (min-width:700px){.kv-rv-item{flex-basis:calc((100% - 16px)/2)}}
@media (min-width:1100px){.kv-rv-item{flex-basis:calc((100% - 32px)/3)}}
.kv-rv-top{display:flex;align-items:center;gap:12px}
.kv-rv-foto{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:0 0 40px;box-shadow:0 0 0 1px rgba(195,159,116,.5)}
.kv-rv-quien{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.kv-rv-nom{font-weight:600;color:#fff;font-size:15px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kv-rv-gi{flex:0 0 auto;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:700 13px/1 Arial,sans-serif;color:#1a1a1a;background:#fff;opacity:.85}
.kv-rv-txt{margin:0;color:#e9e4dc;font-size:15px;line-height:1.6;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;overflow:hidden}
.kv-rv-abierta .kv-rv-txt{-webkit-line-clamp:unset;display:block}
.kv-rv-mas{align-self:flex-start;background:none!important;border:0!important;padding:0!important;margin:0;color:var(--kv-oro-cl)!important;font-size:13px;letter-spacing:.06em;cursor:pointer;text-decoration:underline;text-underline-offset:3px;box-shadow:none!important;animation:none!important;min-height:0}
.kv-rv-ctl{display:flex;align-items:center;justify-content:center;gap:16px;margin:14px 16px 0}
.kv-rv-flecha{width:44px;height:44px;flex:0 0 44px;border-radius:50%;display:grid;place-items:center;padding:0!important;margin:0;cursor:pointer;color:var(--kv-oro-cl)!important;background:rgba(255,255,255,.03)!important;border:1px solid rgba(195,159,116,.55)!important;box-shadow:none!important;animation:none!important;transition:background .35s ease,border-color .35s ease,transform .35s ease}
.kv-rv-flecha:hover,.kv-rv-flecha:focus-visible{background:rgba(214,10,24,.18)!important;border-color:var(--kv-oro-cl)!important;transform:scale(1.06)}
.kv-rv-prev svg{transform:rotate(180deg)}
.kv-rv-barra{position:relative;flex:0 1 220px;height:2px;border-radius:2px;background:rgba(195,159,116,.2);overflow:hidden}
.kv-rv-barra>span{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,var(--kv-oro),var(--kv-rojo));border-radius:2px}
@media (prefers-reduced-motion:reduce){.kv-rv-item{transition:none}}

/* 1.1.2 · Tarjetas blancas con texto negro (Keoni, 02/11), foco en la central y efecto dock */
.kv-rv-pista{padding:18px 16px 22px}
.kv-rv-item{background:#fff;color:#111;box-shadow:0 0 0 1px rgba(195,159,116,.55),0 14px 34px rgba(0,0,0,.45);transform:scale(calc(var(--kv-f,1)*var(--kv-d,1)));opacity:var(--kv-o,1);transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .45s ease,box-shadow .6s ease;will-change:transform}
@media (hover:hover){.kv-rv-item:hover{transform:scale(calc(var(--kv-f,1)*var(--kv-d,1)));box-shadow:0 0 0 1px var(--kv-oro),0 18px 40px rgba(0,0,0,.5),0 0 28px rgba(214,10,24,.22)}}
.kv-rv-nom{color:#111}
.kv-rv-txt{color:#2a2a2a}
.kv-rv-item .kv-rv-est{color:#e0a400;text-shadow:none}
.kv-rv-gi{background:#f1f1f1;color:#4285f4;opacity:1}
.kv-rv-mas{color:#9a1b1b!important}
.kv-rv-foto{box-shadow:0 0 0 1px rgba(0,0,0,.12)}
/* Dock */
.kv-dock .kv-ig-item,.kv-dock .works-grid-item{transform:scale(var(--kv-d,1));transition:transform .28s cubic-bezier(.2,.7,.2,1);will-change:transform;position:relative}
.kv-dock.kv-ig-pista{padding-top:28px!important;padding-bottom:28px!important}
/* Carrusel de la portada: acercamiento lento de la foto activa */
.section-carousel-works .slick-slide img{transition:transform 6s cubic-bezier(.2,.7,.2,1)}
.section-carousel-works .slick-current img{transform:scale(1.06)}
@media (prefers-reduced-motion:reduce){.kv-rv-item,.kv-dock .kv-ig-item,.kv-dock .works-grid-item,.section-carousel-works .slick-slide img{transition:none;transform:none}}
/* 1.1.2 · Vídeo de YouTube con portada propia */
.kv-yt{position:relative;width:100%;aspect-ratio:16/9;background:#000 center/cover no-repeat;border-radius:14px;overflow:hidden;cursor:pointer;box-shadow:0 0 0 1px rgba(195,159,116,.35),0 24px 60px -24px rgba(0,0,0,.9)}
.kv-yt::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(0,0,0,0) 40%,rgba(0,0,0,.45));transition:opacity .4s ease}
.kv-yt-play{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;z-index:1;background:rgba(214,10,24,.82);box-shadow:0 0 0 2px rgba(255,241,214,.85),0 0 34px rgba(214,10,24,.55);transition:transform .35s cubic-bezier(.2,.7,.2,1),background .35s ease}
.kv-yt-play::before{content:"";position:absolute;left:34px;top:26px;border-style:solid;border-width:16px 0 16px 25px;border-color:transparent transparent transparent #fff}
.kv-yt:hover .kv-yt-play,.kv-yt:focus-visible .kv-yt-play{transform:scale(1.08);background:rgba(214,10,24,.95)}
.kv-yt.kv-yt-on{cursor:auto}.kv-yt.kv-yt-on::after{display:none}
.kv-yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* 1.1.3 · EL BLOQUE DEL RECORD LO MUEVE UN SOLO RELOJ (Keoni, 02/11, Safari: «se queda pillado a veces… si vuelvo a subir y vuelvo a bajar… que no vuelva a pasar nada similar nunca mas»).
   Antes, cada pieza llevaba su propia animacion ligada al scroll del navegador (animation-timeline) y el contador iba aparte por JavaScript. En Safari, al ir y volver, algunas de esas animaciones se quedaban congeladas a medias (titulo invisible, trazo sin pintar, contador en +0) mientras otras seguian.
   Ahora kvgn-ui.js calcula UNA sola cifra de avance (--kvq, de 0 a 1) en cada movimiento y todo sale de ella con la misma cuenta: titulo, trazo, contador, botones y video. Si el navegador se salta un fotograma, el siguiente lo deja exacto: no puede quedarse a medias. Mismos tramos que antes. */
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-pin,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-velo,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-ante,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-l,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-cifra,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-cifra::before,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-apoyo,html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-btns{animation:none !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-pin{--kvz:calc(1.2 - .2*calc(clamp(0,(var(--kvq,0) - 0)/0.5500,1)*clamp(0,(var(--kvq,0) - 0)/0.5500,1)*(3 - 2*clamp(0,(var(--kvq,0) - 0)/0.5500,1)))) !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-velo{opacity:calc(.35 + .4*clamp(0,(var(--kvq,0) - 0.05)/0.2500,1)) !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-ante{-webkit-mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.06)/0.1000,1))*100%) 0 !important;mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.06)/0.1000,1))*100%) 0 !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-l{-webkit-mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.12)/0.1200,1))*100%) 0 !important;mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.12)/0.1200,1))*100%) 0 !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-l:nth-child(2){-webkit-mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.19)/0.1200,1))*100%) 0 !important;mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.19)/0.1200,1))*100%) 0 !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-l:nth-child(3){-webkit-mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.26)/0.1200,1))*100%) 0 !important;mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.26)/0.1200,1))*100%) 0 !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-cifra{opacity:calc(clamp(0,(var(--kvq,0) - 0.42)/0.1300,1)*clamp(0,(var(--kvq,0) - 0.42)/0.1300,1)*(3 - 2*clamp(0,(var(--kvq,0) - 0.42)/0.1300,1))) !important;transform:scale(calc(.9 + .1*calc(clamp(0,(var(--kvq,0) - 0.42)/0.1300,1)*clamp(0,(var(--kvq,0) - 0.42)/0.1300,1)*(3 - 2*clamp(0,(var(--kvq,0) - 0.42)/0.1300,1))))) !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-cifra::before{--kvp:calc(-14% + 114%*clamp(0,(var(--kvq,0) - 0.46)/0.1800,1)) !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-apoyo{-webkit-mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.6)/0.1000,1))*100%) 0 !important;mask-position:calc((1 - clamp(0,(var(--kvq,0) - 0.6)/0.1000,1))*100%) 0 !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec .kv-rec-btns{opacity:calc(clamp(0,(var(--kvq,0) - 0.7)/0.1000,1)*clamp(0,(var(--kvq,0) - 0.7)/0.1000,1)*(3 - 2*clamp(0,(var(--kvq,0) - 0.7)/0.1000,1))) !important;transform:translateY(calc(16px*(1 - calc(clamp(0,(var(--kvq,0) - 0.7)/0.1000,1)*clamp(0,(var(--kvq,0) - 0.7)/0.1000,1)*(3 - 2*clamp(0,(var(--kvq,0) - 0.7)/0.1000,1)))))) !important;visibility:visible !important}
html.kv-recjs:not(#kz1):not(#kz2):not(#kz3):not(#kz4):not(#kz5):not(#kz6):not(#kz7):not(#kz8):not(#kz9):not(#kz10):not(#kz11):not(#kz12) body .kv-rec.kv-rec-off .kv-rec-btns{visibility:hidden !important}
