@charset "UTF-8";
/* ==========================================================================
   3ficha.css  ·  Ela Bela Glow  ·  ficha de producto        v2 · 2026-08-27
   --------------------------------------------------------------------------
   Se carga con un <link> desde product.tpl, NO desde css/local/ automatico:
   el tema solo trae 1custom.css por nombre.

   REGLA DEL PROYECTO: aqui no se redefine NINGUNA clase del tema.
   Todo lleva prefijo .ebf- y la clase se le pone al elemento desde
   product.tpl. Las clases o ids del tema que aparecen en algun selector
   (#quantity_wanted) van SIEMPRE precedidos de una .ebf- propia, y solo
   para colocarlos dentro de nuestra caja, nunca para repintarlos.

   Todo cuelga de #product, el id que el tema pone al <body> de esta pagina.
   Comprobado: 0 reglas fuera de esa acotacion.

   Registro de clases: docs/clases-propias.md
   Como revertir:      revertir.md · trigesimo cuarta pasada
   ========================================================================== */

#product {
  --ebf-tinta:#18272e; --ebf-texto:#3a3d41; --ebf-suave:#797b7f;
  --ebf-linea:#ece7e4; --ebf-papel:#fff;    --ebf-crema:#fbf7f5;
  --ebf-rosa:#f7e9e3;  --ebf-marron:#7d4f45;--ebf-marron-cl:#b07f6b;
  --ebf-nude1:#eec7b3; --ebf-nude2:#dfab97; --ebf-nude3:#d3947c;
  --ebf-verde:#008f3f; --ebf-verde-cl:#e8f5ed; --ebf-wa:#25D366;
  /* El titulo de la descripcion. NO se usa --ebf-nude2 (#dfab97, el rosa
     de la tienda) como color de base: medido sobre blanco da 2,02:1 y la
     norma pide 3:1 para un titulo de este tamaño. El rosa de la marca
     aparece en el destello, no en la base. Este rosa hondo da 4,53:1. */
  --ebf-rosa-hondo:#a8654f;
  --ebf-r:10px;
}

/* --------------------------------------------------------------------------
   1 · Las dos columnas
   --------------------------------------------------------------------------
   min-width:0 es OBLIGATORIO en las dos. El carrusel de pagos mide por
   contenido y sin esto revienta su columna: medido, 1695 px dentro de un
   contenedor de 1170. En telefono el flex cambia de direccion y min-width
   deja de servir, por eso ademas se les fija el ancho en la media query.
   -------------------------------------------------------------------------- */
#product .ebf-izq,
#product .ebf-col { min-width: 0; }
#product .ebf-col {
  display: flex;
  flex-direction: column;
  gap: 13px;
}

/* --------------------------------------------------------------------------
   2 · Cabecera: el boton de copiar flota y el titulo lo rodea
   --------------------------------------------------------------------------
   float, y no flex, a proposito: asi el nombre del producto fluye ALREDEDOR
   del boton y no queda hueco muerto a la derecha cuando el titulo es corto.
   -------------------------------------------------------------------------- */
#product .ebf-cab { position: relative; }
#product .ebf-cab::after { content: ''; display: block; clear: both; }
#product .ebf-cab .ebf-sh { float: right; margin: 0 0 10px 14px; }

#product .ebf-marca {
  display: inline-block;
  margin: 0 0 5px;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ebf-marron-cl);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .18s ease, color .18s ease;
}
#product .ebf-cab .ebf-marca:hover,
#product .ebf-cab .ebf-marca:focus {
  color: var(--ebf-marron);
  border-bottom-color: var(--ebf-marron);
  text-decoration: none;
}

/* --------------------------------------------------------------------------
   3 · Descripcion corta
   -------------------------------------------------------------------------- */
#product .ebf-desc { font-size: 13.5px; line-height: 1.62; color: var(--ebf-texto); }
#product .ebf-desc p { margin: 0 0 7px; }

/* La lista de la descripcion corta, con el mismo tilde que la de abajo.
   Venia como tres renglones sueltos --el tema le quita los puntos a los
   ul y no pone nada en su lugar-- y no se leia como una lista.

   Es el mismo dibujo que .ebf-fichabajo, mas pequeño: 15px en vez de 17
   y 24 de sangria en vez de 28, para que pese menos que la de abajo. */
#product .ebf-desc ul { margin: 9px 0 7px; padding: 0; list-style: none; }
#product .ebf-desc ul li {
  position: relative; padding: 0 0 0 24px; margin: 0 0 6px; line-height: 1.55;
}
#product .ebf-desc ul li::before {
  content: ''; position: absolute; left: 0; top: .35em;
  width: 15px; height: 15px; border-radius: 50%;
  background: var(--ebf-rosa) no-repeat center / 8px 8px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237d4f45' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.6 10 17.4 19 7.2'/%3E%3C/svg%3E");
}
#product .ebf-desc ul li strong { color: var(--ebf-marron); font-weight: 600; }

/* --------------------------------------------------------------------------
   4 · El precio
   -------------------------------------------------------------------------- */
/* El tema le mete margin-top:10px a #buy_block, que se sumaba a la
   separacion de la columna: 23 px muertos sobre el precio. */
#product .ebf-col #buy_block { margin-top: 0; }

#product .ebf-precio {
  position: relative;
  overflow: hidden;
  padding: 13px 15px 15px;
  border-radius: 14px;
  border: 1px solid #f0dcd2;
  background: linear-gradient(135deg, #fdf5f1, #f9ebe4 55%, #f6e2d8);
}
/* El destello. Solo transform y opacity: no repinta.

   OJO CON "transparent" EN LOS DEGRADADOS.            27/08/2026
   Esta linea decia "transparent, rgba(255,255,255,.75), transparent" y
   producia una MANCHA OSCURA que recorria la caja del precio. En CSS
   "transparent" es rgba(0,0,0,0) --negro con alfa 0-- asi que al
   interpolar hacia el blanco los tonos de en medio pasan por gris y
   negro. Como el destello barre la caja cada 5,2 s, la mancha viajaba
   con el.

   La regla: en un degradado VISIBLE no se usa "transparent", se usa el
   mismo color con alfa 0. En una mascara si vale, porque alli solo
   cuenta el canal alfa. */
