/*
 * Ficha de producto (1.0.78). Diseño v2 «estándar de la industria» de la propuesta del 30-oct-2026
 * (propuesta_ficha_producto_2026-10-30/lienzo/project/v2-*.dc.html). Se carga solo en páginas con
 * la meta _obv_ficha_producto. Las clases obv-ficha-* van en elementos de Bricks; obv-fr-*, obv-fp-*,
 * obv-fo-* y obv-fa-* las pintan los shortcodes del plugin.
 * Tipografía: Inter, la del sitio, con grosores de 400 a 700 (el sitio no carga 800, y 900 solo lo usa la ficha si se pide).
 */

.obv-ficha {
  --f-tinta: #1d2126;
  --f-texto: #2f343a;
  --f-suave: #5b6168;
  --f-linea: #e6e8eb;
  --f-borde: #c9ced4;
  --f-fondo: #f6f7f8;
  --f-rojo: var(--color-primary, #e31b1b);
  --f-oscuro: #1b2830;
  --f-verde: #17663a;
  --f-verde-fondo: #e3f4ea;
  --f-oro-fondo: #ffe7a3;
  --f-oro: #5c4300;
  --f-aviso-fondo: #fff5d9;
  --f-aviso: #4a3a17;
  --f-radio: 16px;
  color: var(--f-tinta);
  font-size: 16px;
  line-height: 1.5;
}

/* Encabezado del sitio: en la portada va semitransparente sobre la foto; en la ficha, sobre blanco, se veía gris. */
body.obv-ficha-pagina #brx-header > .brxe-section { background-color: #1a1a1a; }

/* Contenedores de Bricks */
.obv-ficha.brxe-section { padding: 0 0 64px; align-items: stretch; }
.obv-ficha .obv-ficha-wrap {
  width: 100%;
  max-width: 1264px;
  margin: 0 auto;
  padding: 18px 32px 0;
  box-sizing: border-box;
  display: block;
}
.obv-ficha .brxe-div,
.obv-ficha .brxe-block { min-width: 0; }
/* Los shortcodes (tablas de precios y de tickets) no pueden ensanchar la página: la tabla se desplaza dentro de su marco. */
.obv-ficha .brxe-shortcode,
.obv-fp,
.obv-fo,
.obv-fp-marco,
.obv-fo-marco { min-width: 0; max-width: 100%; }

/* Cabecera */
.obv-ficha .obv-ficha-cabecera { display: flex; flex-direction: column; gap: 12px; }
.obv-ficha .obv-ficha-migas p { margin: 0; font-size: 14px; color: var(--f-suave); }
.obv-ficha .obv-ficha-migas a { color: var(--f-suave); text-decoration: underline; text-underline-offset: 3px; }
.obv-ficha .obv-ficha-migas a:hover { color: var(--f-rojo); }
.obv-ficha .obv-ficha-h1 {
  margin: 0;
  font-size: clamp(28px, 3.2vw, 38px);
  line-height: 1.12;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--f-tinta);
  text-wrap: balance;
}
.obv-ficha .obv-ficha-meta-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 20px;
}
.obv-ficha .obv-ficha-meta p {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  font-size: 15px;
}
/* Enlaces visibles (Marketing, 4-nov-2026): el rojo de los enlaces del sitio, subrayados; antes eran negros como el texto. */
.obv-ficha .obv-ficha-nota { color: var(--f-rojo); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.obv-ficha .obv-ficha-nota::before { content: "★"; display: inline-block; margin-right: 6px; color: #f2a900; text-decoration: none; }
.obv-ficha .obv-ficha-nota b { font-weight: 700; }
.obv-ficha .obv-ficha-nota:hover { color: #b3001b; }
.obv-ficha .obv-chip {
  font-size: 13px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--f-verde-fondo);
  color: var(--f-verde);
  white-space: nowrap;
}
.obv-ficha .obv-chip--oro { background: var(--f-oro-fondo); color: var(--f-oro); font-weight: 700; }
.obv-ficha .obv-ficha-oficial { font-size: 14px; color: var(--f-suave); }

/* Guardar y compartir */
.obv-fa { display: flex; gap: 10px; }
.obv-fa-btn {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid #d0d4d9;
  background: #fff;
  color: #1d2126;
  font: inherit;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}
.obv-fa-btn:hover { border-color: #1d2126; }

/* Fotos */
.obv-ficha .obv-ficha-fotos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
.obv-ficha .obv-ficha-fotos .obv-ficha-foto-grande { flex: 2 1 560px; min-width: 0; }
.obv-ficha .obv-ficha-fotos-lado { flex: 1 1 300px; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.obv-ficha .obv-ficha-fotos img,
.obv-ficha .obv-ficha-fotos .brxe-image {
  display: block;
  width: 100%;
  height: 428px;
  object-fit: cover;
  border-radius: var(--f-radio);
}
.obv-ficha .obv-ficha-fotos-lado img,
.obv-ficha .obv-ficha-fotos-lado .brxe-image { height: 210px; }

/* Cuerpo: contenido + caja de reserva */
.obv-ficha .obv-ficha-cuerpo {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 48px;
  margin-top: 36px;
}
.obv-ficha .obv-ficha-main { flex: 999 1 600px; min-width: 0; display: flex; flex-direction: column; gap: 44px; }
.obv-ficha .obv-ficha-aside {
  flex: 1 1 340px;
  max-width: 400px;
  min-width: 0;
  position: sticky;
  top: 24px;
}
.admin-bar .obv-ficha .obv-ficha-aside { top: 56px; }

.obv-ficha .obv-ficha-sec { display: flex; flex-direction: column; gap: 14px; }
.obv-ficha .obv-ficha-sec + .obv-ficha-sec { border-top: 1px solid var(--f-linea); padding-top: 36px; }
.obv-ficha .obv-ficha-h2 { margin: 0; font-size: 24px; line-height: 1.25; font-weight: 700; color: var(--f-tinta); }
.obv-ficha .obv-ficha-txt { color: var(--f-texto); }
.obv-ficha .obv-ficha-txt p { margin: 0 0 12px; max-width: 70ch; }
.obv-ficha .obv-ficha-txt p:last-child { margin-bottom: 0; }
.obv-ficha .obv-ficha-txt ul,
.obv-ficha .obv-ficha-txt ol { margin: 0; padding-left: 22px; display: flex; flex-direction: column; gap: 8px; }
.obv-ficha .obv-ficha-txt a { color: var(--f-rojo); text-decoration: underline; text-underline-offset: 3px; }
.obv-ficha .obv-ficha-txt a:hover { color: #b3001b; }
.obv-ficha .obv-confirmar { background: #fff0c2; color: #6b4a00; border-radius: 4px; padding: 0 4px; font-size: 14px; }

/* Sobre este ticket: íconos */
.obv-ficha ul.obv-ficha-iconos {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 18px 28px;
}
.obv-ficha .obv-ficha-iconos li { display: grid; grid-template-columns: 26px 1fr; column-gap: 14px; align-content: start; }
.obv-ficha .obv-ficha-iconos li::before {
  content: "";
  grid-row: span 2;
  width: 26px;
  height: 26px;
  background: var(--f-tinta);
  -webkit-mask: var(--ico) center / contain no-repeat;
  mask: var(--ico) center / contain no-repeat;
}
.obv-ficha .obv-ficha-iconos b { color: var(--f-tinta); }
.obv-ficha .obv-ficha-iconos span { color: var(--f-suave); }
.obv-ficha .ico-fecha { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4M9 15l2 2 4-4'/%3E%3C/svg%3E"); }
.obv-ficha .ico-reloj { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E"); }
.obv-ficha .ico-parada { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11a7 7 0 0 1 14 0c0 4.8-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
.obv-ficha .ico-teleferico { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5l18-2M12 4v4'/%3E%3Crect x='7' y='8' width='10' height='9' rx='2'/%3E%3Cpath d='M7 12h10'/%3E%3C/svg%3E"); }
.obv-ficha .ico-audio { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 15v-3a8 8 0 0 1 16 0v3'/%3E%3Crect x='3' y='14' width='4' height='6' rx='1.5'/%3E%3Crect x='17' y='14' width='4' height='6' rx='1.5'/%3E%3C/svg%3E"); }
.obv-ficha .ico-silla { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='4.5' r='1.8'/%3E%3Cpath d='M10 7v6h5l2 6M14.5 17.5a5 5 0 1 1-6.9-6.2'/%3E%3C/svg%3E"); }

/* Qué incluye */
.obv-ficha .obv-ficha-incluye { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 12px 32px; }
.obv-ficha .obv-ficha-incluye ul { list-style: none; padding: 0; gap: 10px; }
.obv-ficha .obv-ficha-incluye li { display: flex; gap: 10px; }
.obv-ficha .obv-ficha-incluye li::before {
  content: "";
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 2px;
  background: var(--f-verde);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l4 4 10-10'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l4 4 10-10'/%3E%3C/svg%3E") center / contain no-repeat;
}
.obv-ficha .obv-ficha-incluye ul.obv-no li::before {
  background: #b3261e;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");
}

/* Recorrido */
.obv-ficha .obv-ficha-ruta-resumen { color: var(--f-suave); font-size: 15px; }
.obv-ficha .obv-ficha-ruta-cols { display: flex; flex-wrap: wrap; gap: 24px; }
.obv-ficha .obv-ficha-ruta-cols > * { flex: 1 1 300px; min-width: 0; }
.obv-ficha .obv-ficha-ruta-cols .brxe-image { width: 100%; height: auto; border-radius: var(--f-radio); border: 1px solid var(--f-linea); }
.obv-ficha .obv-ficha-mapa { position: relative; overflow: hidden; height: 420px; border-radius: var(--f-radio); border: 1px solid var(--f-linea); background: var(--f-fondo); }
/* El mapa de My Maps trae una barra con el título arriba: se esconde igual que en la página Paradas. */
.obv-ficha .obv-ficha-mapa iframe { display: block; width: 100%; height: calc(100% + 70px); margin-top: -70px; border: 0; }
@media (max-width: 640px) { .obv-ficha .obv-ficha-mapa { height: 320px; } }
.obv-ficha ol.obv-ficha-ruta { list-style: none; padding: 0; gap: 0; counter-reset: parada; }
.obv-ficha .obv-ficha-ruta li {
  counter-increment: parada;
  display: grid;
  grid-template-columns: 28px 1fr;
  column-gap: 12px;
  align-items: start;
  padding: 7px 0;
}
.obv-ficha .obv-ficha-ruta li::before {
  content: counter(parada);
  grid-row: span 2;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: var(--f-oscuro);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.obv-ficha .obv-ficha-ruta li.es-incluida::before { background: #e31b1b; }
/* Recorrido: las paradas y «Ver el mapa…» en negro y sin subrayar, como estaban (pedido del 4-nov-2026: en rojo no se
   veían bien); el subrayado aparece al pasar el mouse. */
.obv-ficha .obv-ficha-ruta-cols .obv-ficha-txt a { color: var(--f-tinta); text-decoration: none; font-weight: 700; }
.obv-ficha .obv-ficha-ruta-cols .obv-ficha-txt a:hover { text-decoration: underline; }
.obv-ficha .obv-ficha-ruta span { font-size: 14px; color: var(--f-suave); }
.obv-ficha .obv-ficha-ruta li.es-incluida span { color: var(--f-verde); font-weight: 700; }

/* Antes de ir */
.obv-ficha .obv-ficha-aviso {
  display: flex;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--f-aviso-fondo);
  color: var(--f-aviso);
  margin-bottom: 12px;
}
.obv-ficha .obv-ficha-aviso::before {
  content: "";
  flex: none;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  background: #8a5a00;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 8h.01'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 8h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}
.obv-ficha .obv-ficha-aviso p { margin: 0; }
.obv-ficha .obv-ficha-aviso b { color: #5c3d00; }

/* Preguntas frecuentes (acordeón de Bricks) */
.obv-ficha .obv-ficha-faq .accordion-item { border-bottom: 1px solid var(--f-linea); }
.obv-ficha .obv-ficha-faq .accordion-title-wrapper { min-height: 52px; padding: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; }
.obv-ficha .obv-ficha-faq .accordion-title,
.obv-ficha .obv-ficha-faq .accordion-title .title { margin: 0; font-size: 16px; line-height: 1.4; font-weight: 700; color: var(--f-tinta); }
.obv-ficha .obv-ficha-faq .accordion-title-wrapper::after {
  content: "";
  flex: none;
  width: 20px;
  height: 20px;
  background: var(--f-tinta);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .2s;
}
.obv-ficha .obv-ficha-faq .accordion-title-wrapper[aria-expanded="true"]::after { transform: rotate(180deg); }
.obv-ficha .obv-ficha-faq .accordion-title-wrapper:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }
.obv-ficha .obv-ficha-faq .accordion-content-wrapper { padding: 0 0 14px; color: var(--f-texto); }
.obv-ficha .obv-ficha-faq .accordion-content-wrapper p { margin: 0; }

/* Opiniones (Trustindex): sin márgenes extra */
.obv-ficha .obv-ficha-opiniones .ti-widget { margin: 0 !important; }

/* Otros tickets */
.obv-ficha .obv-ficha-otros { margin-top: 56px; border-top: 0; padding-top: 0; }

/* ======================================================================== Caja de reserva [obv_ficha_reserva] */
.obv-fr { display: flex; flex-direction: column; gap: 12px; }
.obv-fr-caja {
  border: 1px solid #dfe2e6;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 6px 24px rgba(16, 24, 32, 0.10);
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.obv-fr-desde { display: flex; flex-direction: column; gap: 2px; }
.obv-fr-desde-txt { font-size: 14px; color: #5b6168; }
.obv-fr-desde-precio { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; }
.obv-fr-desde-precio b { font-size: 30px; line-height: 1.1; font-weight: 700; color: #1d2126; }
.obv-fr-desde-precio span { font-weight: 600; }
.obv-fr-desde-nota { font-size: 13px; color: #5b6168; }

.obv-fr-cta,
.obv-fr-continuar,
.obv-fr-barra-cta {
  min-height: 52px;
  border: 0;
  border-radius: 999px;
  background: #e31b1b;
  color: #fff;
  font: inherit;
  font-weight: 700;
  font-size: 17px;
  cursor: pointer;
  padding: 0 20px;
}
.obv-fr-cta:hover,
.obv-fr-continuar:hover:not(:disabled),
.obv-fr-barra-cta:hover { background: #c0140f; }
.obv-fr-continuar:disabled { background: #e8a4a1; cursor: not-allowed; }
.obv-fr-cta[hidden] { display: none; }

.obv-fr-sel { display: flex; flex-direction: column; gap: 16px; }
.obv-fr-sel[hidden] { display: none; }
.obv-fr-bloque { display: flex; flex-direction: column; gap: 8px; }
.obv-fr-titulo { margin: 0; font-size: 13px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: #5b6168; }

.obv-fr-pax { display: flex; flex-direction: column; gap: 10px; }
.obv-fr-pax-fila { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.obv-fr-pax-nombre { display: flex; flex-direction: column; line-height: 1.3; }
.obv-fr-pax-nota,
.obv-fr-pax-precio { font-size: 13px; color: #5b6168; }
.obv-fr-paso { display: inline-flex; align-items: center; gap: 6px; }
.obv-fr-paso button {
  width: 40px;
  height: 40px;
  padding: 0;
  margin: 0;
  border-radius: 999px;
  border: 1px solid #c9ced4;
  background: #fff;
  color: #1d2126;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
  cursor: pointer;
}
.obv-fr-paso button svg { display: block; flex: none; }
.obv-fr-paso button:hover:not(:disabled) { border-color: #1d2126; }
.obv-fr-paso button:disabled { opacity: 0.35; cursor: not-allowed; }
.obv-fr-n { min-width: 24px; text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }

.obv-fr-chips {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: 8px;
}
.obv-fr-chip {
  min-height: 88px;
  padding: 8px 4px;
  border-radius: 12px;
  border: 1px solid #c9ced4;
  background: #fff;
  color: #1d2126;
  font: inherit;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  cursor: pointer;
  line-height: 1.15;
}
.obv-fr-chip:hover { border-color: #1d2126; }
.obv-fr-chip.is-sel { border: 2px solid #1d2126; background: #f6f7f8; padding: 7px 3px; }
.obv-fr-chip-dia { font-size: 12px; font-weight: 700; color: #5b6168; text-transform: capitalize; }
.obv-fr-chip-num { font-size: 20px; font-weight: 700; }
.obv-fr-chip-mes { font-size: 12px; color: #5b6168; }
.obv-fr-chip-precio { margin-top: 3px; font-size: 12px; font-weight: 700; color: #17663a; font-variant-numeric: tabular-nums; }
.obv-fr-mas-fechas,
.obv-fr-reintentar {
  align-self: flex-start;
  margin-top: 4px;
  min-height: 40px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #1d2126;
  font: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.obv-fr-cargando { margin: 0; font-size: 14px; color: #5b6168; }
.obv-fr-aviso { margin: 0; font-size: 13px; padding: 10px 12px; border-radius: 10px; }
.obv-fr-aviso { background: #fff5d9; color: #4a3a17; }
.obv-fr-aviso[hidden],
.obv-fr-total[hidden] { display: none; }

.obv-fr-total { display: flex; flex-direction: column; gap: 2px; padding-top: 12px; border-top: 1px solid #e6e8eb; }
.obv-fr-total-fila { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; font-weight: 700; }
.obv-fr-total-fila b { font-size: 24px; font-weight: 700; font-variant-numeric: tabular-nums; }
.obv-fr-total-det,
.obv-fr-total-nota { font-size: 13px; color: #5b6168; }
.obv-fr-letra { margin: 0; font-size: 12px; color: #5b6168; text-align: center; }

.obv-fr-garantias { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.obv-fr-garantias li { display: flex; gap: 10px; align-items: flex-start; }
.obv-fr-garantias li::before {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  background: #17663a;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l4 4 10-10'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l4 4 10-10'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* Con el selector abierto la caja crece: las garantías ya están en «Sobre este ticket» y la caja no pasa del alto
   de la pantalla (si no, «Continuar» quedaba fuera de la vista con la caja fija). */
.obv-fr.is-abierto .obv-fr-garantias { display: none; }
@media (min-width: 1001px) {
  .obv-ficha .obv-ficha-aside .obv-fr-caja { max-height: calc(100vh - 100px); overflow-y: auto; overscroll-behavior: contain; }
  .admin-bar .obv-ficha .obv-ficha-aside .obv-fr-caja { max-height: calc(100vh - 132px); }
}
/* WhatsApp: verde oscuro de WhatsApp (contraste 6:1), subrayado como enlace; sin el logo (pedido del 4-nov-2026). */
.obv-fr-whatsapp { min-height: 44px; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; color: #0b6e5f; text-align: center; }
.obv-fr-whatsapp span { text-decoration: underline; text-underline-offset: 3px; }
.obv-fr-whatsapp:hover { color: #075e54; }
.obv-fr-modal[hidden] { display: none; }

.obv-fr button:focus-visible,
.obv-fr a:focus-visible,
.obv-fr-barra button:focus-visible,
.obv-fa-btn:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }

/* Barra fija en móvil */
.obv-fr-barra { display: none; }
@media (max-width: 1000px) {
  .obv-ficha .obv-ficha-aside { order: -1; position: static; max-width: none; flex-basis: 100%; }
  .obv-fr-barra:not([hidden]) {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9990;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
    background: #fff;
    border-top: 1px solid #dfe2e6;
    box-shadow: 0 -4px 16px rgba(16, 24, 32, 0.08);
  }
  .obv-fr-barra-precio { display: flex; flex-direction: column; line-height: 1.2; font-size: 13px; color: #5b6168; min-width: 0; }
  .obv-fr-barra-precio b { font-size: 20px; color: #1d2126; font-weight: 700; }
  .obv-fr-barra-cta { flex: none; min-height: 48px; padding: 0 18px; font-size: 16px; white-space: nowrap; }
  /* Con la barra a la vista, WhatsApp y el botón de cookies suben para no taparla. */
  body.obv-ficha-pagina.obv-fr-con-barra .ht-ctc { bottom: 84px !important; }
  /* Con la caja de reserva a la vista, la burbuja taparía «Continuar»; la caja ya trae su enlace a WhatsApp. */
  body.obv-ficha-pagina.obv-fr-caja-visible .ht-ctc { display: none !important; }
  body.obv-ficha-pagina .cky-btn-revisit-wrapper { bottom: 84px !important; }
}
@media (max-width: 640px) {
  .obv-ficha .obv-ficha-wrap { padding: 14px 16px 0; }
  .obv-ficha .obv-ficha-fotos img,
  .obv-ficha .obv-ficha-fotos .brxe-image { height: 260px; }
  .obv-ficha .obv-ficha-fotos-lado { flex-direction: row; }
  .obv-ficha .obv-ficha-fotos-lado img,
  .obv-ficha .obv-ficha-fotos-lado .brxe-image { height: 120px; }
  .obv-ficha .obv-ficha-cuerpo { gap: 32px; margin-top: 24px; }
  .obv-ficha .obv-ficha-main { gap: 32px; }
  .obv-ficha .obv-ficha-sec + .obv-ficha-sec { padding-top: 28px; }
  .obv-fa-btn .obv-fa-txt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .obv-fa-btn { width: 44px; padding: 0; justify-content: center; }
}

.obv-fr-toast {
  position: fixed;
  left: 50%;
  bottom: 88px;
  transform: translate(-50%, 20px);
  background: #1d2126;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  padding: 10px 16px;
  border-radius: 999px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s, transform .2s;
  z-index: 99999;
}
.obv-fr-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }

/* ======================================================================== Precios [obv_ficha_precios] */
.obv-fp-marco,
.obv-fo-marco { position: relative; overflow-x: auto; border: 1px solid #e6e8eb; border-radius: 14px; }
/* position: relative hace que los textos ocultos de la tabla (.obv-sr, absolutos) queden dentro del marco que se desplaza;
   sin eso ensanchaban la página en el celular (725 px en una pantalla de 375). */
.obv-fp-tabla,
.obv-fo-tabla { width: 100%; border-collapse: collapse; font-size: 15px; }
.obv-fp-tabla { min-width: 420px; }
.obv-fp-tabla th,
.obv-fp-tabla td { padding: 12px 16px; text-align: left; border-top: 1px solid #e6e8eb; }
.obv-fp-tabla thead th { background: #f6f7f8; border-top: 0; }
.obv-fp-tabla td { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.obv-fp-tabla thead th + th { text-align: right; }
.obv-fp-nota { margin: 10px 0 0; font-size: 14px; color: #5b6168; }

/* ======================================================================== Otros tickets [obv_ficha_otros] */
.obv-fo { display: flex; flex-direction: column; gap: 18px; }
.obv-fo-tarjetas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: 14px; }
.obv-fo-tarjeta {
  border: 1px solid #e0e3e7;
  border-radius: 16px;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: #fff;
}
.obv-fo-tarjeta--actual { border: 2px solid #e31b1b; padding: 15px; background: #fff6f6; }
.obv-fo-etiquetas { display: flex; flex-wrap: wrap; gap: 6px; }
.obv-fo-dias,
.obv-fo-viendo { font-size: 12px; font-weight: 700; letter-spacing: 0.04em; padding: 3px 8px; border-radius: 6px; background: #1b2830; color: #fff; }
.obv-fo-viendo { background: #e31b1b; letter-spacing: 0; }
.obv-fo-nombre { font-size: 18px; }
.obv-fo-desc { font-size: 14px; color: #5b6168; flex: 1; }
.obv-fo-precio { font-size: 14px; }
.obv-fo-boton .obv-ozytrip-widget { display: block; }
.obv-fo-boton .obv-ozytrip-trigger {
  width: 100%;
  min-height: 44px;
  border-radius: 999px;
  border: 2px solid #e31b1b;
  background: #fff;
  color: #e31b1b;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.obv-fo-boton .obv-ozytrip-trigger:hover { background: #e31b1b; color: #fff; }
.obv-fo-tabla { min-width: 760px; }
/* Celular (4-nov-2026): la tabla ancha se oculta y cada ticket dice solo en qué se diferencia del que se está viendo
   («Frente al Classic»), con la diferencia de precio. La tarjeta del ticket que se está viendo va primero, como
   referencia. En escritorio esta lista no se muestra: queda la tabla completa. */
.obv-fo-dif-titulo,
.obv-fo-dif,
.obv-fo-precio-dif { display: none; }
.obv-fo-dif-titulo { font-size: 13px; font-weight: 700; color: #5b6168; }
.obv-fo-dif { list-style: none; margin: 0 0 4px; padding: 0; flex-direction: column; gap: 6px; font-size: 14px; line-height: 1.35; }
.obv-fo-dif li { display: flex; gap: 8px; align-items: flex-start; color: #2f343a; }
.obv-fo-dif li::before {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  background: #17663a;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
}
.obv-fo-dif li.es-menos::before {
  background: #b3261e;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
}
.obv-fo-precio-dif { color: #5b6168; }
@media (max-width: 760px) {
  .obv-fo-dif-titulo { display: block; }
  .obv-fo-dif { display: flex; }
  .obv-fo-precio-dif { display: inline; }
  .obv-fo-desc--escritorio { display: none; }
  .obv-fo-marco { display: none; }
  .obv-fo-tarjeta--actual { order: -1; }
  .obv-fo-desc { flex: none; }
}
.obv-fo-tabla caption { text-align: left; padding: 14px 16px; font-weight: 700; font-size: 17px; }
.obv-fo-tabla th,
.obv-fo-tabla td { padding: 11px 10px; border-top: 1px solid #e6e8eb; text-align: center; }
.obv-fo-tabla thead th { background: #f6f7f8; }
.obv-fo-tabla tbody th { text-align: left; padding-left: 16px; font-weight: 600; }
.obv-fo-tabla td { font-variant-numeric: tabular-nums; }
.obv-fo-tabla .obv-fo-col-actual { background: #fff6f6; font-weight: 700; }
.obv-fo-tabla thead .obv-fo-col-actual { background: #fff0f0; }
.obv-fo-si { color: #17663a; font-weight: 700; }
.obv-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ======================================================================== Hoja del celular (≤ 1000 px, 4-nov-2026)
   «Ver disponibilidad» (caja o barra fija) abre esta hoja desde abajo: participantes y fecha → opciones para ese día.
   La arma obv-ficha.js. Queda bajo el modal de compra (z-index 99999), que se abre encima al continuar. */
.obv-fr-hoja-fondo {
  position: fixed;
  inset: 0;
  z-index: 99990;
  background: rgba(16, 24, 32, 0.5);
  opacity: 0;
  transition: opacity .2s ease;
}
.obv-fr-hoja-fondo.is-visible { opacity: 1; }
.obv-fr-hoja-fondo[hidden],
.obv-fr.obv-fr-hoja[hidden] { display: none; }
.obv-fr.obv-fr-hoja {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 99991;
  max-width: 560px;
  max-height: 92vh;
  max-height: 92dvh;
  margin: 0 auto;
  gap: 0;
  background: #fff;
  color: #1d2126;
  border-radius: 20px 20px 0 0;
  box-shadow: 0 -8px 32px rgba(16, 24, 32, 0.18);
  transform: translateY(100%);
  transition: transform .25s ease;
}
.obv-fr.obv-fr-hoja.is-visible { transform: none; }
.obv-fr-hoja-cab { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid #eceef0; }
.obv-fr-hoja-titulo { margin: 0; flex: 1; font-size: 18px; line-height: 1.25; font-weight: 700; color: #1d2126; }
.obv-fr-hoja-titulo:focus { outline: none; }
.obv-fr-hoja-icono {
  flex: none;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: #f1f3f5;
  color: #1d2126;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.obv-fr-hoja-icono svg { display: block; flex: none; }
.obv-fr-hoja-cuerpo {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.obv-fr-hoja .obv-fr-chips { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.obv-fr-hoja-nota { margin: 0; font-size: 13px; color: #5b6168; }
.obv-fr-hoja-pie {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  border-top: 1px solid #eceef0;
  background: #fff;
}
/* Pie del desplegable: total a la izquierda y «Continuar» a la derecha, siempre a la vista. */
.obv-fr-hoja-pie .obv-fr-total { flex: 1; min-width: 0; padding: 0; border: 0; }
.obv-fr-hoja-pie .obv-fr-total-fila { justify-content: flex-start; gap: 8px; }
.obv-fr-hoja-pie .obv-fr-total-fila b { font-size: 20px; }
.obv-fr-hoja-pie .obv-fr-continuar { flex: none; min-width: 140px; }
.obv-fr-hoja-cuerpo .obv-fr-letra { text-align: left; }
html.obv-fr-hoja-abierta,
html.obv-fr-hoja-abierta body { overflow: hidden; }
html.obv-fr-hoja-abierta .obv-fr-barra,
html.obv-fr-hoja-abierta .ht-ctc,
html.obv-fr-hoja-abierta .cky-btn-revisit-wrapper { display: none !important; }
@media (prefers-reduced-motion: reduce) {
  .obv-fr.obv-fr-hoja,
  .obv-fr-hoja-fondo { transition: none; }
}

.obv-fr input:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }

/* ======================================================================== Fechas: carga y calendario (4-nov-2026)
   Marketing: mientras cargan las fechas no se entendía que algo pasaba, y «Más fechas» de 6 en 6 era lento. */
/* «Esqueletos» que brillan mientras responde OzyTrip (fechas cercanas y días del calendario). */
.obv-fr-esqueleto,
.obv-fr-chip.obv-fr-esqueleto {
  border-color: transparent;
  background: linear-gradient(90deg, #eceef1 25%, #f8f9fa 45%, #eceef1 65%);
  background-size: 300% 100%;
  animation: obv-fr-brillo 1.2s ease-in-out infinite;
  cursor: default;
}
@keyframes obv-fr-brillo { from { background-position: 100% 0; } to { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .obv-fr-esqueleto { animation: none; } }

/* «Más fechas» abre el calendario: ícono de calendario delante del texto. */
.obv-fr-mas-fechas { display: inline-flex; align-items: center; gap: 6px; }
.obv-fr-mas-fechas::before {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Calendario: el mismo del paso de fechas del modal (obv-popup.css, .obv-cal-*), con clases propias porque el
   modal escucha los clics de las suyas en toda la página. */
.obv-fr-cal { display: flex; flex-direction: column; gap: 8px; }
.obv-fr-cal-nav { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
/* Flechas «←» «→» y colores del modal: precio verde en los dos más bajos del mes, día elegido en rojo (4-nov-2026). */
.obv-fr-cal-ant,
.obv-fr-cal-sig {
  min-width: 44px;
  min-height: 36px;
  padding: 6px 12px;
  border: 0;
  border-radius: 6px;
  background: #f0f0f0;
  color: #1d2126;
  font: inherit;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition: background .15s;
}
.obv-fr-cal-ant:hover:not(:disabled),
.obv-fr-cal-sig:hover:not(:disabled) { background: #e0e0e0; }
.obv-fr-cal-ant:disabled,
.obv-fr-cal-sig:disabled { opacity: .35; cursor: default; }
.obv-fr-cal-mes { font-weight: 700; font-size: 15px; }
.obv-fr-cal-mes:focus { outline: none; }
.obv-fr-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.obv-fr-cal-sem { padding: 4px 0; text-align: center; font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; }
.obv-fr-cal-dia {
  min-height: 48px;
  padding: 6px 4px;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  font-size: 14px;
  line-height: 1.05;
  color: #ccc;
}
button.obv-fr-cal-dia {
  border: 1px solid transparent;
  background: #f2f2f2;
  color: #111;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  transition: all .15s;
}
button.obv-fr-cal-dia:hover:not(.is-sel) { background: #e9e9e9; border-color: #d8d8d8; }
.obv-fr-cal-dia.is-sel { background: #e31b1b; color: #fff; font-weight: 700; }
.obv-fr-cal-num { display: block; font-size: 14px; font-weight: 800; }
.obv-fr-cal-precio { display: block; min-height: 11px; font-size: 10px; font-weight: 800; line-height: 1.1; color: #111; }
.obv-fr-cal-precio.is-barato { color: #00a63c; }
.obv-fr-cal-dia.is-sel .obv-fr-cal-precio { color: #fff; }
.obv-fr-cal-cerrar {
  align-self: flex-start;
  min-height: 40px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #1d2126;
  font: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

/* Fotos clickeables (Marketing, 4-nov-2026): Bricks las abre en su visor (PhotoSwipe), las tres en la misma galería.
   Con el enlace, Bricks pone las clases de la imagen en el <a> y la <img> queda adentro. */
.obv-ficha .obv-ficha-fotos a.brxe-image { position: relative; overflow: hidden; cursor: zoom-in; }
.obv-ficha .obv-ficha-fotos a.brxe-image img { border-radius: 0; transition: transform .3s ease; }
.obv-ficha .obv-ficha-fotos a.brxe-image:hover img { transform: scale(1.03); }
.obv-ficha .obv-ficha-fotos a.brxe-image:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }
.obv-ficha .obv-ficha-fotos a.obv-ficha-foto-grande::after {
  content: "";
  position: absolute;
  right: 12px;
  bottom: 12px;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: rgba(16, 24, 32, 0.72) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7'/%3E%3C/svg%3E") center / 20px no-repeat;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) { .obv-ficha .obv-ficha-fotos a.brxe-image img { transition: none; } }

/* Opiniones: la nota del Classic en Tripadvisor y el enlace a sus opiniones (4-nov-2026). El widget de Trustindex del
   sitio mostraba las de otra ficha (Full Aventura). */
.obv-ficha .obv-ficha-ta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-width: 520px;
  padding: 20px;
  border: 1px solid var(--f-linea);
  border-radius: var(--f-radio);
  background: var(--f-fondo);
}
.obv-ficha .obv-ficha-ta p { margin: 0; }
.obv-ficha .obv-ficha-ta-nota { display: flex; align-items: baseline; gap: 8px; color: var(--f-tinta); }
.obv-ficha .obv-ficha-ta-nota::before { content: "★"; color: #f2a900; font-size: 24px; line-height: 1; }
.obv-ficha .obv-ficha-ta-nota b { font-size: 32px; line-height: 1; font-weight: 700; }
.obv-ficha .obv-ficha-ta-nota span { font-size: 15px; color: var(--f-suave); }
.obv-ficha .obv-ficha-ta a { color: var(--f-rojo); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.obv-ficha .obv-ficha-ta a:hover { color: #b3001b; }
/* Vista previa de las opiniones del ticket (widget de Trustindex de pago, uno por ficha de Tripadvisor). */
.obv-ficha .obv-ficha-ta-widget { margin-top: 16px; }
