/* ==========================================================================
   Tu Viaje Agency 2026 — hoja de estilos del tema
   Brandbook: Active Green #24BD4F · Deep Carbon #121212 · Mist Gray #F4F4F4
   Tipografia: Archivo Black (display) + Montserrat (cuerpo), autoalojadas.
   ========================================================================== */

/* ---------- Fuentes ---------- */
@font-face{font-family:'Archivo Black';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/archivo-black-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Archivo Black';font-style:normal;font-weight:400;font-display:swap;
  src:url(../fonts/archivo-black-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 800;font-display:swap;
  src:url(../fonts/montserrat-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 800;font-display:swap;
  src:url(../fonts/montserrat-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---------- Tokens ---------- */
:root{
  --tv-green:#24BD4F; --tv-green-hover:#1fa845; --tv-green-dark:#1a9c40;
  --tv-carbon:#121212; --tv-mist:#F4F4F4;
  --tv-border:#e6e6e6; --tv-border-2:#ececec; --tv-line:#ededed;
  --tv-text:#121212; --tv-text-2:#4a4a4a; --tv-text-3:#585858; --tv-muted:#8a8a8a;
  --tv-display:'Archivo Black',Impact,sans-serif;
  --tv-body:'Montserrat',system-ui,-apple-system,'Segoe UI',sans-serif;
  --tv-max:1280px; --tv-pad:20px; --tv-sec:44px; --tv-radius:24px;
}
@media (min-width:900px){:root{--tv-pad:48px;--tv-sec:96px;--tv-radius:32px;}}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:#fff;color:var(--tv-text);font-family:var(--tv-body);font-weight:500;
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--tv-green);text-decoration:none}
a:hover{color:var(--tv-green-dark)}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul{padding:0;list-style:none}
:focus-visible{outline:3px solid var(--tv-green);outline-offset:3px}
.tv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tv-skip{position:absolute;left:-9999px}
.tv-skip:focus{left:12px;top:12px;z-index:999;background:#fff;padding:10px 16px;border-radius:100px}

/* ---------- Layout ---------- */
.tv-wrap{width:100%;max-width:var(--tv-max);margin:0 auto;padding-left:var(--tv-pad);padding-right:var(--tv-pad)}
.tv-section{padding-top:var(--tv-sec)}
.tv-section--last{padding-bottom:var(--tv-sec)}
main{display:block}

/* ---------- Tipografia ---------- */
.tv-h1,h1.tv-h1{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;
  font-size:clamp(2.6rem,6.6vw,5.75rem);line-height:.9;letter-spacing:-.03em;margin:0}
.tv-h2{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;
  font-size:clamp(2rem,4.2vw,3.375rem);line-height:.95;letter-spacing:-.025em;margin:0}
.tv-h3{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;
  font-size:clamp(1.375rem,2.4vw,1.875rem);line-height:1.05;letter-spacing:-.02em;margin:0}
.tv-eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tv-green);line-height:1}
.tv-eyebrow--light{color:rgba(255,255,255,.85)}
.tv-lead{font-size:clamp(1rem,1.2vw,1.125rem);line-height:1.65;color:var(--tv-text-2);text-wrap:pretty}
.tv-lead--light{color:#dcdcdc}
.tv-green{color:var(--tv-green)}
.tv-stat{font-family:var(--tv-display);font-weight:400;font-size:clamp(1.75rem,2.6vw,2rem);line-height:1;color:var(--tv-green)}
.tv-stat-label{margin-top:7px;font-size:12px;font-weight:600;line-height:1.4;color:#7a7a7a}

/* ---------- Botones ---------- */
.tv-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;
  min-height:44px;padding:17px 28px;border-radius:100px;font-weight:800;font-size:15px;line-height:1;
  transition:background .18s ease,color .18s ease,border-color .18s ease;cursor:pointer}
@media (min-width:900px){.tv-btn{min-height:52px;padding:21px 34px;font-size:16px}}
.tv-btn--primary{background:var(--tv-green);color:#fff}
.tv-btn--primary:hover{background:var(--tv-green-hover);color:#fff}
.tv-btn--dark{background:var(--tv-carbon);color:#fff}
.tv-btn--dark:hover{background:#000;color:#fff}
.tv-btn--light{background:#fff;color:var(--tv-carbon)}
.tv-btn--light:hover{background:#f1f1f1;color:var(--tv-carbon)}
.tv-btn--ghost{border:1.5px solid var(--tv-border);color:var(--tv-carbon);font-weight:700}
.tv-btn--ghost:hover{border-color:var(--tv-carbon);color:var(--tv-carbon)}
.tv-btn--ghost-light{border:1.5px solid rgba(255,255,255,.45);color:#fff;font-weight:700}
.tv-btn--ghost-light:hover{background:rgba(255,255,255,.12);color:#fff}
.tv-btn--block{display:flex;width:100%}
.tv-btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
@media (max-width:599px){.tv-btns{flex-direction:column}.tv-btns .tv-btn{width:100%}}

/* ---------- Cabecera ---------- */
.tv-header{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--tv-line)}
.tv-header__inner{max-width:var(--tv-max);margin:0 auto;padding:14px var(--tv-pad);
  display:flex;align-items:center;justify-content:space-between;gap:16px}
@media (min-width:900px){.tv-header__inner{padding:16px var(--tv-pad);gap:40px}}
.tv-logo{display:flex;align-items:center;gap:10px;flex:none;color:var(--tv-carbon)}
.tv-logo:hover{color:var(--tv-carbon)}
.tv-logo img{width:auto;height:34px;object-fit:contain}
@media (min-width:900px){.tv-logo img{height:38px}}
.tv-logo__ph{width:34px;height:34px;border-radius:10px;background:var(--tv-mist);border:1.5px dashed #d0d0d0}
.tv-logo__txt{font-family:var(--tv-display);font-weight:400;font-size:13px;line-height:1;letter-spacing:.06em;text-transform:uppercase}
@media (min-width:900px){.tv-logo__txt{font-size:14px}.tv-logo__ph{width:38px;height:38px;border-radius:11px}}
.tv-nav{display:none}
@media (min-width:1000px){.tv-nav{display:flex;align-items:center;gap:34px;font-size:14px;font-weight:600}}
.tv-nav a{color:var(--tv-carbon)}
.tv-nav a:hover,.tv-nav .current-menu-item>a{color:var(--tv-green)}
.tv-header__cta{display:flex;align-items:center;gap:8px;flex:none}
@media (min-width:900px){.tv-header__cta{gap:12px}}
.tv-icon-btn{width:40px;height:40px;flex:none;border-radius:100px;border:1.5px solid #e2e2e2;
  display:flex;align-items:center;justify-content:center}
@media (min-width:900px){.tv-icon-btn{width:44px;height:44px}}
.tv-icon-btn:hover{border-color:var(--tv-green)}
.tv-header__btn{background:var(--tv-green);color:#fff;font-weight:700;font-size:12px;line-height:1;
  letter-spacing:.04em;text-transform:uppercase;padding:12px 16px;border-radius:100px;min-height:44px;
  display:flex;align-items:center}
.tv-header__btn:hover{background:var(--tv-green-hover);color:#fff}
@media (min-width:900px){.tv-header__btn{font-size:13px;padding:15px 24px}}
.tv-burger{width:44px;height:44px;border-radius:100px;border:1.5px solid #e2e2e2;display:flex;
  flex-direction:column;align-items:center;justify-content:center;gap:4px}
@media (min-width:1000px){.tv-burger{display:none}}
.tv-burger span{width:16px;height:2px;background:var(--tv-carbon);border-radius:2px;transition:transform .2s ease,opacity .2s ease}
.tv-burger[aria-expanded="true"] span:first-child{transform:translateY(3px) rotate(45deg)}
.tv-burger[aria-expanded="true"] span:last-child{transform:translateY(-3px) rotate(-45deg)}
.tv-mobile-nav{display:none;border-top:1px solid var(--tv-line);padding:6px var(--tv-pad) 16px;background:#fff}
.tv-mobile-nav.is-open{display:block}
@media (min-width:1000px){.tv-mobile-nav.is-open{display:none}}
.tv-mobile-nav a{display:block;padding:15px 0;border-bottom:1px solid #f2f2f2;color:var(--tv-carbon);
  font-weight:700;font-size:16px}
.tv-mobile-nav a:last-child{border-bottom:0}
.tv-mobile-nav a:hover{color:var(--tv-green)}
.tv-tag-b2b{margin-left:6px;font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--tv-green);
  border:1px solid var(--tv-green);border-radius:100px;padding:3px 7px;vertical-align:middle}

/* ---------- Barra inferior movil ---------- */
.tv-bottombar{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;gap:10px;align-items:center;
  padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--tv-line)}
@media (min-width:900px){.tv-bottombar{display:none}}
.tv-bottombar .tv-icon-btn{width:52px;height:52px}
.tv-bottombar .tv-btn{flex:1;min-height:52px}
body.has-bottombar{padding-bottom:76px}
@media (min-width:900px){body.has-bottombar{padding-bottom:0}}

/* ---------- Media slots (fotos y video) ---------- */
.tv-media{position:relative;overflow:hidden;border-radius:var(--tv-radius);background:var(--tv-mist);
  background-image:repeating-linear-gradient(135deg,#F4F4F4 0 14px,#ebebeb 14px 28px);
  display:flex;align-items:flex-end;padding:18px;color:var(--tv-muted);
  font:500 11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.tv-media img,.tv-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tv-media--dark{background-image:repeating-linear-gradient(135deg,#1b1b1b 0 14px,#232323 14px 28px);color:#6f6f6f}
.tv-media--r16{border-radius:16px}

/* ---------- Hero ---------- */
.tv-hero{background:#fff}
.tv-hero__grid{display:grid;gap:32px;align-items:center;padding-top:34px;padding-bottom:34px}
@media (min-width:900px){.tv-hero__grid{grid-template-columns:1fr 1fr;gap:64px;padding-top:72px;padding-bottom:76px}}
.tv-hero__flag{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--tv-green)}
.tv-hero__dot{width:8px;height:8px;border-radius:100px;background:var(--tv-green);display:inline-block}
.tv-hero h1{margin-top:20px}
.tv-hero__lead{margin-top:22px;max-width:470px}
.tv-hero__stats{display:flex;gap:24px;margin-top:34px;padding-top:24px;border-top:1px solid var(--tv-line)}
@media (min-width:900px){.tv-hero__stats{gap:34px;margin-top:44px;padding-top:26px}}
.tv-hero__mosaic{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (min-width:900px){.tv-hero__mosaic{gap:14px}}
.tv-hero__mosaic .tv-media:first-child{grid-row:span 2;min-height:320px}
@media (min-width:900px){.tv-hero__mosaic .tv-media:first-child{min-height:560px}
  .tv-hero__mosaic .tv-media:not(:first-child){min-height:273px}}
.tv-hero__mosaic .tv-media:not(:first-child){min-height:154px}

/* Hero A — video a pantalla */
.tv-hero--video{position:relative;min-height:560px;background:var(--tv-carbon);color:#fff;
  display:flex;align-items:flex-end;overflow:hidden}
@media (min-width:900px){.tv-hero--video{height:720px}}
.tv-hero--video .tv-hero__bg{position:absolute;inset:0}
.tv-hero--video .tv-hero__bg img,.tv-hero--video .tv-hero__bg video{width:100%;height:100%;object-fit:cover}
.tv-hero--video .tv-hero__bg .tv-media{height:100%;border-radius:0}
.tv-hero__video{display:block;background:#121212}
.tv-hero--video .tv-hero__veil{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(18,18,18,.55) 0%,rgba(18,18,18,.9) 100%)}
@media (min-width:900px){.tv-hero--video .tv-hero__veil{
  background:linear-gradient(90deg,rgba(18,18,18,.92) 0%,rgba(18,18,18,.55) 48%,rgba(18,18,18,.15) 100%)}}
.tv-hero--video .tv-hero__body{position:relative;width:100%;max-width:var(--tv-max);margin:0 auto;
  padding:0 var(--tv-pad) 44px}
@media (min-width:900px){.tv-hero--video .tv-hero__body{padding-bottom:84px}}
.tv-hero--video .tv-hero__inner{max-width:640px}
.tv-pill{display:inline-block;background:var(--tv-green);color:#fff;font-size:12px;font-weight:700;
  line-height:1;letter-spacing:.12em;text-transform:uppercase;padding:10px 15px;border-radius:100px}

/* Hero B — verde */
.tv-hero--green{background:var(--tv-green);color:#fff}
.tv-hero--green .tv-lead{color:rgba(255,255,255,.92)}

/* ---------- Marquee ---------- */
.tv-marquee{overflow:hidden;background:var(--tv-carbon);color:#fff;padding:14px 0}
.tv-marquee__track{display:flex;gap:26px;width:max-content;animation:tvMarquee 26s linear infinite;
  font-family:var(--tv-display);font-weight:400;font-size:13px;line-height:1;letter-spacing:.04em;
  text-transform:uppercase;white-space:nowrap}
@media (min-width:900px){.tv-marquee{padding:16px 0}.tv-marquee__track{gap:34px;font-size:15px}}
.tv-marquee__sep{color:var(--tv-green)}
@keyframes tvMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- Bloques de dos columnas ---------- */
.tv-split{display:grid;gap:32px;align-items:start}
@media (min-width:900px){.tv-split{grid-template-columns:.9fr 1.1fr;gap:64px}}
.tv-split--center{align-items:center}
.tv-split--media{grid-template-columns:1fr}
@media (min-width:900px){.tv-split--media{grid-template-columns:1.15fr .85fr}}
.tv-split--reviews{grid-template-columns:1fr}
@media (min-width:900px){.tv-split--reviews{grid-template-columns:.75fr 1.25fr;gap:56px}}
.tv-block-head h2{margin-top:16px}
.tv-block-head p{margin-top:18px;max-width:440px}

/* ---------- Tarjetas numeradas ---------- */
.tv-cards{display:grid;gap:12px}
@media (min-width:900px){.tv-cards{gap:14px}}
.tv-card-num{background:var(--tv-mist);border-radius:20px;padding:24px 24px;display:grid;
  grid-template-columns:48px 1fr;gap:14px;align-items:start}
@media (min-width:900px){.tv-card-num{border-radius:24px;padding:30px 32px;grid-template-columns:64px 1fr;gap:18px}}
.tv-card-num__n{font-family:var(--tv-display);font-weight:400;font-size:26px;line-height:1;color:var(--tv-green)}
@media (min-width:900px){.tv-card-num__n{font-size:30px}}
.tv-card-num__t{font-weight:800;font-size:17px;line-height:1.25}
@media (min-width:900px){.tv-card-num__t{font-size:20px}}
.tv-card-num__d{margin-top:8px;font-size:14px;line-height:1.65;color:var(--tv-text-3)}
@media (min-width:900px){.tv-card-num__d{font-size:15px;margin-top:9px}}

/* ---------- Bloque verde (grupos / CTA) ---------- */
.tv-panel{border-radius:26px;padding:32px 24px;display:grid;gap:28px}
@media (min-width:900px){.tv-panel{border-radius:32px;padding:56px;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}}
.tv-panel--green{background:var(--tv-green);color:#fff}
.tv-panel--dark{background:var(--tv-carbon);color:#fff}
.tv-panel--mist{background:var(--tv-mist)}
.tv-panel--green .tv-lead,.tv-panel--dark .tv-lead{color:rgba(255,255,255,.92)}
.tv-panel h2{margin-top:16px}
.tv-panel p{margin-top:18px;max-width:520px}
.tv-panel .tv-btn{margin-top:26px}
.tv-chips{display:grid;gap:10px}
.tv-chip-line{background:rgba(255,255,255,.14);border-radius:16px;padding:16px 20px;font-weight:600;
  font-size:14px;line-height:1.4}
@media (min-width:900px){.tv-chip-line{padding:20px 24px;font-size:15px}}

/* ---------- Galeria ---------- */
.tv-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.tv-head-row__note{font-size:14px;line-height:1.6;color:var(--tv-muted);max-width:320px}
@media (min-width:900px){.tv-head-row__note{text-align:right}}
/* Movil: 1 pieza ancha 16:10 + 5 cuadradas en dos columnas (referencia movil) */
/* El mosaico se adapta a la foto, no la foto al mosaico. Cada pieza lleva la
   orientacion real de su archivo (tv-gal--v / tv-gal--h, que pone
   tv_gallery_item), asi que un vertical de 2:3 se ve vertical en movil y en
   escritorio. El mosaico anterior forzaba tres piezas a 2,88:1 y cualquier
   foto de personas salia decapitada. */
.tv-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:20px;grid-auto-flow:row dense}
.tv-gallery .tv-media{border-radius:18px;grid-column:span 2;aspect-ratio:3/2}
.tv-gallery .tv-gal--h{grid-column:span 2;aspect-ratio:3/2}
.tv-gallery .tv-gal--v{grid-column:span 1;aspect-ratio:2/3}
/* Escritorio: cuatro columnas. Un apaisado ocupa dos y un vertical una, de modo
   que cada fila cuadra como 2+1+1 o 2+2 sin huecos. */
@media (min-width:900px){
  /* Cinco columnas: con 3 apaisadas (2 columnas cada una) y 4 verticales (1) salen
     10 unidades, o sea dos filas exactas. El empaquetado denso cierra cualquier
     hueco si el reparto de orientaciones cambia. */
  .tv-gallery{grid-template-columns:repeat(5,1fr);gap:12px;margin-top:32px;grid-auto-flow:row dense}
  .tv-gallery .tv-media{border-radius:22px}
}

/* ---------- Resenas ---------- */
.tv-reviews{border:1.5px dashed #d8d8d8;border-radius:24px;padding:24px;background:#fafafa;text-align:center}
@media (min-width:900px){.tv-reviews{padding:36px}}
.tv-reviews__note{font:500 12px/1.7 ui-monospace,monospace;color:var(--tv-muted)}
.tv-reviews__ph{margin-top:18px;display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:700px){.tv-reviews__ph{grid-template-columns:repeat(3,1fr)}}
.tv-reviews__ph div{height:150px;border-radius:16px;background:#F0F0F0}

/* ---------- Destinos ---------- */
.tv-dest{display:grid;gap:14px;margin-top:24px;grid-template-columns:1fr}
@media (min-width:700px){.tv-dest{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:32px}}
.tv-dest__card{border:1px solid var(--tv-border-2);border-radius:22px;overflow:hidden;background:#fff;
  display:flex;flex-direction:column;transition:box-shadow .2s ease,transform .2s ease}
.tv-dest__card:hover{box-shadow:0 14px 40px rgba(0,0,0,.08);transform:translateY(-2px)}
.tv-dest__card .tv-media{border-radius:0;min-height:180px}
.tv-dest__body{padding:20px 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.tv-dest__t{font-weight:800;font-size:19px;line-height:1.2;color:var(--tv-carbon)}
.tv-dest__d{font-size:14px;line-height:1.6;color:var(--tv-text-3)}
.tv-dest__card .tv-btn{margin-top:auto;align-self:flex-start}

/* ---------- Timeline (Malta) ---------- */
.tv-timeline{display:grid;gap:12px;margin-top:24px}
@media (min-width:900px){.tv-timeline{grid-template-columns:repeat(4,1fr);gap:14px;margin-top:32px}}
.tv-timeline__item{background:var(--tv-mist);border-radius:20px;padding:22px 24px}
.tv-timeline__h{font-weight:800;font-size:16px;line-height:1.3;color:var(--tv-carbon)}
.tv-timeline__d{margin-top:8px;font-size:14px;line-height:1.6;color:var(--tv-text-3)}

/* ---------- Ventajas B2B ---------- */
.tv-grid-4{display:grid;gap:12px;margin-top:24px;grid-template-columns:1fr}
@media (min-width:700px){.tv-grid-4{grid-template-columns:repeat(2,1fr);gap:14px;margin-top:32px}}
@media (min-width:1100px){.tv-grid-4{grid-template-columns:repeat(4,1fr)}}
.tv-feature{background:var(--tv-mist);border-radius:20px;padding:24px}
.tv-feature__t{font-weight:800;font-size:17px;line-height:1.3}
.tv-feature__d{margin-top:9px;font-size:14px;line-height:1.6;color:var(--tv-text-3)}
.tv-partners{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:24px}
@media (min-width:700px){.tv-partners{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1100px){.tv-partners{grid-template-columns:repeat(6,1fr)}}
/* Los logos altos (Gianpula, Move It!) tocaban antes el tope de 56px de alto y
   quedaban diminutos al lado de los apaisados, que llenaban el ancho. Con mas
   alto disponible y un tope de ancho, todos pesan parecido en la fila. */
.tv-partners .tv-media{border-radius:16px;min-height:156px;align-items:center;justify-content:center;padding:12px}
.tv-partners .tv-media img{position:static;object-fit:contain;max-height:112px;max-width:88%}
.tv-partners .tv-media a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.tv-partners .tv-media a img{transition:transform .3s cubic-bezier(.22,.61,.36,1)}
.tv-partners .tv-media a:hover img{transform:scale(1.04)}

/* ---------- FAQ ---------- */
.tv-faq{display:grid;gap:10px;margin-top:24px}
@media (min-width:900px){.tv-faq{margin-top:0}}
.tv-faq__item{border:1px solid var(--tv-border-2);border-radius:18px;background:#fff;overflow:hidden}
.tv-faq__q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 22px;text-align:left;font-weight:700;font-size:16px;line-height:1.35}
.tv-faq__q::after{content:"+";font-family:var(--tv-display);font-size:20px;color:var(--tv-green);flex:none;
  transition:transform .2s ease}
.tv-faq__item.is-open .tv-faq__q::after{transform:rotate(45deg)}
.tv-faq__a{padding:0 22px 22px;font-size:15px;line-height:1.65;color:var(--tv-text-3)}
.tv-faq__item:not(.is-open) .tv-faq__a{display:none}

/* ---------- Formulario ---------- */
.tv-form{background:var(--tv-mist);border-radius:26px;padding:24px}
@media (min-width:900px){.tv-form{border-radius:32px;padding:40px}}
.tv-field{margin-bottom:16px}
.tv-field > label{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--tv-muted);margin-bottom:8px}
.tv-field input,.tv-field textarea{width:100%;background:#fff;border:1.5px solid var(--tv-border);
  border-radius:16px;padding:16px 18px;font:500 15px/1.5 var(--tv-body);color:var(--tv-carbon)}
.tv-field textarea{min-height:130px;resize:vertical}
.tv-field input:focus,.tv-field textarea:focus{outline:none;border-color:var(--tv-green)}
.tv-sizes{display:flex;gap:10px;flex-wrap:wrap}
.tv-size{flex:1;min-width:92px;min-height:48px;display:flex;align-items:center;justify-content:center;
  background:#fff;border:1.5px solid var(--tv-border);border-radius:100px;font-weight:700;font-size:14px;
  color:var(--tv-carbon);cursor:pointer;transition:.15s ease}
.tv-size input{position:absolute;opacity:0;pointer-events:none}
.tv-size:has(input:checked){background:var(--tv-green);border-color:var(--tv-green);color:#fff}
.tv-size:hover{border-color:var(--tv-green)}
.tv-form .tv-btn{width:100%;margin-top:8px}
.tv-note{margin-top:14px;font-size:12px;line-height:1.6;color:var(--tv-muted)}
.tv-alert{margin-top:16px;border-radius:16px;padding:16px 18px;font-weight:600;font-size:14px;line-height:1.5}
.tv-alert--error{background:#FDECEC;border:1.5px solid #f3c2c2;color:#a12626}
.tv-alert--ok{background:#EAF9EF;border:1.5px solid #bfe9cd;color:#147a34}
.tv-hp{position:absolute;left:-9999px}
.tv-contact-data{margin-top:24px;font-size:15px;line-height:1.9;color:var(--tv-text-2)}
.tv-contact-data a{color:var(--tv-carbon)}
.tv-contact-data a:hover{color:var(--tv-green)}

/* ---------- Footer ---------- */
.tv-footer{margin-top:var(--tv-sec);background:var(--tv-green);color:#fff}
.tv-footer a{color:rgba(255,255,255,.92)}
.tv-footer a:hover{color:#fff;text-decoration:underline}
.tv-footer__grid{display:grid;gap:28px;padding-top:40px;padding-bottom:32px;grid-template-columns:1fr}
@media (min-width:700px){.tv-footer__grid{grid-template-columns:1fr 1fr;gap:40px;
  padding-top:64px;padding-bottom:48px}}
.tv-footer__t{font-weight:800;font-size:13px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:14px;
  color:rgba(255,255,255,.72)}
.tv-footer__list li{margin-bottom:10px;font-weight:600;font-size:15px}
.tv-footer__about{font-size:14px;line-height:1.65;color:rgba(255,255,255,.9);margin-top:14px;max-width:320px}
.tv-footer__logo{display:flex;align-items:center;gap:10px}
.tv-footer__logo .tv-logo__ph{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.5)}
.tv-footer__logo img{height:36px;width:auto}
.tv-footer__legal{border-top:1px solid rgba(255,255,255,.25)}
.tv-footer__legal .tv-wrap{display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;
  padding-top:18px;padding-bottom:18px;font-size:12px;color:rgba(255,255,255,.85)}

/* ---------- Contenido editorial (landings y blog) ---------- */
.tv-prose{max-width:760px;font-size:17px;line-height:1.75;color:var(--tv-text-2)}
.tv-prose h2{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;color:var(--tv-carbon);
  font-size:clamp(1.6rem,3vw,2.25rem);line-height:1.05;letter-spacing:-.02em;margin:44px 0 16px}
.tv-prose h3{font-weight:800;color:var(--tv-carbon);font-size:1.2rem;line-height:1.3;margin:32px 0 12px}
.tv-prose p{margin:0 0 18px}
.tv-prose ul,.tv-prose ol{margin:0 0 18px;padding-left:22px}
.tv-prose ul{list-style:disc}.tv-prose ol{list-style:decimal}
.tv-prose li{margin-bottom:8px}
.tv-prose img{border-radius:20px;margin:24px 0}
.tv-prose blockquote{margin:24px 0;padding:18px 22px;background:var(--tv-mist);border-radius:18px;
  border-left:4px solid var(--tv-green);color:var(--tv-carbon);font-weight:600}
.tv-prose table{width:100%;border-collapse:collapse;margin:24px 0;font-size:15px}
.tv-prose th,.tv-prose td{border:1px solid var(--tv-border);padding:12px 14px;text-align:left}
.tv-prose th{background:var(--tv-mist);font-weight:700}
.tv-page-head{padding-top:40px}
@media (min-width:900px){.tv-page-head{padding-top:72px}}
.tv-page-head h1{margin-top:16px}
.tv-page-head p{margin-top:18px;max-width:640px}
.tv-postlist{display:grid;gap:16px;grid-template-columns:1fr;margin-top:32px}
@media (min-width:700px){.tv-postlist{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.tv-postlist{grid-template-columns:repeat(3,1fr)}}
.tv-postcard{border:1px solid var(--tv-border-2);border-radius:22px;overflow:hidden;background:#fff}
.tv-postcard:hover{box-shadow:0 14px 40px rgba(0,0,0,.08)}
.tv-postcard__body{padding:20px 22px 24px}
.tv-postcard__t{font-weight:800;font-size:18px;line-height:1.3;color:var(--tv-carbon)}
.tv-postcard__x{margin-top:10px;font-size:14px;line-height:1.6;color:var(--tv-text-3)}
.tv-pagination{display:flex;gap:8px;flex-wrap:wrap;margin-top:32px}
.tv-pagination .page-numbers{display:inline-flex;min-width:44px;min-height:44px;align-items:center;
  justify-content:center;border-radius:100px;border:1.5px solid var(--tv-border);color:var(--tv-carbon);
  font-weight:700;padding:0 14px}
.tv-pagination .page-numbers.current{background:var(--tv-green);border-color:var(--tv-green);color:#fff}

/* ---------- Animaciones ---------- */
.tv-reveal{opacity:0;transform:translateY(18px)}
.tv-reveal.tv-in{animation:tvFadeUp .6s cubic-bezier(.22,.61,.36,1) forwards}
@keyframes tvFadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){
  .tv-reveal{opacity:1!important;transform:none!important}
  .tv-reveal.tv-in{animation:none!important}
  .tv-marquee__track{animation:none!important}
}

/* ---------- Ajustes finos de cabecera en pantallas pequenas ---------- */
.tv-logo__short{display:none}
@media (max-width:479px){
  .tv-logo__full{display:none}
  .tv-logo__short{display:inline}
  .tv-header__inner{gap:8px;padding:12px 16px}
  .tv-header__cta{gap:6px}
  .tv-header__btn{padding:12px 13px;font-size:11px}
  .tv-icon-btn{width:44px;height:44px}
  .tv-burger{width:44px;height:44px}
  .tv-logo{gap:8px}
  .tv-logo__ph{width:30px;height:30px}
  .tv-logo__txt{font-size:12px}
}
@media (max-width:359px){
  .tv-header__btn{display:none}
}

/* Radios del selector de tamano de grupo */
.tv-field input[type="radio"],.tv-field input[type="checkbox"]{width:auto}
.tv-size{position:relative;overflow:hidden}
.tv-size input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.tv-size.is-on{background:var(--tv-green);border-color:var(--tv-green);color:#fff}

/* Chips de tamano: ganan al estilo generico de .tv-field > label */
.tv-field .tv-size{display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;
  letter-spacing:0;text-transform:none;color:var(--tv-carbon);margin-bottom:0}
.tv-field .tv-size.is-on{color:#fff}

/* Cuando el hueco ya tiene imagen, fuera el patron de placeholder */
.tv-media--filled{background-image:none;background:var(--tv-mist);padding:0}
.tv-partners .tv-media{background:#fff;border:1px solid var(--tv-border-2);padding:14px}
.tv-partners .tv-media--filled{background:#fff}

/* Hero de vídeo: titular más largo, se ajusta mejor en pantallas estrechas */
.tv-hero--video .tv-h1{font-size:clamp(2.2rem,11.5vw,5.75rem)}
@media (min-width:900px){.tv-hero--video .tv-h1{font-size:clamp(3.5rem,6.2vw,5.25rem)}}
.tv-hero--video .tv-hero__inner{padding-right:4px}

/* ---------- Catálogo de actividades (Malta) ---------- */
.tv-act-group{margin-top:32px}
@media (min-width:900px){.tv-act-group{margin-top:44px}}
.tv-act-group__t{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;letter-spacing:-.01em;
  font-size:clamp(1.1rem,2vw,1.5rem);line-height:1.1;color:var(--tv-carbon);
  padding-bottom:12px;border-bottom:1px solid var(--tv-border-2)}
.tv-act-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:16px}
@media (min-width:640px){.tv-act-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.tv-act-grid{grid-template-columns:repeat(4,1fr);gap:14px}}
.tv-act{border:1px solid var(--tv-border-2);border-radius:20px;overflow:hidden;background:#fff;display:flex;
  flex-direction:column;transition:box-shadow .2s ease,transform .2s ease}
.tv-act:hover{box-shadow:0 14px 40px rgba(0,0,0,.08);transform:translateY(-2px)}
.tv-act__img{border-radius:0;aspect-ratio:4/3}
.tv-act__body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}
.tv-act__t{font-weight:800;font-size:16px;line-height:1.25;color:var(--tv-carbon)}
.tv-act__d{font-size:13.5px;line-height:1.55;color:var(--tv-text-3)}
.tv-act__cta{margin-top:auto;padding-top:8px;font-weight:700;font-size:13px;color:var(--tv-green)}
.tv-act__cta::after{content:" →"}

/* =========================================================================
   Dinamismo y jerarquía de CTA (revisión UI/UX 18/08/2026)
   ========================================================================= */

/* --- Botones: foco nítido, pulsación con respuesta y elevación en el primario --- */
.tv-btn{transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .12s ease}
.tv-btn:active{transform:translateY(1px) scale(.99)}
.tv-btn--primary{box-shadow:0 6px 18px rgba(36,189,79,.28)}
.tv-btn--primary:hover{box-shadow:0 10px 26px rgba(36,189,79,.34)}
.tv-btn--light{box-shadow:0 6px 18px rgba(0,0,0,.10)}
.tv-btn--light:hover{box-shadow:0 10px 26px rgba(0,0,0,.14)}
.tv-btn:focus-visible,.tv-icon-btn:focus-visible,.tv-act:focus-within,.tv-dest__card:focus-visible{
  outline:3px solid var(--tv-carbon);outline-offset:3px}
.tv-btn--primary:focus-visible,.tv-header__btn:focus-visible{outline-color:var(--tv-carbon)}
.tv-btn--ghost-light:focus-visible,.tv-panel--dark .tv-btn:focus-visible,.tv-panel--green .tv-btn:focus-visible{outline-color:#fff}

/* --- Enlace "ver más": deja de competir con los botones --- */
.tv-link-more{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:15px;
  color:var(--tv-carbon);min-height:44px;transition:color .2s ease}
.tv-link-more::after{content:"→";transition:transform .2s ease}
.tv-link-more:hover{color:var(--tv-green)}
.tv-link-more:hover::after{transform:translateX(4px)}

/* --- Cabecera: se compacta al hacer scroll --- */
.tv-header{transition:box-shadow .25s ease,background .25s ease}
.tv-header.is-scrolled{box-shadow:0 6px 24px rgba(0,0,0,.07)}
.tv-header.is-scrolled .tv-header__inner{padding-top:9px;padding-bottom:9px}
.tv-header__inner{transition:padding .25s ease}

/* --- Botón de WhatsApp: estado hover claro --- */
.tv-icon-btn{transition:border-color .2s ease,background .2s ease,transform .12s ease}
.tv-icon-btn:hover{background:rgba(36,189,79,.10);border-color:var(--tv-green)}
.tv-icon-btn:active{transform:scale(.96)}

/* --- Tarjetas: la foto respira al pasar por encima --- */
.tv-dest__card .tv-media,.tv-act__img{overflow:hidden}
.tv-dest__card .tv-media img,.tv-act__img img{transition:transform .45s cubic-bezier(.22,.61,.36,1)}
.tv-dest__card:hover .tv-media img,.tv-act:hover .tv-act__img img{transform:scale(1.05)}
.tv-act__cta{transition:color .2s ease}
.tv-act__cta::after{display:inline-block;transition:transform .2s ease}
.tv-act:hover .tv-act__cta::after{transform:translateX(4px)}

/* --- Entradas escalonadas: los bloques de tarjetas aparecen en cascada --- */
.tv-stagger>*{opacity:0;transform:translateY(14px)}
.tv-stagger.tv-in>*{animation:tvFadeUp .45s cubic-bezier(.22,.61,.36,1) forwards;
  animation-delay:calc(var(--i,0) * 55ms)}

/* --- Marquee: se detiene al pasar el ratón --- */
.tv-marquee:hover .tv-marquee__track{animation-play-state:paused}

/* --- Indicador de scroll del hero --- */
.tv-scrollcue{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);width:26px;height:42px;
  border:2px solid rgba(255,255,255,.55);border-radius:100px;display:none;align-items:flex-start;
  justify-content:center;padding-top:7px;z-index:2}
@media (min-width:900px){.tv-scrollcue{display:flex}}
.tv-scrollcue span{width:4px;height:8px;border-radius:4px;background:#fff;animation:tvCue 1.6s ease-in-out infinite}
.tv-scrollcue:hover{border-color:#fff}
@keyframes tvCue{0%,100%{transform:translateY(0);opacity:.9}50%{transform:translateY(12px);opacity:.35}}

/* --- Contadores --- */
.tv-stat[data-count]{font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  .tv-stagger>*{opacity:1!important;transform:none!important;animation:none!important}
  .tv-dest__card:hover .tv-media img,.tv-act:hover .tv-act__img img{transform:none}
  .tv-scrollcue span{animation:none}
  .tv-btn:active{transform:none}
}

/* Si el contenedor escalona a sus hijos, no se desvanece él mismo */
.tv-reveal.tv-stagger{opacity:1;transform:none;animation:none!important}

/* --- Contraste: el gris de notas y etiquetas no llegaba a AA sobre blanco --- */
:root{--tv-muted:#6b6b6b}
.tv-stat-label{color:#6b6b6b}
.tv-head-row__note{color:#6b6b6b}
.tv-note{color:#6b6b6b}
.tv-reviews__note{color:#6b6b6b}

/* --- Anclas: que la cabecera fija no tape el destino --- */
:target,[id]{scroll-margin-top:96px}

/* =========================================================================
   Contraste de marca (18/08/2026, decisión de dirección):
   el verde Active se mantiene como color de fondo, pero el texto que va
   encima pasa a Deep Carbon (7,55:1) y el verde de TEXTO sobre blanco se
   oscurece a #17853A (4,72:1). El verde #24BD4F sigue intacto en fondos,
   iconos y detalles.
   ========================================================================= */
:root{--tv-green-text:#24BD4F} /* v1.4.1: vuelta al verde de marca original en textos */

/* Texto verde sobre blanco */
a{color:var(--tv-green-text)}
a:hover{color:#0F6E2C}
.tv-eyebrow{color:var(--tv-green-text)}
.tv-hero__flag{color:var(--tv-green-text)}
.tv-stat{color:var(--tv-green-text)}
.tv-card-num__n{color:var(--tv-green-text)}
.tv-act__cta{color:var(--tv-green-text)}
.tv-faq__q::after{color:var(--tv-green-text)}
.tv-link-more:hover{color:var(--tv-green-text)}
.tv-contact-data a:hover{color:var(--tv-green-text)}
.tv-nav a:hover,.tv-nav .current-menu-item>a{color:var(--tv-green-text)}
.tv-mobile-nav a:hover{color:var(--tv-green-text)}
.tv-green{color:var(--tv-green-text)}
.tv-hero--video .tv-green,.tv-panel--dark .tv-green,.tv-marquee .tv-green{color:var(--tv-green)}

/* Texto oscuro sobre fondo verde */
.tv-btn--primary{background:var(--tv-green);color:var(--tv-carbon)}
.tv-btn--primary:hover{background:var(--tv-green-hover);color:var(--tv-carbon)}
.tv-header__btn{background:var(--tv-green);color:var(--tv-carbon)}
.tv-header__btn:hover{background:var(--tv-green-hover);color:var(--tv-carbon)}
.tv-pill{background:var(--tv-green);color:var(--tv-carbon)}
.tv-panel--green{color:var(--tv-carbon)}
.tv-panel--green .tv-lead{color:rgba(18,18,18,.82)}
.tv-panel--green .tv-eyebrow--light{color:rgba(18,18,18,.72)}
.tv-panel--green .tv-chip-line{background:rgba(255,255,255,.42);color:var(--tv-carbon)}
.tv-hero--green{color:var(--tv-carbon)}
.tv-hero--green .tv-lead{color:rgba(18,18,18,.82)}
.tv-hero--green .tv-eyebrow--light{color:rgba(18,18,18,.72)}
.tv-hero--green .tv-btn--ghost-light{border-color:rgba(18,18,18,.5);color:var(--tv-carbon)}
.tv-panel--green .tv-btn--ghost-light{border-color:rgba(18,18,18,.45);color:var(--tv-carbon)}
.tv-panel--green .tv-btn--ghost-light:hover{background:rgba(18,18,18,.08);color:var(--tv-carbon)}
.tv-size:has(input:checked),.tv-size.is-on{background:var(--tv-green);border-color:var(--tv-green);color:var(--tv-carbon)}
.tv-field .tv-size.is-on{color:var(--tv-carbon)}

/* Pie verde con texto oscuro */
.tv-footer{color:var(--tv-carbon)}
.tv-footer a{color:rgba(18,18,18,.86)}
.tv-footer a:hover{color:var(--tv-carbon)}
.tv-footer__t{color:rgba(18,18,18,.62)}
.tv-footer__about{color:rgba(18,18,18,.82)}
.tv-footer__legal{border-top-color:rgba(18,18,18,.2)}
.tv-footer__legal .tv-wrap{color:rgba(18,18,18,.75)}
.tv-footer__logo .tv-logo__ph{background:rgba(18,18,18,.12);border-color:rgba(18,18,18,.4)}

/* El foco sobre verde se ve mejor en oscuro */
.tv-panel--green .tv-btn:focus-visible,.tv-footer a:focus-visible{outline-color:var(--tv-carbon)}

/* --- Tarjetas de enlace interno (SEO) --- */
.tv-linkcards{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:800px){.tv-linkcards{grid-template-columns:1fr 1fr;gap:16px}}
.tv-linkcard{display:block;background:var(--tv-mist);border-radius:22px;padding:24px 26px;color:var(--tv-carbon);
  border:1px solid transparent;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}
.tv-linkcard:hover{border-color:var(--tv-green);transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.07);color:var(--tv-carbon)}
.tv-linkcard__k{display:block;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tv-green-text)}
.tv-linkcard__t{display:block;margin-top:10px;font-weight:800;font-size:19px;line-height:1.25}
.tv-linkcard__t::after{content:" →"}
.tv-linkcard__d{display:block;margin-top:8px;font-size:14px;line-height:1.6;color:var(--tv-text-3)}
.tv-panel__links{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px 20px;font-size:14px;font-weight:700}
.tv-panel--green .tv-panel__links a{color:rgba(18,18,18,.78);text-decoration:underline;text-underline-offset:3px}
.tv-panel--green .tv-panel__links a:hover{color:var(--tv-carbon)}

/* =========================================================================
   Ajustes de la revisión estética (18/08/2026)
   ========================================================================= */

/* --- 1. Escala única de radios --- */
:root{--tv-r-sm:16px;--tv-r-md:22px;--tv-r-lg:28px}
@media (min-width:900px){:root{--tv-r-lg:32px}}
.tv-card-num,.tv-timeline__item,.tv-feature{border-radius:var(--tv-r-md)}
.tv-dest__card,.tv-act,.tv-linkcard,.tv-postcard{border-radius:var(--tv-r-md)}
.tv-gallery .tv-media,.tv-media{border-radius:var(--tv-r-md)}
.tv-panel,.tv-form,.tv-reviews{border-radius:var(--tv-r-lg)}
.tv-chip-line,.tv-partners .tv-media,.tv-field input,.tv-field textarea,.tv-media--r16{border-radius:var(--tv-r-sm)}
.tv-faq__item{border-radius:var(--tv-r-sm)}
.tv-dest__card .tv-media,.tv-act__img{border-radius:0}
.tv-hero__mosaic .tv-media{border-radius:var(--tv-r-lg)}

/* --- 2. Hero de vídeo algo más bajo: la prueba social entra antes --- */
@media (min-width:900px){.tv-hero--video{height:min(620px,78vh)}}
@media (min-width:1600px){.tv-hero--video{height:660px}}

/* --- 3. Prueba social bajo el hero --- */
.tv-proof{background:var(--tv-mist);border-bottom:1px solid var(--tv-border-2)}
.tv-proof__list{display:grid;grid-template-columns:repeat(2,1fr);gap:18px 12px;
  padding-top:26px;padding-bottom:26px;margin:0;list-style:none}
@media (min-width:900px){.tv-proof__list{grid-template-columns:repeat(4,1fr);gap:24px;padding-top:32px;padding-bottom:32px}}
.tv-proof__list li{display:flex;flex-direction:column;gap:4px}
.tv-proof__t{font-size:13px;font-weight:600;line-height:1.35;color:var(--tv-text-3)}
.tv-proof__head{padding-top:28px}
.tv-proof__widget{padding-bottom:28px}

/* --- 4. Galería con ampliación --- */
.tv-gal{position:relative;padding:0;border:0;cursor:zoom-in;display:block;width:100%;height:100%}
.tv-gal__zoom{position:absolute;right:10px;bottom:10px;width:34px;height:34px;border-radius:100px;
  background:rgba(255,255,255,.92);opacity:0;transform:scale(.9);transition:opacity .2s ease,transform .2s ease}
.tv-gal__zoom::before,.tv-gal__zoom::after{content:"";position:absolute;background:var(--tv-carbon)}
.tv-gal__zoom::before{left:11px;top:16px;width:12px;height:2px}
.tv-gal__zoom::after{left:16px;top:11px;width:2px;height:12px}
.tv-gal:hover .tv-gal__zoom,.tv-gal:focus-visible .tv-gal__zoom{opacity:1;transform:scale(1)}
.tv-lb{position:fixed;inset:0;z-index:120;background:rgba(10,10,10,.94);display:flex;align-items:center;
  justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .2s ease;
  /* visibility, no solo opacity: con opacity:0 los tres botones del visor
     seguian entrando en el orden de tabulacion siendo invisibles. */
  visibility:hidden}
.tv-lb.is-open{opacity:1;pointer-events:auto;visibility:visible}
.tv-lb__img{max-width:min(1200px,94vw);max-height:80vh;border-radius:var(--tv-r-md);object-fit:contain}
.tv-lb__cap{position:absolute;left:0;right:0;bottom:26px;text-align:center;color:#fff;font-size:14px;
  font-weight:600;padding:0 24px}
.tv-lb__btn{position:absolute;width:48px;height:48px;border-radius:100px;background:rgba(255,255,255,.14);
  color:#fff;font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;
  transition:background .2s ease}
.tv-lb__btn:hover{background:rgba(255,255,255,.28)}
.tv-lb__close{top:18px;right:18px}
.tv-lb__prev{left:14px;top:50%;transform:translateY(-50%)}
.tv-lb__next{right:14px;top:50%;transform:translateY(-50%)}
@media (max-width:599px){.tv-lb__prev{left:8px}.tv-lb__next{right:8px}}
body.tv-lb-open{overflow:hidden}
@media (prefers-reduced-motion:reduce){.tv-lb,.tv-gal__zoom{transition:none}}


/* ===== v1.4.1 =====================================================
   Verde de marca unificado en textos (#24BD4F) y doble CTA en las
   tarjetas de actividad de Malta.
   ================================================================= */
/* v1.11.0: un unico CTA en todas las actividades de Malta, centrado. */
.tv-act__cta,.tv-dest__body .tv-act__cta{display:block;margin-top:auto;padding-top:12px;text-align:center}
.tv-dest__body{display:flex;flex-direction:column;flex:1}
.tv-dest__body .tv-act__cta{padding-top:14px}

/* ===== v1.5.0 =====================================================
   Redes en la cabecera. En movil el CTA de presupuesto sale del
   header (la barra inferior fija ya lo lleva) y deja sitio a los
   iconos de WhatsApp, Instagram y TikTok.
   ================================================================= */
@media (max-width:899px){
  .tv-header__btn{display:none}
  .tv-header__cta{gap:8px}
}
@media (max-width:379px){
  .tv-icon-btn{width:40px;height:40px}
  .tv-burger{width:40px;height:40px}
  .tv-header__cta{gap:4px}
  .tv-header__inner{gap:6px;padding:12px 12px}
  .tv-logo__txt{display:none}
}
.tv-icon-btn svg{display:block}

/* ===== v1.6.0 =====================================================
   Iconos de contacto y redes junto al logotipo del pie, y slider de
   resenas de Google en lugar de la franja de cifras.
   ================================================================= */
.tv-footer__brand{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.tv-footer__social{display:flex;align-items:center;gap:8px}
.tv-footer__social .tv-icon-btn{width:40px;height:40px;background:#fff;border-color:transparent}
.tv-footer__social .tv-icon-btn:hover{background:#fff;border-color:var(--tv-carbon);transform:translateY(-2px)}
.tv-footer__social .tv-icon-btn:focus-visible{outline-color:var(--tv-carbon)}
@media (max-width:520px){
  .tv-footer__brand{gap:12px}
  .tv-footer__social .tv-icon-btn{width:44px;height:44px}
}
.tv-proof__widget{margin-top:18px}
.tv-proof__widget .ti-widget{margin:0!important}
.tv-footer__brand{gap:12px 16px}
@media (min-width:700px){.tv-footer__grid{grid-template-columns:1.7fr 1fr 1fr 1.1fr}}
.tv-footer__social .tv-icon-btn{width:38px;height:38px}
@media (max-width:520px){.tv-footer__social .tv-icon-btn{width:44px;height:44px}}

/* ===== v1.7.0 =====================================================
   Marca del pie: logotipo en blanco dentro de un circulo negro, para
   que dialogue con los botones circulares de redes.
   ================================================================= */
.tv-footer__logo{width:52px;height:52px;flex:none;border-radius:100px;background:var(--tv-carbon);
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.tv-footer__logo img{height:26px;width:auto;filter:invert(1) grayscale(1) brightness(2.2)}
.tv-footer__logo .tv-logo__ph{width:28px;height:28px;background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.6)}
.tv-footer__logo .tv-logo__txt{display:none}

/* ===== v1.7.0 · pagina de reservas (LatePoint) ==================== */
.tv-booking-head{padding-bottom:0}
.tv-booking-head .tv-h1{margin-top:14px;max-width:16ch}
.tv-booking-head .tv-lead{margin-top:16px;max-width:60ch}
.tv-booking-head__help{margin-top:14px;font-size:15px;color:var(--tv-text-2)}
.tv-booking-head__help a{font-weight:700}
.tv-booking{padding-top:28px}
.tv-booking .e-con,.tv-booking .e-con-inner,.tv-booking .elementor-widget-latepoint_book_form,
.tv-booking .latepoint-book-form-wrapper{max-width:1000px!important;margin-left:auto!important;margin-right:auto!important;width:100%!important}
.tv-booking .latepoint-booking-form-element{width:100%!important;max-width:760px!important;
  margin-left:auto!important;margin-right:auto!important;
  border-radius:var(--tv-r-lg)!important;overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.08)}
.tv-booking-head .tv-h1{font-size:clamp(2rem,4.6vw,3.2rem);max-width:22ch}
/* Logotipo del panel lateral: sin recorte cuadrado */
.latepoint-desc-media.img-w{background-size:contain!important;background-repeat:no-repeat!important;
  background-position:center!important;width:104px!important;height:112px!important}

/* ===== v1.8.0 · formularios B2B y de empleo ====================== */
.tv-panel__cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.tv-btn--ghost-light{border-color:rgba(255,255,255,.55);color:#fff}
.tv-btn--ghost-light:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.08)}
.tv-b2b-list{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:14px}
.tv-b2b-list li{display:grid;gap:2px;padding-left:16px;border-left:3px solid var(--tv-green)}
.tv-b2b-list strong{font-size:15px}
.tv-b2b-list span{font-size:15px;line-height:1.6;color:var(--tv-text-2)}
.tv-b2b-back{margin-top:24px;font-size:15px}
.tv-b2b-back a{font-weight:700}
.tv-opt{font-weight:500;color:var(--tv-text-2)}
.tv-field select{width:100%;padding:14px 16px;border:1.5px solid #e2e2e2;border-radius:var(--tv-r-sm);
  font:inherit;font-size:16px;background:#fff;color:var(--tv-text);appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23121212'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:22px}
.tv-field select:focus{outline:none;border-color:var(--tv-green)}
.tv-field input[type="file"]{width:100%;padding:12px 14px;border:1.5px dashed #cfcfcf;border-radius:var(--tv-r-sm);
  font:inherit;font-size:15px;background:#fafafa;cursor:pointer}
.tv-field input[type="file"]:focus{outline:none;border-color:var(--tv-green)}
.tv-field input[type="file"]::file-selector-button{margin-right:12px;padding:9px 14px;border:0;border-radius:100px;
  background:var(--tv-carbon);color:#fff;font:inherit;font-weight:700;font-size:13px;cursor:pointer}
.tv-center{text-align:center}
.tv-b2b-page .tv-split,.tv-job-page .tv-split{align-items:start}
.tv-b2b-page .tv-h1,.tv-job-page .tv-h1{font-size:clamp(2rem,4.2vw,3.2rem)}

/* ===== v1.9.0 ====================================================
   El hero es vertical: en escritorio el recorte se baja al 62% para
   encuadrar el barco y la gente, no los mastiles.
   ================================================================= */
@media (min-width:900px){
  .tv-hero--video .tv-hero__bg video,
  .tv-hero--video .tv-hero__bg img{object-position:center 62%}
}

/* ===== v1.10.0 · hero: foto en escritorio, video en movil ========= */
.tv-hero__desk{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 55%;display:none}
@media (min-width:900px){
  .tv-hero__desk{display:block}
  .tv-hero__video--mobile{display:none}
}

/* ===== v1.11.1 · entradas con transicion, no con animacion =========
   Con @keyframes, si la linea de tiempo del navegador no avanza (pestana
   en segundo plano, moviles que congelan animaciones, JS de terceros que
   bloquea el hilo), el elemento se queda congelado en el fotograma 0:
   opacidad 0. Es decir, contenido invisible de forma permanente.
   Con transiciones el estado final es una declaracion normal: si la
   transicion no llega a ejecutarse, el contenido se ve igualmente.
   ================================================================= */
.tv-reveal{opacity:0;transform:translateY(18px);
  transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
.tv-reveal.tv-in{opacity:1;transform:none;animation:none}

.tv-stagger>*{opacity:0;transform:translateY(14px);
  transition:opacity .45s cubic-bezier(.22,.61,.36,1),transform .45s cubic-bezier(.22,.61,.36,1);
  transition-delay:calc(var(--i,0) * 55ms)}
.tv-stagger.tv-in>*{opacity:1;transform:none;animation:none}

.tv-reveal.tv-stagger{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  .tv-reveal,.tv-stagger>*{opacity:1!important;transform:none!important;transition:none!important}
}

/* En movil no se oculta nada de entrada. La animacion de entrada es un
   adorno de escritorio; en telefono el riesgo de que algo se quede
   invisible (linea de tiempo congelada, JS bloqueado, navegador que
   ahorra bateria) supera con mucho al beneficio. */
@media (max-width:899px){
  .tv-reveal,.tv-stagger>*{opacity:1!important;transform:none!important;
    transition:none!important;animation:none!important}
}

/* ===== v1.13.0 · fachada de vídeo en las actividades de Malta =====
   La tarjeta muestra la foto propia con un boton de play encima. El
   iframe de YouTube solo se crea al pulsar: la pagina pesa lo mismo
   que con una foto normal.
   ================================================================= */
.tv-vid{border:0;padding:0;cursor:pointer;display:block;width:100%;position:relative;
  background:var(--tv-mist);appearance:none;text-align:left}
.tv-vid img{width:100%;height:100%;object-fit:cover;display:block}
.tv-vid::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.34),rgba(0,0,0,0) 46%);pointer-events:none}
.tv-vid__play{position:absolute;left:14px;bottom:14px;width:56px;height:56px;border-radius:100px;
  background:var(--tv-green);display:flex;align-items:center;justify-content:center;z-index:2;
  box-shadow:0 6px 20px rgba(0,0,0,.28);transition:transform .2s ease,box-shadow .2s ease}
.tv-vid__play::before{content:"";width:0;height:0;margin-left:4px;
  border-left:17px solid var(--tv-carbon);border-top:11px solid transparent;border-bottom:11px solid transparent}
.tv-vid:hover .tv-vid__play{transform:scale(1.08);box-shadow:0 10px 26px rgba(0,0,0,.34)}
.tv-vid:focus-visible{outline:3px solid var(--tv-green);outline-offset:3px}
@media (max-width:520px){.tv-vid__play{width:52px;height:52px;left:12px;bottom:12px}}

/* Visor del vídeo: vertical, dentro de la web, nunca sale a YouTube. */
.tv-vlb{position:fixed;inset:0;z-index:120;background:rgba(10,10,10,.94);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px}
.tv-vlb[hidden]{display:none}
/* El ancho ya incluye el limite de alto (calc), en vez de recortarlo con
   max-height: asi la caja nunca se deforma y el video no queda con bandas. */
.tv-vlb__box{width:min(92vw,1100px,calc(78vh * 16 / 9));aspect-ratio:16/9;height:auto;
  border-radius:var(--tv-r-md);overflow:hidden;background:#000;box-shadow:0 24px 70px rgba(0,0,0,.5)}
.tv-vlb__box--vert{height:min(78vh,760px,calc(92vw * 16 / 9));aspect-ratio:9/16;width:auto}
.tv-vlb__box iframe{width:100%;height:100%;border:0;display:block}
.tv-vlb__cap{color:#fff;font-size:14px;font-weight:600;margin:0;text-align:center;max-width:min(420px,92vw)}
.tv-vlb__close{position:absolute;top:16px;right:16px}

/* v1.14.0: los imprescindibles admiten vídeo con la misma mecanica. */
.tv-must__img{border-radius:0;aspect-ratio:4/3;min-height:0}
.tv-dest__card .tv-must__img{min-height:0}

/* ---------- v1.17.0 · confirmacion de formulario ---------- */
.tv-form-ok{
	text-align:center;
	display:flex;
	flex-direction:column;
	align-items:center;
	gap:.75rem;
	padding:2.5rem 1.5rem;
}
.tv-form-ok__check{
	display:grid;
	place-items:center;
	width:64px;
	height:64px;
	border-radius:50%;
	background:var(--tv-green,#24BD4F);
	color:#fff;
}
.tv-form-ok__title{
	margin:0;
	font-size:clamp(1.25rem,3.5vw,1.6rem);
	line-height:1.2;
}
.tv-form-ok__text{
	margin:0;
	max-width:34ch;
	opacity:.85;
}
.tv-form-ok__again{
	margin-top:.5rem;
	font-size:.9rem;
	text-decoration:underline;
	opacity:.7;
}
.tv-form-ok__again:hover,
.tv-form-ok__again:focus-visible{opacity:1}

/* Boton bloqueado mientras se envia: evita el doble clic que duplicaba leads. */
.tv-btn[data-tv-once][aria-disabled="true"]{
	opacity:.6;
	pointer-events:none;
	cursor:progress;
}

/* Precio publico de actividad (v1.31.0). El importe manda visualmente y la
   unidad va en gris: es lo que se lee de un vistazo en una retícula. */
.tv-precio{display:flex;align-items:baseline;gap:6px;margin:10px 0 2px;flex-wrap:wrap}
.tv-precio__v{font-family:var(--tv-display);font-weight:400;font-size:1.25rem;line-height:1;color:var(--tv-text)}
.tv-precio__u{font-size:12px;font-weight:600;color:var(--tv-muted)}

/* ===== v1.36.0 · ficha de actividad ============================== */
/* Migas de pan: solo texto, sin caja. Duplican la ruta que ya emite el
   BreadcrumbList y le dan al usuario la vuelta a /malta/ sin usar el atrás. */
.tv-crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  font-size:13px;font-weight:600;color:var(--tv-muted);margin-bottom:28px}
.tv-crumbs a{color:var(--tv-muted);text-decoration:none}
.tv-crumbs a:hover{color:var(--tv-text);text-decoration:underline}

/* Tabla de datos operativos. Es lo que el cliente pregunta por WhatsApp, así
   que va arriba y en formato consulta, no en prosa. */
.tv-datos{margin:28px 0 0;display:grid;gap:0;border-top:1px solid var(--tv-line)}
.tv-datos__row{display:grid;grid-template-columns:200px 1fr;gap:16px;
  padding:14px 0;border-bottom:1px solid var(--tv-line)}
.tv-datos__row dt{font-weight:700;color:var(--tv-muted);font-size:14px;margin:0}
.tv-datos__row dd{margin:0;color:var(--tv-text)}
@media (max-width:640px){
  .tv-datos__row{grid-template-columns:1fr;gap:4px}
}

/* Incluye / no incluye a dos columnas. */
.tv-incluye{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:32px}
.tv-lista{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:10px}
.tv-lista li{position:relative;padding-left:28px;line-height:1.5}
.tv-lista li::before{position:absolute;left:0;top:0;font-weight:700}
.tv-lista--si li::before{content:"✓";color:var(--tv-green,#24BD4F)}
.tv-lista--no li::before{content:"×";color:var(--tv-muted)}

.tv-nota{font-size:14px;color:var(--tv-muted)}

/* Opciones de salida de una misma actividad (v1.39.0). Existe porque hay
   productos con dos versiones que no son dos productos: la misma excursión de
   día o de atardecer. Separarlas en dos fichas duplicaria contenido. */
.tv-opciones{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:28px}
.tv-opcion{border:1px solid var(--tv-border);border-radius:var(--tv-radius);padding:24px;
  display:flex;flex-direction:column;gap:8px}
.tv-opcion__t{font-family:var(--tv-display);font-weight:400;text-transform:uppercase;
  font-size:1.15rem;line-height:1.15;margin:0}
.tv-opcion__k{font-size:12px;font-weight:700;color:var(--tv-green);text-transform:uppercase;letter-spacing:.04em}
.tv-opcion__d{margin:0;color:var(--tv-text-2);line-height:1.55}
.tv-opcion .tv-act__cta{margin-top:auto;align-self:flex-start}

/* Categoria a la que se ha llegado por enlace profundo (v1.40.0). Sin el
   resalte el usuario aterriza en mitad de una lista larga y no sabe por que. */
.tv-cat-destacada{position:relative;animation:tv-cat-pulso 2.4s ease-out 1}
@keyframes tv-cat-pulso{
  0%{box-shadow:0 0 0 0 rgba(36,189,79,.45)}
  40%{box-shadow:0 0 0 10px rgba(36,189,79,.12)}
  100%{box-shadow:0 0 0 0 rgba(36,189,79,0)}
}

/* ===== v1.43.0 · menú de dos niveles ============================== */
/* El submenú se abre con :hover y con :focus-within. Sin JS a propósito:
   funciona igual con ratón y con teclado y no hay estado que se quede
   colgado al navegar. Por debajo de 1000px manda el menú móvil. */
.tv-nav__list{display:flex;align-items:center;gap:30px;list-style:none;margin:0;padding:0}
.tv-nav__item{position:relative}
.tv-nav__item>a{display:inline-flex;align-items:center;gap:6px;padding:8px 0;min-height:24px;
  white-space:nowrap}
@media (min-width:1000px) and (max-width:1180px){.tv-nav__list{gap:20px;font-size:13px}}
.tv-nav__caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid currentColor;opacity:.55;transition:transform .15s ease}
.tv-nav__item:hover .tv-nav__caret,
.tv-nav__item:focus-within .tv-nav__caret{transform:rotate(180deg);opacity:1}

.tv-nav__sub{position:absolute;top:100%;left:-16px;min-width:238px;list-style:none;margin:0;
  padding:10px;background:#fff;border:1px solid var(--tv-border-2);border-radius:16px;
  box-shadow:0 18px 44px rgba(0,0,0,.11);opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .16s ease,transform .16s ease,visibility .16s;z-index:60}
.tv-nav__item:hover>.tv-nav__sub,
.tv-nav__item:focus-within>.tv-nav__sub{opacity:1;visibility:visible;transform:translateY(0)}
/* Puente invisible: sin esto el submenú se cierra al cruzar el hueco con el ratón. */
.tv-nav__item:has(>.tv-nav__sub)::after{content:"";position:absolute;left:0;right:0;top:100%;height:10px}
.tv-nav__subitem a{display:block;padding:9px 12px;border-radius:10px;font-weight:600;
  color:var(--tv-text-2);white-space:nowrap}
/* El primer enlace del desplegable es la propia pagina padre. Va separado con
   una linea porque si no, quien abre el desplegable no encuentra la forma de
   ir a /malta/ sin arriesgarse a pulsar el titulo y que se le cierre. */
.tv-nav__subitem:first-child a{font-weight:700;color:var(--tv-text)}
.tv-nav__subitem:first-child{padding-bottom:8px;margin-bottom:6px;
  border-bottom:1px solid var(--tv-border-2)}
.tv-nav__subitem a:hover,.tv-nav__subitem a:focus-visible{background:var(--tv-mist);color:var(--tv-text)}
.tv-nav__item.is-current>a{color:var(--tv-green-text)}
@media (prefers-reduced-motion:reduce){
  .tv-nav__sub,.tv-nav__caret{transition:none}
}

/* Submenú del menú móvil: lista plana con sangría, no un desplegable dentro
   de otro desplegable. */
.tv-mobile-nav__sub{padding-left:18px!important;font-size:15px;opacity:.82;
  border-left:2px solid rgba(18,18,18,.12);margin-left:2px}

/* v1.65.0: migas sobre fondo oscuro (agencias) */
.tv-crumbs--light,.tv-crumbs--light a{color:rgba(255,255,255,.82)}
.tv-crumbs--light a:hover{color:#fff}

/* v1.65.2: tarjetas del catalogo dentro de una ficha (Paceville) */
.tv-act-grid--2{max-width:760px;margin:24px 0}
@media (min-width:1100px){.tv-act-grid--2{grid-template-columns:repeat(2,1fr)}}

/* v1.65.4: las cifras de respaldo solo se ven si falla el widget de resenas.
   .tv-proof__list fija display:grid y anulaba el atributo hidden: en movil salian
   el widget y las cifras a la vez, repitiendo lo que ya dice la franja de arriba. */
.tv-proof__list[hidden]{display:none}

/* v1.65.5: tarjetas de «Elige tu viaje» con foto cuadrada a la izquierda */
.tv-linkcard--foto{display:grid;grid-template-columns:96px 1fr;gap:16px;align-items:center;padding:14px 18px 14px 14px}
.tv-linkcard__img{width:96px;height:96px;object-fit:cover;border-radius:16px;display:block;margin:0}
.tv-linkcard__img--top{object-position:top}
.tv-linkcard--foto .tv-linkcard__t{margin-top:6px;font-size:17px}
.tv-linkcard--foto .tv-linkcard__d{margin-top:4px;font-size:13.5px;line-height:1.5}
@media (min-width:800px){.tv-linkcard--foto{grid-template-columns:120px 1fr;gap:20px}.tv-linkcard__img{width:120px;height:120px}}

/* v1.65.7: en movil quedaba una linea clara de 1 px entre el hero de video y la franja. */
.tv-hero--video{overflow:hidden}
.tv-marquee{position:relative;z-index:1;margin-top:-2px}

/* v1.65.7: fotos de las tarjetas en 4:3 (no cuadradas): los carteles de
   Reggaeton Party, Boat Party o Blue Lagoon salian con las letras cortadas. */
.tv-linkcard--foto{grid-template-columns:128px 1fr}
.tv-linkcard__img{width:128px;height:96px}
@media (min-width:800px){.tv-linkcard--foto{grid-template-columns:160px 1fr}.tv-linkcard__img{width:160px;height:120px}}

/* v1.65.7: poster del hero movil como imagen (elemento LCP); el video va encima */
.tv-hero__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tv-hero--video .tv-hero__video--mobile{position:absolute;inset:0;background:transparent}
@media (min-width:900px){.tv-hero__poster{display:none}}

/* v1.65.8 · Carrusel de fotos (inc/galerias.php): altura fija, proporción original, sin recortes */
.tv-galeria{padding-top:8px;padding-bottom:8px}
.tv-carrusel{position:relative}
.tv-carrusel__pista{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px;outline-offset:4px}
.tv-carrusel__pista::-webkit-scrollbar{display:none}
.tv-carrusel__item{flex:0 0 auto;margin:0;scroll-snap-align:start}
.tv-carrusel__img{display:block;height:300px;width:auto;max-width:86vw;object-fit:cover;border-radius:var(--tv-radius);background:var(--tv-mist)}
.tv-carrusel__btn{display:none;position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.92);color:#111;font-size:28px;line-height:1;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.tv-carrusel__btn--prev{left:8px}
.tv-carrusel__btn--next{right:8px}
.tv-carrusel__btn:focus-visible{outline:2px solid #24BD4F;outline-offset:2px}
@media (min-width:900px){.tv-carrusel__img{height:420px;max-width:none}.tv-carrusel__btn{display:block}}

/* Reseñas en caja propia (v1.65.9): sin el widget de terceros */
.tv-resenas__cab{margin:0 0 16px;font-size:15px;color:var(--tv-text-2)}
.tv-resenas__cab strong{color:var(--tv-text)}
.tv-resenas__cab a{color:var(--tv-text);text-decoration:underline;text-underline-offset:3px}
.tv-resenas__estrellas,.tv-resena__estrellas{color:#F5B301;letter-spacing:1px}
.tv-resenas__lista{list-style:none;margin:0;padding:0 0 4px;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;outline-offset:4px}
.tv-resenas__lista::-webkit-scrollbar{display:none}
.tv-resena{flex:0 0 84%;scroll-snap-align:start;display:flex;flex-direction:column;gap:10px;margin:0;padding:22px;background:var(--tv-mist);border-radius:var(--tv-r-md)}
.tv-resena__estrellas{margin:0;font-size:17px}
.tv-resena__txt{margin:0;flex:1}
.tv-resena__txt p{margin:0;font-size:15px;line-height:1.55;color:var(--tv-text);display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden}
.tv-resena__autor{margin:0;font-size:13px;font-weight:600;color:var(--tv-text-3)}
@media (min-width:900px){
.tv-resenas__lista{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:16px}
.tv-resena{padding:26px}
}

/* v1.69.1 · Tarjeta del viaje de 5 noches bajo el titulo de las FAQ de la
   portada (sustituye a la seccion propia de la v1.69.0). */
.tv-faqcard{margin-top:28px;background:var(--tv-mist);border-radius:22px;padding:24px 24px 22px}
@media (min-width:900px){.tv-faqcard{max-width:440px}}
.tv-faqcard__k{margin:0;font-family:inherit;font-size:12px;font-weight:700;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--tv-text-3)}
.tv-block-head .tv-faqcard__precio{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:10px 0 0;max-width:none}
.tv-faqcard__v{font-family:var(--tv-display);font-size:2.25rem;line-height:1;color:var(--tv-green-text,#1a9c40);white-space:nowrap}
.tv-faqcard__u{font-size:13px;font-weight:600;color:var(--tv-text-2)}
.tv-block-head .tv-faqcard p{margin-top:12px;font-size:14px;line-height:1.6;color:var(--tv-text-2);max-width:none}
.tv-faqcard .tv-lista{font-size:14px;gap:6px;margin-top:12px}
.tv-faqcard__nota a{color:var(--tv-text);text-decoration:underline;text-underline-offset:3px}
.tv-faqcard .tv-btn{margin-top:18px}