#product .ebf-precio::after {
  content: '';
  position: absolute;
  top: -60%; left: 0;
  width: 45%; height: 220%;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.75), rgba(255,255,255,0));
  transform: translateX(-190%) rotate(14deg);
  animation: ebfBrillo 5.2s cubic-bezier(.45,0,.25,1) infinite;
}
@keyframes ebfBrillo {
  0%, 62% { transform: translateX(-190%) rotate(14deg); }
  100%    { transform: translateX(330%)  rotate(14deg); }
}
#product .ebf-precio__p { margin: 0; float: none; width: auto; position: relative; z-index: 1; }
#product .ebf-precio__antes {
  display: block;
  margin-bottom: 2px;
  font-size: 15px;
  font-weight: 600;
  color: var(--ebf-suave);
  text-decoration: line-through;
}
#product .ebf-precio__n {
  display: block;
  font-size: 36px;
  line-height: 1.05;
  font-weight: 700;
  color: var(--ebf-tinta);
}
#product .ebf-precio__iva {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 7px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  color: var(--ebf-marron);
  background: rgba(255,255,255,.72);
}
/* --------------------------------------------------------------------------
   4b · Las otras monedas — pastillas de cristal que cambian la moneda
   --------------------------------------------------------------------------
   El precio grande ya es el de la moneda elegida, asi que aqui van SOLO las
   otras. Como la tienda tiene tres monedas (USD, PYG, BRL) y una es siempre
   la activa, aqui se ven DOS.

   El peso argentino se quito el 27/08: no era una moneda instalada, no se
   podia elegir y no aparecia en ninguna otra pagina del sitio.

   El brillo sigue al cursor con --ebf-mx / --ebf-my, que escribe el JS de
   product.tpl. Se anima solo transform, opacity y background: nada que
   obligue al navegador a recalcular el diseno.
   -------------------------------------------------------------------------- */
#product .ebf-otras {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px;
  margin-top: 13px;
  position: relative;
  z-index: 1;
}
#product .ebf-otra {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  min-width: 0;
  margin: 0;
  padding: 9px 12px;
  border-radius: 13px;
  font: inherit;
  text-align: left;
  color: var(--ebf-texto);
  border: 1px solid rgba(255,255,255,.85);
  background: rgba(255,255,255,.48);
  -webkit-backdrop-filter: blur(7px) saturate(1.25);
          backdrop-filter: blur(7px) saturate(1.25);
  box-shadow: 0 1px 2px rgba(91,56,48,.07), inset 0 1px 0 rgba(255,255,255,.6);
  cursor: pointer;
  transition: transform .32s cubic-bezier(.2,.8,.3,1), box-shadow .32s ease,
              background .25s ease, border-color .25s ease;
}
/* el destello blanco, cerrado, pegado al cursor */
#product .ebf-otra::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 13px;
  pointer-events: none;
  background: radial-gradient(190px circle at var(--ebf-mx, 50%) var(--ebf-my, 50%),
              rgba(255,255,255,.92), rgba(255,255,255,.28) 34%, transparent 62%);
  opacity: 0;
  transition: opacity .28s ease;
}
/* y un halo nude mas abierto, tambien anclado al cursor.

   SIN mix-blend-mode: multiply, y no es un descuido.   27/08/2026
   Lo llevaba, y era la causa de una mancha negra que aparecia de forma
   erratica sobre las pastillas. La pastilla tiene backdrop-filter, que la
   manda a una capa propia de la GPU; un hijo con mix-blend-mode obliga a
   Chrome a resolver la mezcla contra esa capa filtrada, y a veces la
   resuelve contra un bufer sin inicializar. Multiplicar por negro da negro.

   Quitarlo no cambia el aspecto: multiplicar sobre un fondo casi blanco no
   hace practicamente nada. Medido sobre el fondo real de la pastilla
   --rgb(254,247,244)-- la diferencia era de 4 sobre 255 como maximo, y con
   la opacidad a .58 en vez de .55 sale el MISMO color:

     con multiply  rgb(236,202,189)
     sin, a .58    rgb(236,203,190)

   Es el unico mix-blend-mode de todo el proyecto. Si algun dia se añade
   otro, no ponerlo dentro de un elemento con backdrop-filter. */
#product .ebf-otra::after {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 13px;
  pointer-events: none;
  background: radial-gradient(260px circle at var(--ebf-mx, 50%) var(--ebf-my, 50%),
              rgba(223,171,151,.58), transparent 58%);
  opacity: 0;
  transition: opacity .3s ease;
}
#product .ebf-otra > * { position: relative; z-index: 1; }

#product .ebf-otra__v {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ebf-tinta);
}
#product .ebf-otra__v img { flex: none; }
#product .ebf-otra__c {
  font-weight: 400;
  font-size: 10px;
  color: var(--ebf-suave);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
/* la invitacion, que sale al pasar el mouse */
#product .ebf-otra__ir {
  display: block;
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--ebf-marron);
  white-space: nowrap;
  transform: translateY(3px);
  transition: max-height .3s cubic-bezier(.2,.8,.3,1), opacity .22s ease,
              transform .3s cubic-bezier(.2,.8,.3,1);
}
#product .ebf-otra__ir::before { content: '→ '; }

#product .ebf-otra:hover {
  transform: translateY(-5px);
  background: rgba(255,255,255,.72);
  border-color: #fff;
  box-shadow: 0 16px 28px -14px rgba(91,56,48,.55), inset 0 1px 0 rgba(255,255,255,.9);
}
#product .ebf-otra:hover::before { opacity: 1; }
#product .ebf-otra:hover::after  { opacity: .5; }
#product .ebf-otra:hover .ebf-otra__ir { max-height: 15px; opacity: 1; transform: translateY(0); }
#product .ebf-otra:active { transform: translateY(-1px) scale(.985); }
#product .ebf-otra:focus-visible { outline: 2px solid var(--ebf-marron); outline-offset: 3px; }

/* Si el JS no encuentra moneda de verdad detras, la apaga como boton: se ve
   igual pero no se levanta ni invita. Nunca prometer lo que no se cumple. */
#product .ebf-otra--info { cursor: default; }
#product .ebf-otra--info:hover {
  transform: none;
  box-shadow: 0 1px 2px rgba(91,56,48,.07), inset 0 1px 0 rgba(255,255,255,.6);
}
#product .ebf-otra--info:hover::before { opacity: .5; }
#product .ebf-otra--info:hover::after  { opacity: 0; }
#product .ebf-otra--info .ebf-otra__ir { display: none; }

/* --------------------------------------------------------------------------
   4c · El cambio de moneda, animado
   --------------------------------------------------------------------------
   setCurrency() RECARGA la pagina, asi que no hay una transicion en vivo que
   animar. Se parte en dos: el precio se va antes de recargar, y al volver
   entra el nuevo. Entre las dos mitades el gesto se lee como uno solo.

   La marca de que venimos de un cambio la deja el JS en sessionStorage.
   Se escalonan precio, aviso del IVA y pastillas para que no salgan en bloque.
   -------------------------------------------------------------------------- */
@keyframes ebfPrecioSale {
  to { opacity: 0; transform: translateY(-9px) scale(.96); filter: blur(3px); }
}
@keyframes ebfPrecioEntra {
  from { opacity: 0; transform: translateY(11px) scale(.96); filter: blur(4px); }
}
@keyframes ebfCajaLate {
  0%   { box-shadow: 0 0 0 0 rgba(211,148,124,.55); }
  70%,
  100% { box-shadow: 0 0 0 14px rgba(211,148,124,0); }
}

#product .ebf-precio--sale .ebf-precio__n,
#product .ebf-precio--sale .ebf-precio__iva,
#product .ebf-precio--sale .ebf-otra {
  animation: ebfPrecioSale .24s cubic-bezier(.4,0,.75,.2) forwards;
}
#product .ebf-precio--sale .ebf-precio__iva { animation-delay: .03s; }
#product .ebf-precio--sale .ebf-otra        { animation-delay: .06s; }

#product .ebf-precio--entra { animation: ebfCajaLate .9s cubic-bezier(.2,.6,.3,1); }
#product .ebf-precio--entra .ebf-precio__n,
#product .ebf-precio--entra .ebf-precio__iva,
#product .ebf-precio--entra .ebf-otra {
  animation: ebfPrecioEntra .55s cubic-bezier(.2,.85,.3,1) both;
}
#product .ebf-precio--entra .ebf-precio__iva { animation-delay: .07s; }
#product .ebf-precio--entra .ebf-otra        { animation-delay: .12s; }
/* el destello del recuadro pasa una vez, rapido, justo al entrar */
#product .ebf-precio--entra::after {
  animation: ebfBrillo 1.15s cubic-bezier(.35,0,.2,1) 1;
}

/* --------------------------------------------------------------------------
   5 · Stock — radar y destello, siempre en movimiento
   --------------------------------------------------------------------------
   La pastilla es un <span> DENTRO de #availability_statut, no el <p> mismo:
   product.js le hace .show() al <p> al cambiar de combinacion y le escribe
   display:block, que aplastaria un inline-flex.
   -------------------------------------------------------------------------- */
/* En fila y alineados al centro. Al reescribir la hoja para la v2 se perdio
   esta regla, y como el tema deja los <p> en inline-block quedaban uno al
   lado del otro pero desalineados (683 contra 678 px). */
#product .ebf-estado {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
#product .ebf-estado > p { margin: 0; }
#product .ebf-stock {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  position: relative;
  overflow: hidden;
  padding: 7px 15px 7px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ebf-verde);
  background: var(--ebf-verde-cl);
}
#product .ebf-stock::after {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 38%; height: 100%;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.85), rgba(255,255,255,0));
  transform: translateX(-160%);
  animation: ebfPasa 3.4s ease-in-out infinite;
}
@keyframes ebfPasa {
  0%, 55% { transform: translateX(-160%); }
  100%    { transform: translateX(330%); }
}
#product .ebf-stock__p {
  position: relative;
  z-index: 1;
  width: 9px; height: 9px;
  flex: none;
  border-radius: 50%;
  background: currentColor;
}
#product .ebf-stock__p::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid currentColor;
  animation: ebfRadar 2.4s cubic-bezier(.2,.6,.3,1) infinite;
}
@keyframes ebfRadar {
  0%       { transform: scale(.55); opacity: .8; }
  70%,100% { transform: scale(1.9);  opacity: 0; }
}
/* 🔴 El tema estiliza #availability_label y #availability_value POR ID, asi
   que una clase nuestra pierde siempre. Por eso aqui se los nombra: es la
   unica forma, y va acotado DENTRO de nuestra pastilla. Sin esto el rotulo
   «Disponibilidad:» seguia a la vista y el valor salia en una caja verde
   oscura con su propio relleno, encima de nuestra pastilla. */
#product .ebf-stock #availability_label { display: none; }
#product .ebf-stock #availability_value {
  display: inline;
  padding: 0;
  background: none;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
}
#product .ebf-stock__t { position: relative; z-index: 1; }
#product .ebf-stock--no { color: var(--ebf-suave); background: #f1f1f1; }
#product .ebf-stock--no .ebf-stock__p::after,
#product .ebf-stock--no::after { animation: none; opacity: 0; }
#product .ebf-off { display: none; }

/* --------------------------------------------------------------------------
   5b · Pocas unidades
   --------------------------------------------------------------------------
   El aviso es del tema y es REAL: sale cuando quedan $last_qties o menos
   (hoy, 3). Lo unico que cambia es como se ve. Venia con .warning_inline,
   que lo pintaba de AMARILLO FLUOR: rgb(239,255,0) sobre texto mostaza.

   El indicador son tres barras que van bajando y la ultima parpadea: se
   entiende sin leer, y no dice cuantas quedan --la tienda tiene apagado
   mostrar cantidades exactas y decirlo aqui la contradiria--.

   La pastilla es el <span>, no el <p>: product.js le hace .show('slow') al
   parrafo y le escribe display:block.
   -------------------------------------------------------------------------- */
/* 🔴 EL PARRAFO tambien viene pintado de amarillo, no solo el texto.
   .warning_inline le pone fondo rgb(239,255,0), color mostaza y 4px de
   relleno, asi que asomaba como un MARCO amarillo alrededor de la pastilla
   (el <p> medía 239x39 y la pastilla 223x32).
   Se apaga sobre NUESTRA clase, con la especificidad suficiente. */
#product .ebf-estado .ebf-pocas__p,
#product .ebf-pocas__p {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  background-color: transparent;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  text-align: left;
}
#product .ebf-pocas {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 7px 15px 7px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: #b5561d;
  background: #fdf3ea;
  background: linear-gradient(135deg, #fdf3ea, #fbe8d8);
  box-shadow: inset 0 0 0 1px rgba(181,86,29,.16);
}
#product .ebf-pocas__b {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  flex: none;
  height: 13px;
}
#product .ebf-pocas__b i {
  display: block;
  width: 3px;
  border-radius: 1px;
  background: currentColor;
  transform-origin: bottom;
}
#product .ebf-pocas__b i:nth-child(1) { height: 13px; opacity: 1; }
#product .ebf-pocas__b i:nth-child(2) { height: 10px; opacity: .62; }
#product .ebf-pocas__b i:nth-child(3) {
  height: 7px;
  animation: ebfUltima 1.9s ease-in-out infinite;
}
@keyframes ebfUltima {
  0%, 100% { opacity: .95; transform: scaleY(1); }
  50%      { opacity: .22; transform: scaleY(.62); }
}

/* --------------------------------------------------------------------------
   6 · Cantidad y botones
   -------------------------------------------------------------------------- */
/* El stock estaba pegado al precio: 0 px medidos. */
#product .ebf-compra { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
#product .ebf-fila {
  display: flex;
  align-items: flex-end;   /* la cantidad lleva rotulo encima: centrada
                              quedaria 12 px mas abajo que el boton */
  gap: 12px;
  flex-wrap: wrap;
}
#product .ebf-cant__t {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--ebf-suave);
}
#product .ebf-cant { display: inline-flex; align-items: stretch; height: 52px; gap: 7px; }

/* Son <a>, no <button>: asi los reconoce product.js por sus clases
   .product_quantity_up / .product_quantity_down, que ya hace preventDefault
   y ya mueve el input. Como <a> no admite [disabled], el estado apagado va
   por clase y se comprueba tambien en JS. */
#product .ebf-cant__b {
  display: grid;
  place-items: center;
  width: 46px;
  border: 0;
  border-radius: 12px;
  background: var(--ebf-rosa);
  font-size: 20px;
  line-height: 1;
  color: #4a2c25;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  transition: transform .16s cubic-bezier(.34,1.5,.64,1), background .16s ease;
}
#product .ebf-cant__b:hover,
#product .ebf-cant__b:focus {
  background: var(--ebf-nude2);
  color: #4a2c25;
  text-decoration: none;
  transform: translateY(-2px);
}
#product .ebf-cant__b:active { transform: translateY(0) scale(.92); }
#product .ebf-cant__b.ebf-off2 {
  opacity: .4;
  cursor: not-allowed;
  pointer-events: none;
  transform: none;
  background: var(--ebf-rosa);
}
/* #quantity_wanted lo dibuja el tema: aqui solo se le da forma DENTRO de
   nuestra caja, nada fuera de ella. */
#product .ebf-cant #quantity_wanted {
  width: 58px;
  height: 52px;
  padding: 0;
  border: 1px solid var(--ebf-linea);
  border-radius: 12px;
  box-shadow: none;
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  color: var(--ebf-tinta);
  background: var(--ebf-papel);
  transition: border-color .2s ease;
}
#product .ebf-cant--viva #quantity_wanted { border-color: var(--ebf-nude3); }
/* el subrayado que aparece al mover la cantidad */
#product .ebf-cant__sub {
  position: absolute;
  left: 50%;
  bottom: 8px;
  width: 0;
  height: 2px;
  border-radius: 2px;
  background: var(--ebf-nude3);
  transform: translateX(-50%);
  transition: width .28s cubic-bezier(.34,1.4,.64,1);
}
#product .ebf-cant__caja { position: relative; }
#product .ebf-cant__num  { position: relative; display: inline-block; }
#product .ebf-cant--viva .ebf-cant__sub { width: 24px; }

#product .ebf-acciones { display: contents; }
#product .ebf-b-caja   { flex: 1 1 auto; min-width: 210px; line-height: 0; }
#product .ebf-b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  height: 52px;
  margin: 0;
  padding: 0 14px;
  max-width: none;
  border-radius: var(--ebf-r);
  line-height: 1;
  text-align: center;
}
#product .ebf-b-caja .ebf-b,
#product .ebf-b-caja .ebf-b.ebp-b { width: 100%; }

/* El boton de anadir ES el de las tarjetas (.ebp-b). Aqui solo cambia de
   talla: ni un color, ni una animacion, ni un tiempo.
   El circulo del cierre tiene que seguir al alto o cierra en ovalo. */
#product .ebf-b.ebp-b {
  width: 100%;
  height: 52px;
  margin-top: 0;
  border-radius: var(--ebf-r);
  font-size: 15px;
  letter-spacing: .02em;
  -webkit-clip-path: inset(0 0 0 0 round 10px);
          clip-path: inset(0 0 0 0 round 10px);
}
#product .ebf-b.ebp-b:before     { border-radius: var(--ebf-r); }
#product .ebf-b.ebp-b .ebp-c svg { width: 19px; height: 19px; }
#product .ebf-b.ebp-b .ebp-t     { width: 23px; height: 23px; }
#product .ebf-b.ebp-b.ebp-va {
  -webkit-clip-path: inset(0 calc(50% - 26px) 0 calc(50% - 26px) round 26px);
          clip-path: inset(0 calc(50% - 26px) 0 calc(50% - 26px) round 26px);
}

/* WhatsApp: relleno, destello que barre y el icono que saluda */
#product .ebf-b--wa {
  position: relative;
  overflow: hidden;
  flex: 1 1 100%;
  width: 100%;
  margin-top: 0;
}
#product .ebf-b--wa::after {
  content: '';
  position: absolute;
  top: -60%; left: 0;
  width: 42%; height: 220%;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.5), rgba(255,255,255,0));
  transform: translateX(-190%) rotate(14deg);
  animation: ebfBrillo 4.4s cubic-bezier(.45,0,.25,1) infinite;
}
#product .ebf-wa {
  width: 20px; height: 20px;
  flex: none;
  position: relative;
  z-index: 1;
  transform-origin: 60% 60%;
  animation: ebfSaluda 3.2s ease-in-out infinite;
}
@keyframes ebfSaluda {
  0%, 72%, 100% { transform: rotate(0)      scale(1); }
  78%           { transform: rotate(-13deg) scale(1.1); }
  84%           { transform: rotate(10deg)  scale(1.1); }
  90%           { transform: rotate(-5deg)  scale(1.04); }
}
#product .ebf-b--wa span { position: relative; z-index: 1; }

/* --------------------------------------------------------------------------
   7 · Copiar enlace — cuadrado que se ensancha al pasar el mouse
   --------------------------------------------------------------------------
   Reemplaza a «Enviar a un amigo» y «Compartir». Medido: 52 px en reposo,
   155 px con el mouse encima.
   -------------------------------------------------------------------------- */
#product .ebf-sh {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 52px;
  min-width: 52px;
  padding: 0;
  border: 0;
  border-radius: 14px;
  font: inherit;
  color: var(--ebf-marron);
  background: var(--ebf-rosa);
  cursor: pointer;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
#product .ebf-sh::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 14px;
  pointer-events: none;
  box-shadow: 0 0 0 0 rgba(223,171,151,.7);
  animation: ebfAro 2.6s cubic-bezier(.2,.6,.3,1) infinite;
}
@keyframes ebfAro {
  0%       { box-shadow: 0 0 0 0   rgba(223,171,151,.65); }
  70%,100% { box-shadow: 0 0 0 12px rgba(223,171,151,0); }
}
#product .ebf-sh__stack {
  display: grid;
  place-items: center;
  gap: 1px;
  width: 52px;
  flex: none;
  transition: width .3s cubic-bezier(.2,.8,.3,1);
}
#product .ebf-sh__stack svg { width: 18px; height: 18px; }
#product .ebf-sh__chico {
  max-height: 12px;
  overflow: hidden;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: 1;
  transition: max-height .24s cubic-bezier(.2,.8,.3,1), opacity .18s ease;
}
/* Ya NO se ensancha al pasar el mouse: se pidio quitarlo. Queda del mismo
   tamano siempre; el mouse solo lo levanta y le cambia el color. */
#product .ebf-sh:hover,
#product .ebf-sh:focus-visible {
  transform: translateY(-2px);
  background: var(--ebf-nude2);
  color: #4a2c25;
}
#product .ebf-sh--ok { background: var(--ebf-verde); color: #fff; }
#product .ebf-sh--ok::after { animation: none; }
#product .ebf-sh__tic { stroke-dasharray: 22; stroke-dashoffset: 22; }
#product .ebf-sh--ok .ebf-sh__tic { animation: ebfTrazo .34s ease .06s forwards; }
@keyframes ebfTrazo { to { stroke-dashoffset: 0; } }

/* --------------------------------------------------------------------------
   8 · Los corazones — misma tecnica que 1custom.css
   --------------------------------------------------------------------------
   Un solo dibujo recortado por mascara y el color lo pone el fondo: las
   cuatro variantes no cuestan cuatro imagenes. Solo transform y opacity.
   -------------------------------------------------------------------------- */
#product .ebf-cor,
.ebf-cor {
  position: fixed;
  z-index: 2147479999;
  pointer-events: none;
  opacity: 0;
  background: #e0788c;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21.3l-1.5-1.4C5.4 15.4 2 12.3 2 8.5 2 5.4 4.4 3 7.5 3c1.7 0 3.4.8 4.5 2.1C13.1 3.8 14.8 3 16.5 3 19.6 3 22 5.4 22 8.5c0 3.8-3.4 6.9-8.5 11.4L12 21.3z'/%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'%3E%3Cpath d='M12 21.3l-1.5-1.4C5.4 15.4 2 12.3 2 8.5 2 5.4 4.4 3 7.5 3c1.7 0 3.4.8 4.5 2.1C13.1 3.8 14.8 3 16.5 3 19.6 3 22 5.4 22 8.5c0 3.8-3.4 6.9-8.5 11.4L12 21.3z'/%3E%3C/svg%3E") center/contain no-repeat;
  transform: translate3d(0,0,0);
  will-change: transform, opacity;
}
.ebf-cor--b { background: #dfab97; }
.ebf-cor--c { background: #c9788a; }
.ebf-cor--d { background: #f7ddd0; }

/* --------------------------------------------------------------------------
   9 · La foto — se levanta al pasar el mouse
   --------------------------------------------------------------------------
   El zoom del tema esta apagado (jqZoomEnabled = false), asi que el hover
   estaba libre y no pisa nada.
   -------------------------------------------------------------------------- */
#product .ebf-foto {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  transition: transform .35s cubic-bezier(.2,.8,.3,1), box-shadow .35s ease;
}
#product .ebf-foto::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 12px;
  pointer-events: none;
  background: radial-gradient(circle at 50% 45%, rgba(223,171,151,.34), transparent 62%);
  opacity: 0;
  transition: opacity .35s ease;
}
#product .ebf-foto img { transition: transform .45s cubic-bezier(.2,.7,.3,1); }
#product .ebf-foto:hover { transform: translateY(-6px); box-shadow: 0 16px 34px -14px rgba(91,56,48,.45); }
#product .ebf-foto:hover::before { opacity: 1; }
#product .ebf-foto:hover img { transform: scale(1.05); }

/* --------------------------------------------------------------------------
   10 · La ficha de datos, bajo la foto
   --------------------------------------------------------------------------
   Se movio aqui porque la columna izquierda tenia 459 px vacios: medido,
   470 px de alto contra 929 de la derecha.
   -------------------------------------------------------------------------- */
#product .ebf-ficha {
  margin-top: 14px;
  padding: 13px 15px;
  border: 1px solid var(--ebf-linea);
  border-radius: 12px;
  background: var(--ebf-papel);
}
#product .ebf-ficha__f {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 5px 0;
  font-size: 12.5px;
}
#product .ebf-ficha__f + .ebf-ficha__f { border-top: 1px dashed #f0e8e4; }
#product .ebf-ficha__k { flex: none; min-width: 74px; color: var(--ebf-suave); }
#product .ebf-ficha__v { font-weight: 600; color: var(--ebf-texto); }
#product .ebf-ficha__v a { color: var(--ebf-marron); text-decoration: none; }
#product .ebf-ficha__v a:hover { text-decoration: underline; }

/* --------------------------------------------------------------------------
   11 · Medios de pago — carrusel
   --------------------------------------------------------------------------
   Los diez logos son los oficiales de Pagopar, los mismos que el cliente ve
   al pagar: estaban en modules/pagopar/.../front/validation.tpl apuntando a
   cdn.pagopar.com. Estan copiados al tema (img/eb-pago-*.png) para no
   depender de un servidor ajeno en cada ficha.
   -------------------------------------------------------------------------- */
#product .ebf-pagos__t {
  margin: 0 0 8px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: #a2908a;
}
#product .ebf-pagos {
  position: relative;
  width: 100%;
  overflow: hidden;
  -webkit-mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
          mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
}
#product .ebf-pagos__tira {
  display: flex;
  gap: 10px;
  width: max-content;
  animation: ebfCorre 30s linear infinite;
}
#product .ebf-pagos:hover .ebf-pagos__tira { animation-play-state: paused; }
@keyframes ebfCorre { from { transform: translateX(0); } to { transform: translateX(-50%); } }
#product .ebf-pg {
  display: grid;
  place-items: center;
  flex: none;
  height: 40px;
  padding: 0 12px;
  border: 1px solid var(--ebf-linea);
  border-radius: 9px;
  background: var(--ebf-papel);
  transition: transform .2s ease, box-shadow .2s ease;
}
#product .ebf-pg:hover { transform: translateY(-2px); box-shadow: 0 6px 14px -8px rgba(91,56,48,.5); }
#product .ebf-pg img { display: block; width: auto; height: auto; max-height: 24px; max-width: 88px; object-fit: contain; }

/* Los «Medios de pago disponibles» viejos: la imagen por defecto de
   PrestaShop con PayPal, Amex, Visa Electron y Maestro, que la tienda NO
   cobra. Los reemplaza el carrusel de arriba, asi que se apagan.
   Se apaga SOLO ese bloque y no el hook entero: si manana se engancha otro
   modulo ahi, se sigue viendo.
   👉 Lo correcto seria desenganchar el modulo `productpaymentlogos` desde el
      admin; esto es el arreglo que se puede hacer sin acceso a esa pantalla. */
#product .ebf-hookacc #product_payment_logos { display: none; }

/* --------------------------------------------------------------------------
   12 · Nota del IVA
   -------------------------------------------------------------------------- */
#product .ebf-nota { margin: 2px 0 0; font-size: 10.5px; line-height: 1.6; color: var(--ebf-suave); }

/* --------------------------------------------------------------------------
   13 · La barra de compra fija del telefono
   --------------------------------------------------------------------------
   Aparece cuando el boton real sale de pantalla. Sin JS no se ve nunca.
   -------------------------------------------------------------------------- */
#product .ebf-barra {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 1040;
  display: none;
  align-items: center;
  gap: 12px;
  padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
  background: var(--ebf-papel);
  border-top: 1px solid var(--ebf-linea);
  box-shadow: 0 -6px 18px rgba(24,39,46,.10);
  transform: translateY(100%);
  transition: transform .22s ease;
}
#product .ebf-barra--on { transform: translateY(0); }
#product .ebf-barra__i  { flex: 1 1 auto; min-width: 0; }
#product .ebf-barra__n  { display: block; font-size: 12px; color: var(--ebf-suave); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#product .ebf-barra__p  { display: block; font-size: 19px; font-weight: 700; color: var(--ebf-tinta); line-height: 1.2; }
#product .ebf-barra__b  {
  flex: none;
  height: 46px;
  padding: 0 22px;
  border: 0;
  border-radius: var(--ebf-r);
  font: inherit;
  font-size: 15px;
  font-weight: 600;
  text-transform: uppercase;
  color: #fff;
  background: var(--ebf-verde);
  cursor: pointer;
}
#product .ebf-barra__b:hover { background: #009f4f; }

/* --------------------------------------------------------------------------
   14 · Por ancho de pantalla
   -------------------------------------------------------------------------- */
@media (min-width: 768px) and (max-width: 991px) {
  #product .ebf-precio__n { font-size: 31px; }
}

@media (max-width: 767px) {
  /* En columna, min-width:0 ya no alcanza: el carrusel mide por contenido y
     estiraba la columna a 1695 px dentro de 360. Se le fija el ancho. */
  #product .ebf-izq,
  #product .ebf-col { width: 100%; flex: none; }

  #product .ebf-col      { gap: 12px; }
  #product .ebf-precio   { padding: 14px; }
  #product .ebf-precio__n{ font-size: 30px; }
  #product .ebf-otras    { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
  #product .ebf-otra     { padding: 8px 10px; }
  /* en telefono no hay cursor: el brillo se queda quieto en el centro y el
     unico efecto util es el de pulsar */
  #product .ebf-otra:hover { transform: none; box-shadow: 0 1px 2px rgba(91,56,48,.07); }
  #product .ebf-otra:hover::before,
  #product .ebf-otra:hover::after { opacity: 0; }
  #product .ebf-otra:hover .ebf-otra__ir { max-height: 0; opacity: 0; }
  #product .ebf-otra:active { transform: scale(.97); }
  #product .ebf-cant     { height: 48px; }
  #product .ebf-cant #quantity_wanted { height: 48px; }
  #product .ebf-cant__b  { width: 44px; }
  #product .ebf-b,
  #product .ebf-b.ebp-b,
  #product .ebf-b--wa    { height: 48px; }
  #product .ebf-b.ebp-b.ebp-va {
    -webkit-clip-path: inset(0 calc(50% - 24px) 0 calc(50% - 24px) round 24px);
            clip-path: inset(0 calc(50% - 24px) 0 calc(50% - 24px) round 24px);
  }
  #product .ebf-b-caja   { min-width: 150px; }
  #product .ebf-sh       { height: 48px; min-width: 48px; }
  #product .ebf-sh__stack{ width: 48px; }
  #product .ebf-barra    { display: flex; }
  #product .ebf-pie-espacio { height: 76px; }
}

/* Quien prefiere menos movimiento, no lo tiene. Las animaciones de .ebp-b
   ya las apaga 1custom.css con su propio bloque. */
@media (prefers-reduced-motion: reduce) {
  #product .ebf-precio::after,
  #product .ebf-stock::after,
  #product .ebf-stock__p::after,
  #product .ebf-b--wa::after,
  #product .ebf-wa,
  #product .ebf-sh::after,
  #product .ebf-pagos__tira,
  #product .ebf-pocas__b i:nth-child(3),
  #product .ebf-precio--sale .ebf-precio__n,
  #product .ebf-precio--sale .ebf-precio__iva,
  #product .ebf-precio--sale .ebf-otra,
  #product .ebf-precio--entra,
  #product .ebf-precio--entra .ebf-precio__n,
  #product .ebf-precio--entra .ebf-precio__iva,
  #product .ebf-precio--entra .ebf-otra,
  #product .ebf-fichabajo #tab2 .rte h3 { animation: none; }
  /* Sin animacion el degradado dejaria un destello congelado en mitad
     del titulo. Se quita entero y queda el rosa solido. */
  #product .ebf-fichabajo #tab2 .rte h3 {
    background-image: none;
    -webkit-text-fill-color: var(--ebf-rosa-hondo);
  }
  #product .ebf-otra,
  #product .ebf-otra__ir { transition: none; }
  #product .ebf-barra,
  #product .ebf-cant__b,
  #product .ebf-foto,
  #product .ebf-sh { transition: none; }
}

/* --------------------------------------------------------------------------
   9 · La descripcion larga (la pestaña de abajo)              27/08/2026
   --------------------------------------------------------------------------
   El HTML lo escribe el ERP y ya viene bien estructurado. Aqui NO se toca
   el contenido: solo se le da forma a lo que ya existe.

   Todo cuelga de .ebf-fichabajo, una caja propia que product.tpl pone
   alrededor del include. Asi no se toca sub/product_info/tab.tpl, que es
   compartido. Los ids del tema que aparecen (#tab2) van siempre detras de
   una clase propia, y solo para acotar, nunca para repintarlos sueltos.

   Lo que habia que ganar (medido en produccion, ninguna con !important):
     global.css   h1..h6        text-transform: uppercase   <- la ficha GRITABA
     global.css   h3            23px / peso 400
     global.css   h4            17px / peso 400
     global.css   #page .rte    tarjeta blanca con sombra + 15px   (1,1,1)
     product.css  .tab-content  otra tarjeta + 15px                (0,1,0)
   Se gana con #product .ebf-fichabajo ... = (2,2,x), sin un !important.

   Reparto: la TIPOGRAFIA se aplica siempre. La tarjeta y el rotulo de
   pestaña solo con .ebf-1pest, o sea cuando hay una sola. Un producto con
   varias pestañas se queda exactamente como estaba salvo por el texto.
   -------------------------------------------------------------------------- */

/* ── la tarjeta: una sola, no dos ───────────────────────────────────────
   Hoy hay dos encajadas: .tab-content trae borde y 15px, y ademas
   #page .rte le mete otra tarjeta blanca con sombra y otros 15px. */
#product .ebf-fichabajo.ebf-1pest .tab-content {
  padding: 26px 28px;
  border: 1px solid var(--ebf-linea);
  border-radius: 14px;
  background: var(--ebf-papel);
}
#product .ebf-fichabajo.ebf-1pest #tab2 .rte {
  padding: 0; background: none; box-shadow: none; border-radius: 0;
}

/* ── una sola pestaña deja de dibujarse como pestaña ────────────────── */
#product .ebf-fichabajo.ebf-1pest .nav-tabs { border: 0; margin: 0 0 12px; padding: 0; }
#product .ebf-fichabajo.ebf-1pest .nav-tabs > li { float: none; margin: 0; }
#product .ebf-fichabajo.ebf-1pest .nav-tabs > li > a,
#product .ebf-fichabajo.ebf-1pest .nav-tabs > li > a:hover,
#product .ebf-fichabajo.ebf-1pest .nav-tabs > li > a:focus {
  display: inline-block; padding: 0; margin: 0; border: 0;
  background: none; cursor: default;
  font-size: 12px; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; color: var(--ebf-marron-cl);
}

/* ── el texto: 72ch de ancho ────────────────────────────────────────────
   Medido en la tienda: la linea mide 1.122 px, unas 150 letras. El ojo
   pierde el renglon al volver. 72ch deja unas 72. */
#product .ebf-fichabajo #tab2 .rte {
  max-width: 72ch;
  font-size: 15px; line-height: 1.72; color: var(--ebf-texto);
  /* Seguro contra palabras largas futuras. Hoy no hace falta --la mas
     larga de 103 productos mide 14 letras en el cuerpo-- pero el texto
     lo escribe un ERP y podria meter una URL o un compuesto sin
     espacios. Solo actua cuando la palabra no cabe de verdad. */
  overflow-wrap: break-word;
}

/* ── el titulo ──────────────────────────────────────────────────────
   Deja de gritar --el tema lo pone en mayusculas-- y se separa del
   parrafo: tenia 4px debajo y se leia pegado, como un bloque solo. */
#product .ebf-fichabajo #tab2 .rte h3 {
  margin: 0 0 18px;
  font-size: 23px; line-height: 1.28; font-weight: 700;
  color: var(--ebf-rosa-hondo); text-transform: none; letter-spacing: -.01em;
}

/* El destello dorado que recorre las letras.

   Como funciona: el texto se pinta transparente y el color se lo da un
   degradado recortado a la forma de las letras. Moviendo el degradado,
   el brillo viaja por encima del texto.

   VA DENTRO DE @supports A PROPOSITO. El efecto deja el texto
   transparente: si el navegador no supiera recortar el degradado, el
   titulo quedaria INVISIBLE. Sin soporte no entra aqui y queda el rosa
   solido, que ya esta puesto arriba.

   Se usa -webkit-text-fill-color y no color:transparent por lo mismo:
   si el recorte funcionara pero el relleno no, se veria el color solido
   en vez de nada. */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  #product .ebf-fichabajo #tab2 .rte h3 {
    /* DOS destellos en el degradado, no uno. El degradado mide dos
       anchos de titulo y lleva un destello en cada mitad, asi que al
       repetirse hay uno cada ancho de titulo: cuando uno sale por la
       derecha, el siguiente ya esta entrando por la izquierda. Nunca
       queda el titulo sin brillo.

       Ademas el dibujo se repite cada mitad --el 25% y el 75% son
       identicos, y el 0%, 50% y 100% tambien-- asi que desplazarlo
       justo un ancho lo deja igual que estaba: el bucle no da tirones. */
    background-image: linear-gradient(100deg,
      var(--ebf-rosa-hondo) 0%,
      var(--ebf-rosa-hondo) 19%, #c98467 22%, #e9c49b 25%,
      #c98467 28%, var(--ebf-rosa-hondo) 31%,
      var(--ebf-rosa-hondo) 69%, #c98467 72%, #e9c49b 75%,
      #c98467 78%, var(--ebf-rosa-hondo) 81%,
      var(--ebf-rosa-hondo) 100%);
    background-size: 200% 100%;
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: ebfBrilloTitulo 5s linear infinite;
  }
}
/* De derecha a izquierda del degradado = el brillo va de izquierda a
   derecha del titulo. Un ciclo desplaza exactamente un ancho de titulo,
   que es justo lo que mide el dibujo repetido: por eso empalma solo. */
@keyframes ebfBrilloTitulo {
  from { background-position: 100% 0; }
  to   { background-position: 0% 0; }
}

/* la entradilla: el primer parrafo hace de resumen */
#product .ebf-fichabajo #tab2 .rte h3 + p {
  margin: 0 0 26px; padding-bottom: 22px;
  border-bottom: 1px solid var(--ebf-linea);
  font-size: 16.5px; line-height: 1.68; color: #55585c;
}
#product .ebf-fichabajo #tab2 .rte h3 + p strong {
  color: var(--ebf-tinta); font-weight: 600;
}

/* los rotulos: versalitas con una linea que se desvanece */
#product .ebf-fichabajo #tab2 .rte h4 {
  display: flex; align-items: center; gap: 10px;
  margin: 30px 0 13px;
  font-size: 12px; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; color: var(--ebf-marron); line-height: 1.4;
}
#product .ebf-fichabajo #tab2 .rte h4::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--ebf-nude2), rgba(223,171,151,0));
}

#product .ebf-fichabajo #tab2 .rte p { margin: 0 0 14px; }
#product .ebf-fichabajo #tab2 .rte ul,
#product .ebf-fichabajo #tab2 .rte ol { margin: 0 0 6px; padding: 0; list-style: none; }

/* ── las ventajas: cada una con su tilde ────────────────────────────── */
#product .ebf-fichabajo #tab2 .rte ul li {
  position: relative; padding: 0 0 0 28px; margin: 0 0 11px; line-height: 1.66;
}
#product .ebf-fichabajo #tab2 .rte ul li::before {
  content: ''; position: absolute; left: 0; top: .45em;
  width: 17px; height: 17px; border-radius: 50%;
  background: var(--ebf-rosa) no-repeat center / 9px 9px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237d4f45' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.6 10 17.4 19 7.2'/%3E%3C/svg%3E");
}
#product .ebf-fichabajo #tab2 .rte ul li strong {
  color: var(--ebf-marron); font-weight: 600;
}

/* ── la ficha tecnica: dos columnas con guia de puntos ──────────────────
   La clase se la pone el JS al ul que sigue al rotulo que contiene
   "specifica". Si no lo encuentra, se queda con el estilo de ventajas. */
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs {
  margin-bottom: 8px; border: 1px solid var(--ebf-linea);
  border-radius: 12px; overflow: hidden; background: var(--ebf-papel);
}
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs li {
  display: flex; align-items: baseline; gap: 10px;
  padding: 10px 15px; margin: 0; line-height: 1.5;
  font-weight: 600; color: var(--ebf-tinta);
}
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs li + li { border-top: 1px solid #f4eeea; }
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs li::before { display: none; }
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs li strong {
  flex: none; min-width: 34%;
  color: var(--ebf-suave); font-weight: 400; font-size: 13.5px;
}
#product .ebf-fichabajo #tab2 .rte ul.ebf-specs li strong::after {
  content: ''; display: inline-block; width: 100%; margin-left: 6px;
  border-bottom: 1px dotted #ded2cb; transform: translateY(-3px);
}

/* ── el modo de uso: numeros en circulo unidos por un carril ────────── */
#product .ebf-fichabajo #tab2 .rte ol { counter-reset: ebfpaso; padding-left: 2px; }
#product .ebf-fichabajo #tab2 .rte ol li {
  position: relative; counter-increment: ebfpaso;
  padding: 0 0 0 40px; margin: 0 0 16px; line-height: 1.66;
}
#product .ebf-fichabajo #tab2 .rte ol li::before {
  content: counter(ebfpaso); position: absolute; left: 0; top: -1px;
  width: 26px; height: 26px; border-radius: 50%;
  display: grid; place-items: center;
  font-size: 12px; font-weight: 700; color: #4a2c25;
  background: linear-gradient(135deg, var(--ebf-nude1), var(--ebf-nude2));
}
#product .ebf-fichabajo #tab2 .rte ol li:not(:last-child)::after {
  content: ''; position: absolute; left: 12.5px; top: 28px; bottom: -14px;
  width: 1px; background: #eadfd9;
}
#product .ebf-fichabajo #tab2 .rte ol li strong {
  color: var(--ebf-marron); font-weight: 600;
}

/* ── telefono ───────────────────────────────────────────────────────────
   La ficha tecnica se parte en dos renglones: en 360 px no caben dos
   columnas con guia de puntos sin que el dato quede en un hilo. */
@media (max-width: 767px) {
  #product .ebf-fichabajo.ebf-1pest .tab-content { padding: 18px 16px; }
  #product .ebf-fichabajo #tab2 .rte { font-size: 14.5px; }
  #product .ebf-fichabajo #tab2 .rte h3 { font-size: 20px; }
  #product .ebf-fichabajo #tab2 .rte h3 + p { font-size: 15px; margin-bottom: 22px; padding-bottom: 18px; }
  #product .ebf-fichabajo #tab2 .rte h4 { margin-top: 26px; }
  #product .ebf-fichabajo #tab2 .rte ul.ebf-specs li { flex-direction: column; gap: 1px; }
  #product .ebf-fichabajo #tab2 .rte ul.ebf-specs li strong { min-width: 0; }
  #product .ebf-fichabajo #tab2 .rte ul.ebf-specs li strong::after { display: none; }
}
