/* ==========================================================================
   ESTILOS v2 — hoja única de TODAS las páginas públicas con la piel nueva:
   cabecera y pie (nav-v2.php), entrar, registro, galería, ficha de galería,
   precio y contacto.

   Se carga DESPUÉS de base.css y marketing.css:
     $hojas = ['css/estilos-v2.css'];
   Y en la portada, las dos, en este orden:
     $hojas = ['css/estilos-v2.css', 'css/index-nuevo.css'];
   index-nuevo.css solo aporta lo propio del índice (héroe 360, dock y pin del
   visor); la paleta y las primitivas viven acá y son los MISMOS valores, así
   que cargar las dos no cambia nada visualmente.

   Vocabulario propio `v2-*`, para no chocar con `pt-*` (portada actual) ni con
   `mk-*` (sistema del resto del sitio). Las clases ajenas que aparecen son
   exactamente tres y todas son ganchos de código que ya existe: `mk-nav` y
   `mk-pie` (JS del menú del layout), `campo-ojo` y `trampa`/`mk-trampa` (JS de
   auth y trampa de robots), y `oculto-visual` (base.css).

   FUENTE: cero descargas, cero @font-face, cero CDNs. Se nombra "Space Grotesk"
   y "JetBrains Mono" por si el visitante las tiene instaladas y si no cae en la
   misma pila del sistema que declara base.css (--fuente / --fuente-num).

   Índice
     1. Paleta, tipografía y fondo
     2. Primitivas: secciones, títulos, botones, avisos
     3. Cabecera y pie
     3.bis Dock: nav flotante de accesos rápidos (portada + galería)
     4. Formularios (entrar, registro, contacto)
     5. Galería: grilla de showrooms
     5.bis Galería en MÓVIL: feed a pantalla completa
     5.ter Galería en ESCRITORIO/TABLET: revertido a la grilla clásica
     6. Ficha de galería: tour + panel
     7. Precio: planes, tabla comparativa, FAQ
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Paleta, tipografía y fondo
   Se declara en `.v2` y no en :root para que no se filtre al showroom del
   cliente, que tiene su propio sistema de color.
   -------------------------------------------------------------------------- */

.v2 {
  --v2-fondo:      #0f0f10;
  --v2-carta:      #141416;
  --v2-tinta:      #f2efe9;
  --v2-cobre:      #c8763a;
  --v2-cobre-alto: #dd8b4d;
  --v2-noche:      #05080c;

  --v2-tinta-82:   rgba(242, 239, 233, .82);
  --v2-tinta-72:   rgba(242, 239, 233, .72);
  --v2-tinta-70:   rgba(242, 239, 233, .70);
  --v2-tinta-55:   rgba(242, 239, 233, .55);
  --v2-tinta-45:   rgba(242, 239, 233, .45);
  --v2-tinta-34:   rgba(242, 239, 233, .34);

  --v2-borde:      rgba(255, 255, 255, .09);
  --v2-borde-2:    rgba(255, 255, 255, .14);
  --v2-vidrio:     rgba(255, 255, 255, .10);
  --v2-vidrio-alto: rgba(255, 255, 255, .18);
  --v2-error:      #e0705a;

  --v2-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system,
             "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --v2-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono",
             Consolas, monospace;

  --v2-ancho: 1120px;

  background: var(--v2-fondo);
  color: var(--v2-tinta);
  font-family: var(--v2-sans);
  -webkit-font-smoothing: antialiased;
}

/* El fondo tiene que llegar al <html>: si solo se pinta `.v2`, el rebote del
   scroll en iOS y el área bajo el pie salen blancas sobre un diseño oscuro. */
.cuerpo-v2,
html:has(.cuerpo-v2) { background: #0f0f10; color: #f2efe9; }

.v2 *, .v2-nav *, .v2-pie * { box-sizing: border-box; }
.v2 a { color: var(--v2-cobre); text-decoration: none; }
.v2 a:hover { color: var(--v2-cobre-alto); }

/* --------------------------------------------------------------------------
   2. Primitivas
   -------------------------------------------------------------------------- */

.v2-sec {
  max-width: var(--v2-ancho);
  margin: 0 auto;
  padding: 34px 18px 0;
}
.v2-sec--cab { padding-top: 26px; }
.v2-sec:last-child { padding-bottom: 44px; }

.v2-kicker {
  font: 700 9px/1 var(--v2-mono);
  letter-spacing: .16em;
  color: var(--v2-cobre);
  margin: 0 0 10px;
  text-transform: uppercase;
}

.v2-h1 {
  font: 600 clamp(1.7rem, 1.2rem + 2.4vw, 2.9rem)/1.06 var(--v2-sans);
  letter-spacing: -.03em;
  margin: 0 0 12px;
  text-wrap: pretty;
}
/* En una página interior el <h1> no compite con una panorámica detrás, así que
   no necesita el tamaño del héroe. */
.v2-h1--pagina {
  font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.2rem);
  max-width: 26ch;
}

.v2-h2 {
  font: 600 22px/1.15 var(--v2-sans);
  letter-spacing: -.02em;
  margin: 0 0 6px;
  text-wrap: pretty;
}

.v2-h3 { font: 600 15px/1.25 var(--v2-sans); margin: 0 0 6px; }

.v2-lead {
  font: 400 13.5px/1.5 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin: 0 0 20px;
  max-width: 56ch;
  text-wrap: pretty;
}

.v2-p {
  font: 400 12.5px/1.5 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin: 0;
  text-wrap: pretty;
}
.v2-p--cierre { font-size: 13px; color: var(--v2-tinta-70); max-width: 50ch; }

.v2-nota-plan {
  font: 400 12px/1.5 var(--v2-sans);
  color: var(--v2-tinta-45);
  margin: 14px 0 0;
  max-width: 70ch;
}

.v2-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 24px 0 0;
}

.v2-tarjeta {
  background: var(--v2-carta);
  border: 1px solid var(--v2-borde);
  border-radius: 18px;
  padding: 18px;
}

.v2-chip {
  font: 700 9px/1 var(--v2-mono);
  letter-spacing: .14em;
  background: rgba(15, 15, 16, .6);
  border: 1px solid rgba(255, 255, 255, .16);
  padding: 6px 9px;
  border-radius: 9999px;
  text-transform: uppercase;
}

/* Botones. min-height 46px: piso de área táctil, no una decisión estética. */
.v2-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  padding: 0 20px;
  border-radius: 9999px;
  border: 0;
  font: 700 14px/1 var(--v2-sans);
  color: var(--v2-tinta);
  cursor: pointer;
  transition: background .18s ease, border-color .18s ease;
}
.v2-btn--cobre { background: var(--v2-cobre); color: #0f0f10; }
.v2-btn--cobre:hover { background: var(--v2-cobre-alto); color: #0f0f10; }
.v2-btn--vidrio {
  background: var(--v2-vidrio);
  border: 1px solid rgba(255, 255, 255, .2);
  font-weight: 600;
}
.v2-btn--vidrio:hover { background: var(--v2-vidrio-alto); color: var(--v2-tinta); }
.v2-btn--bloque { width: 100%; }
.v2-btn--sm { min-height: 40px; padding: 0 14px; font-size: 13px; }
.v2-btn--icono { width: 46px; padding: 0; flex: none; }
.v2-btn:focus-visible { outline: 2px solid var(--v2-tinta); outline-offset: 2px; }

/* Avisos. El de error lleva borde propio y no solo color de texto: el color
   por sí solo no es una señal accesible. */
.v2-aviso {
  display: flex;
  align-items: center;
  gap: 9px;
  border-radius: 12px;
  padding: 11px 13px;
  margin: 0 0 18px;
  font: 500 12.5px/1.45 var(--v2-sans);
}
.v2-aviso--ok {
  background: rgba(200, 118, 58, .14);
  border: 1px solid rgba(200, 118, 58, .35);
}
.v2-aviso--error {
  background: rgba(224, 112, 90, .12);
  border: 1px solid rgba(224, 112, 90, .45);
  color: #f6d4cc;
}

/* --------------------------------------------------------------------------
   3. Cabecera y pie
   `.mk-nav` y `.mk-pie` se conservan como clase para el JS del menú del layout;
   todo el estilo lo ponen `.v2-nav` y `.v2-pie`.
   -------------------------------------------------------------------------- */

.v2-nav {
  position: sticky;
  top: 0;
  z-index: 30;
  background: linear-gradient(#0f0f10 58%, rgba(15, 15, 16, .88) 84%, rgba(15, 15, 16, .72));
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, .06);
}

.v2-nav-inner {
  max-width: var(--v2-ancho);
  margin: 0 auto;
  padding: 13px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.v2-nav-logo { display: flex; color: #f2efe9; flex: none; }
.v2-nav-logo:hover { color: #fff; }
.v2-nav-logo svg { display: block; font-family: "Space Grotesk", ui-sans-serif, system-ui, sans-serif; }

.v2-nav-links {
  display: flex;
  align-items: center;
  gap: 8px;
}

.v2-nav-link {
  font: 500 13px/1 var(--v2-sans);
  color: var(--v2-tinta-55);
  padding: 12px 8px;
}
.v2-nav-link:hover { color: var(--v2-tinta); }

.v2-idiomas { display: flex; gap: 4px; }
.v2-idioma {
  font: 700 10px/1 var(--v2-mono);
  letter-spacing: .12em;
  color: var(--v2-tinta-55);
  border: 1px solid var(--v2-borde-2);
  background: rgba(255, 255, 255, .04);
  border-radius: 11px;
  padding: 11px 10px;
}
.v2-idioma:hover { color: var(--v2-tinta); background: rgba(255, 255, 255, .1); }

/* El botón del menú solo existe bajo 820px: arriba de eso los enlaces caben. */
.v2-nav-menu {
  display: none;
  min-height: 40px;
  padding: 0 13px;
  border-radius: 11px;
  border: 1px solid var(--v2-borde-2);
  background: rgba(255, 255, 255, .05);
  color: var(--v2-tinta);
  font: 600 13px/1 var(--v2-sans);
  cursor: pointer;
}

@media (max-width: 819px) {
  .v2-nav-menu { display: inline-flex; align-items: center; }
  /* Cerrado por defecto; el JS del layout pone data-abierto="1". */
  .v2-nav-links {
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 12px 18px 18px;
    background: #0f0f10;
    border-bottom: 1px solid var(--v2-borde);
  }
  .v2-nav[data-abierto="1"] .v2-nav-links { display: flex; }
  .v2-nav-inner { position: relative; }
  .v2-nav-link { padding: 13px 0; }
  .v2-idiomas { padding: 6px 0; }
}

.v2-pie {
  margin-top: 54px;
  border-top: 1px solid var(--v2-borde);
  background: #0c0c0d;
  color: var(--v2-tinta);
  font-family: var(--v2-sans);
}

.v2-pie-inner {
  max-width: var(--v2-ancho);
  margin: 0 auto;
  padding: 26px 18px 34px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.v2-pie-marca {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 14px;
}
.v2-pie-iso {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font: 600 14px/1 var(--v2-sans);
  color: var(--v2-tinta);
}
.v2-pie-lugar { font: 400 11.5px/1.4 var(--v2-sans); color: var(--v2-tinta-45); }

.v2-pie-nav { display: flex; flex-wrap: wrap; gap: 10px 18px; }
.v2-pie-nav a { font: 400 12.5px/1.4 var(--v2-sans); color: var(--v2-tinta-55); }
.v2-pie-nav a:hover { color: var(--v2-tinta); }

.v2-pie-legal {
  font: 400 11.5px/1.6 var(--v2-sans);
  color: var(--v2-tinta-34);
  margin: 0;
  max-width: 80ch;
}

/* --------------------------------------------------------------------------
   3.bis Dock — nav flotante de accesos rápidos
   Antes vivía SOLO en index-nuevo.css (la portada). Se muda acá el
   30-jul-2026 porque la galería empezó a reusar el mismo parcial de marcado
   (views/layout/dock-v2.php, pedido del dueño: "el mismo nav que la
   portada, el que está abajo") y esta es la única hoja que cargan las dos
   páginas. Ni un valor cambia respecto del original: misma pastilla pegada
   abajo en celular, mismo flotante centrado desde 820px.
   env(safe-area-inset-bottom) por la barra del iPhone: sin eso el último
   ítem queda debajo del indicador y no se puede tocar.
   -------------------------------------------------------------------------- */

.v2-dock {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: space-around;
  gap: 4px;
  border-top: 1px solid rgba(255, 255, 255, .1);
  background: rgba(15, 15, 16, .93);
  backdrop-filter: blur(18px);
  padding: 8px 4px calc(8px + env(safe-area-inset-bottom));
}

@media (min-width: 820px) {
  .v2-dock {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    bottom: 20px;
    width: 540px;
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 26px;
    padding: 10px 18px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .6);
  }
}

.v2-dock-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 6px 8px;
  min-height: 44px;
  color: rgba(242, 239, 233, .42);
  text-decoration: none;
}
.v2-dock-item:hover,
.v2-dock-item:focus-visible { color: var(--v2-tinta); }
.v2-dock-item[aria-current="page"] { color: var(--v2-tinta); }

.v2-dock-item span:last-child {
  font: 700 8px/1 var(--v2-mono);
  letter-spacing: .1em;
  text-transform: uppercase;
}

/* El botón del panel sobresale del dock: es la acción que repite el usuario que
   ya paga, y tiene que distinguirse de los cuatro destinos públicos. */
.v2-dock-item--centro { color: rgba(242, 239, 233, .5); }

/* Las cuatro reglas de color de arriba NO SE ESTABAN APLICANDO, en ninguna
   página del sitio. `.v2 a { color: var(--v2-cobre) }` de la sección 1 pesa
   (0,1,1) y todas ellas son de una sola clase (0,1,0): los cinco destinos del
   dock salían color cobre y el que llevaba `aria-current` no se distinguía del
   resto, que es justo lo que el atributo está ahí para hacer. Medido en
   producción el 2-ago-2026 sobre la portada y sobre /creador/{slug}.
   No hay ni un valor nuevo: son los mismos de arriba con `.v2-dock` delante
   para que pesen más que `.v2 a`. Se revierte borrando este bloque. */
.v2-dock .v2-dock-item          { color: rgba(242, 239, 233, .42); }
.v2-dock .v2-dock-item--centro  { color: rgba(242, 239, 233, .5); }
.v2-dock .v2-dock-item:hover,
.v2-dock .v2-dock-item:focus-visible,
.v2-dock .v2-dock-item[aria-current="page"] { color: var(--v2-tinta); }

.v2-dock-mas {
  width: 46px;
  height: 46px;
  border-radius: 9999px;
  background: var(--v2-tinta);
  color: #0f0f10;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: -16px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .4);
}

/* --------------------------------------------------------------------------
   4. Formularios
   Una sola familia de campos para entrar, registro y contacto: son el mismo
   control y tenerlos distintos solo garantiza que uno se quede atrás.
   -------------------------------------------------------------------------- */

.v2-auth {
  max-width: 400px;
  margin: 0 auto;
  padding: 34px 18px 54px;
}
.v2-auth-h1 {
  font: 600 28px/1.05 var(--v2-sans);
  letter-spacing: -.03em;
  margin: 0 0 7px;
}
.v2-auth-intro {
  font: 400 13px/1.5 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin: 0 0 22px;
}
.v2-auth-nota {
  font: 400 11px/1.5 var(--v2-sans);
  color: var(--v2-tinta-45);
  margin: 14px 0 0;
  text-align: center;
}
.v2-auth-alterna {
  font: 400 12px/1.5 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin: 18px 0 0;
  text-align: center;
}

/* Botón de Google: el parcial real trae sus clases `gauth`/`gbtn` y su propia
   hoja (oauth.css) puede no estar cargada en esta piel. Estas cuatro reglas lo
   dejan igual que el resto de los controles sin recolorear el logo, que es de
   Google y no se toca. */
.v2-google { margin-bottom: 16px; }
.v2-google .gauth { margin: 0; }
.v2-google .gbtn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 48px;
  border: 0;
  border-radius: 13px;
  background: #fff;
  color: #1f1f1f;
  font: 600 13.5px/1 var(--v2-sans);
  cursor: pointer;
}
.v2-google .gbtn:hover { background: rgba(255, 255, 255, .88); }
.v2-google .gbtn__logo { display: flex; }

.v2-separador {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 16px;
  font: 400 11px/1 var(--v2-sans);
  color: var(--v2-tinta-45);
}
.v2-separador::before,
.v2-separador::after {
  content: "";
  flex: 1;
  height: 1px;
  background: rgba(255, 255, 255, .1);
}

.v2-form { display: flex; flex-direction: column; gap: 14px; }
.v2-campo { display: flex; flex-direction: column; gap: 7px; }

.v2-label {
  font: 700 8.5px/1.2 var(--v2-mono);
  letter-spacing: .14em;
  color: var(--v2-tinta-45);
  text-transform: uppercase;
}
.v2-label-fila {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}
.v2-label-enlace { font: 400 11px/1.4 var(--v2-sans); color: var(--v2-cobre); }
.v2-opcional {
  font: 400 8.5px/1 var(--v2-mono);
  letter-spacing: .1em;
  color: var(--v2-tinta-34);
  margin-left: 6px;
}

.v2-input {
  width: 100%;
  min-height: 48px;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .13);
  border-radius: 12px;
  padding: 0 14px;
  color: var(--v2-tinta);
  font: 400 13.5px/1.4 var(--v2-sans);
  outline: none;
}
.v2-input::placeholder { color: rgba(242, 239, 233, .32); }
.v2-input:focus { border-color: rgba(200, 118, 58, .7); background: rgba(255, 255, 255, .07); }
/* aria-invalid y no una clase: el estado lo pone el servidor en el atributo. */
.v2-input[aria-invalid="true"] { border-color: var(--v2-error); }

.v2-area { min-height: 130px; padding: 12px 14px; resize: vertical; line-height: 1.55; }

/* El ojo va dentro del recuadro del campo. Arranca con `hidden` (lo destapa el
   JS de auth), así que sin JS no hay un botón muerto en pantalla. */
.v2-input-conboton { position: relative; display: flex; }
.v2-input-conboton .v2-input { padding-right: 46px; }
.v2-ojo {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: none;
  color: var(--v2-tinta-55);
  cursor: pointer;
}
.v2-ojo:hover { color: var(--v2-tinta); }
.v2-ojo[hidden] { display: none; }

.v2-ayuda { font: 400 11px/1.45 var(--v2-sans); color: var(--v2-tinta-45); margin: 0; }
.v2-error { font: 500 11.5px/1.45 var(--v2-sans); color: var(--v2-error); margin: 0; }

.v2-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font: 400 12px/1.5 var(--v2-sans);
  color: var(--v2-tinta-70);
  cursor: pointer;
}
.v2-check input {
  width: 17px;
  height: 17px;
  margin-top: 2px;
  accent-color: var(--v2-cobre);
  flex: none;
}

/* Trampa para robots: fuera de pantalla y NO display:none — varios bots
   rellenan solo los campos que "existen" y este tiene que parecer uno. */
.v2-trampa {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.v2-contacto { padding-bottom: 54px; }
.v2-contacto-columna { max-width: 560px; }

/* --------------------------------------------------------------------------
   5. Galería
   -------------------------------------------------------------------------- */

.v2-grilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
  margin-top: 16px;
}

.v2-showroom {
  /* `position:relative` no cambia nada en escritorio/tablet (nada adentro
     lo necesita ahi); es lo que en MOVIL (mas abajo) deja anclar la columna
     de acciones a esta tarjeta y no a la grilla entera. */
  position: relative;
  display: block;
  border-radius: 18px;
  overflow: hidden;
  background: var(--v2-carta);
  border: 1px solid var(--v2-borde);
  color: var(--v2-tinta);
  transition: border-color .18s ease, transform .18s ease;
}
.v2-showroom:hover {
  border-color: rgba(200, 118, 58, .55);
  color: var(--v2-tinta);
  transform: translateY(-2px);
}
@media (prefers-reduced-motion: reduce) {
  .v2-showroom:hover { transform: none; }
}

/* El enlace real de la tarjeta. Envuelve exactamente lo mismo que antes
   envolvia `.v2-showroom` (la foto y el cuerpo); solo cambio de nombre para
   que el boton de "compartir" del feed movil pueda ser HERMANO del enlace y
   no HIJO — un <button> adentro de un <a> es contenido invalido y confunde
   el orden de tabulacion. En escritorio no se nota: mismo texto, mismo
   destino, mismo color (hereda el `color` de `.v2-showroom` de arriba). */
.v2-showroom-abrir { display: block; color: inherit; text-decoration: none; }

/* Columna de acciones del feed movil. Solo existe ahi (mas abajo la vuelve
   visible el media query de 819px): en escritorio y tablet no hay nada que
   mostrar en esta columna, asi que se queda oculta y sin ocupar espacio. */
.v2-showroom-acciones { display: none; }

.v2-showroom-foto {
  position: relative;
  display: block;
  height: 150px;
  overflow: hidden;
  background: var(--v2-noche);
}
.v2-showroom-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Sin portada: inicial sobre el color de marca del proyecto. `--marca` la
   inyecta la vista con el color ya validado en PHP. */
.v2-showroom-inicial {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: var(--marca, #0E4FD1);
  color: #fff;
  font: 600 44px/1 var(--v2-sans);
  letter-spacing: -.04em;
}

.v2-cinta {
  position: absolute;
  top: 10px;
  left: 10px;
  font: 700 8px/1 var(--v2-mono);
  letter-spacing: .12em;
  background: var(--v2-cobre);
  color: #0f0f10;
  padding: 5px 8px;
  border-radius: 9999px;
  text-transform: uppercase;
}

.v2-vistas {
  position: absolute;
  top: 10px;
  right: 10px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: 700 8.5px/1 var(--v2-mono);
  background: rgba(15, 15, 16, .7);
  color: #fff;
  padding: 5px 8px;
  border-radius: 9999px;
}

.v2-showroom-cuerpo { display: block; padding: 14px 15px 16px; }

.v2-showroom-empresa {
  display: flex;
  align-items: center;
  gap: 7px;
  font: 500 11px/1.3 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin-bottom: 7px;
}
.v2-showroom-chapa {
  width: 18px;
  height: 18px;
  border-radius: 5px;
  background: var(--marca, #0E4FD1);
  color: #fff;
  font: 700 9px/18px var(--v2-sans);
  text-align: center;
  flex: none;
}

.v2-showroom-nombre { font: 600 15px/1.25 var(--v2-sans); margin: 0 0 4px; }
.v2-showroom-sub {
  display: block;
  font: 400 11.5px/1.4 var(--v2-sans);
  color: rgba(242, 239, 233, .5);
  margin-bottom: 8px;
}
.v2-showroom-meta {
  display: block;
  font: 700 8.5px/1.3 var(--v2-mono);
  letter-spacing: .11em;
  color: var(--v2-tinta-45);
  text-transform: uppercase;
}
.v2-showroom-ver {
  display: inline-block;
  margin-top: 10px;
  font: 600 11.5px/1 var(--v2-sans);
  color: var(--v2-cobre);
}

.v2-vacio { margin-top: 16px; }
.v2-vacio-fila {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 18px 0 0;
}

.v2-reglas { margin-top: 8px; max-width: 520px; }
.v2-guiones {
  margin: 12px 0 16px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.v2-guiones li {
  display: flex;
  gap: 9px;
  font: 400 12.5px/1.45 var(--v2-sans);
  color: var(--v2-tinta-72);
}
.v2-guiones li::before { content: "·"; color: var(--v2-cobre); flex: none; }

/* --------------------------------------------------------------------------
   5.bis Galería en MÓVIL

   HISTORIA, porque el bloque de abajo ya no es lo que este comentario
   describía: aquí vivió un FEED A PANTALLA COMPLETA (una tarjeta por pantalla,
   scroll-snap en el documento, texto sobre la foto), pedido el 30-jul-2026 y
   con un arreglo propio de `mandatory` → `proximity` para que el CTA del final
   fuera alcanzable.

   RETIRADO el 31-jul-2026 a pedido del dueño: quiere que el móvil use la misma
   tarjeta del mockup que ya está en PC, en una sola columna. Se conserva la
   nota para quien vuelva sobre esto — el feed entero, con sus comentarios, está
   en /root/respaldos/20260731-230428/public/assets/css/estilos-v2.css.
   -------------------------------------------------------------------------- */
@media (max-width: 819px) {
  /* ══════════════════════════════════════════════════════════════════════
     GALERÍA EN MÓVIL — mockup del dueño (31-jul-2026).

     REEMPLAZA AL FEED A PANTALLA COMPLETA que vivía aquí (una tarjeta por
     pantalla con scroll-snap, estilo app social, del 30-jul). El dueño pidió
     que el móvil quede como su mockup: la MISMA tarjeta que en PC, en una
     sola columna. Se va, por tanto: `scroll-snap-type` en el documento,
     `height:100dvh`, la sangría a los bordes, el texto encima de la foto con
     su degradado y la columna de acciones flotante.

     Recuperable entero del respaldo /root/respaldos/20260731-230428.
     ══════════════════════════════════════════════════════════════════════ */
  .v2-grilla {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
    margin-top: 24px;
  }

  .v2-showroom { border-radius: 16px; }

  /* Mismo orden que en PC: autor arriba, foto, textos. */
  .v2-showroom-abrir { display: grid; }
  .v2-showroom-cuerpo { display: contents; }

  .v2-showroom-empresa {
    order: 1;
    display: flex; align-items: center; gap: 12px;
    padding: 20px 20px 0;
    font: 700 15px/1.2 var(--v2-sans);
    color: var(--v2-tinta);
  }
  .v2-showroom-chapa {
    width: 40px; height: 40px; flex: none;
    display: grid; place-items: center;
    border-radius: 50%;
    font: 700 16px/1 var(--v2-sans);
  }
  .v2-showroom-foto {
    order: 2;
    height: auto; aspect-ratio: 16 / 9;
    margin: 16px 20px; border-radius: 12px;
  }
  .v2-showroom-inicial { font-size: clamp(40px, 14vw, 64px); }
  .v2-showroom-nombre {
    order: 3;
    margin: 0 0 8px; padding: 0 20px;
    font: 700 20px/1.25 var(--v2-sans);
    color: var(--v2-cobre);
  }
  .v2-showroom-sub {
    order: 4;
    display: block; margin-bottom: 12px; padding: 0 20px;
    font: 400 14px/1.5 var(--v2-sans);
    color: var(--v2-tinta-82);
  }
  .v2-showroom-meta {
    order: 5;
    display: block; margin-bottom: 20px; padding: 0 20px;
    font: 700 11px/1.4 var(--v2-sans);
    letter-spacing: .1em; text-transform: uppercase;
    color: var(--v2-tinta-45);
  }
  .v2-showroom-ver {
    order: 6;
    display: inline-flex; align-items: center; gap: 8px;
    margin-top: auto; padding: 0 20px 24px;
    font: 700 14px/1 var(--v2-sans);
    color: var(--v2-cobre);
  }

  /* Las insignias vuelven a la esquina de la FOTO: ya no hay que esquivar la
     cabecera sticky, porque la foto dejó de ocupar la pantalla entera. */
  .v2-cinta { top: 12px; }
  .v2-vistas { top: 12px; right: 12px; }

  /* Compartir: el mockup no lo trae, pero es una función real y no se borra en
     silencio. Deja de flotar sobre la tarjeta a pantalla completa y se ancla a
     la esquina de la foto, que es el único sitio libre de la tarjeta nueva. */
  .v2-showroom-acciones {
    display: flex;
    position: absolute;
    right: 30px;
    top: 84px;
    z-index: 2;
  }
  .v2-showroom-compartir {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 9999px;
    border: 1px solid rgba(255, 255, 255, .3);
    background: rgba(15, 15, 16, .55);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    color: #fff;
  }
  .v2-showroom-compartir:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
  .v2-showroom-compartir.is-copiado { background: var(--v2-cobre); border-color: var(--v2-cobre); }
}

/* --------------------------------------------------------------------------
   5.ter Galería en ESCRITORIO/TABLET — REVERTIDO (30-jul-2026, reporte del
   dueño: "el diseño para la versión PC está mal hecho").

   Este bloque forzaba `.v2-grilla` a una columna centrada de 600px de ancho
   máximo, estilo feed, arriba de 820px. En una pantalla de escritorio real
   eso deja UNA tarjeta a la vista y dos franjas enormes de vacío a los
   lados — no una grilla "ordenada y proporcionada", sino una página que se
   ve casi vacía. Confirmado en el navegador a 1920px: `.v2-grilla` medía
   max-width:600px con una sola tarjeta visible sin hacer scroll.

   Se quita el override completo: `.v2-grilla`, `.v2-showroom`,
   `.v2-showroom-foto/-inicial` y `.v2-showroom-acciones/-compartir` vuelven
   a heredar sus reglas base (§5 y §5.bis), que es la grilla clásica
   `repeat(auto-fill, minmax(240px, 1fr))` — el comportamiento de escritorio
   previo al 30-jul-2026, antes de este experimento de "estilo red social".
   El feed a pantalla completa del MÓVIL (§5.bis, <=819px) no se toca: el
   reporte del dueño fue solo de la versión de PC.
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   6. Ficha de galería
   El tour manda: en escritorio ocupa dos tercios y el panel se queda pegado
   arriba mientras el visitante lee. En celular el tour va primero y el panel
   debajo, nunca al lado.
   -------------------------------------------------------------------------- */

.v2-ficha {
  max-width: 1220px;
  margin: 0 auto;
  padding: 18px 18px 54px;
}

.v2-volver {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  font: 500 13px/1 var(--v2-sans);
  color: var(--v2-tinta-55);
}
.v2-volver:hover { color: var(--v2-tinta); }

.v2-ficha-escenario {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: start;
}
@media (min-width: 900px) {
  .v2-ficha-escenario { grid-template-columns: minmax(0, 1.9fr) minmax(300px, 1fr); }
  .v2-ficha-panel { position: sticky; top: 88px; }
}

.v2-ficha-tour {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  background: var(--v2-noche);
  border: 1px solid var(--v2-borde);
  /* Alto y no aspect-ratio: un recorrido 360 en 16:9 en un celular alto queda
     en una franja de 200 px y no se puede mirar hacia arriba. */
  height: min(70vh, 620px);
  min-height: 340px;
}
.v2-ficha-tour iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.v2-chip--tour {
  position: absolute;
  top: 14px;
  left: 14px;
  color: #fff;
  pointer-events: none;
}

.v2-ficha-panel {
  background: var(--v2-carta);
  border: 1px solid var(--v2-borde);
  border-radius: 20px;
  padding: 20px;
}

.v2-ficha-marca { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; }
.v2-ficha-logo { display: flex; }
.v2-ficha-logo img { max-height: 26px; width: auto; display: block; }
.v2-ficha-inicial {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: var(--marca, #0E4FD1);
  color: var(--marca-txt, #fff);
  font: 700 12px/26px var(--v2-sans);
  text-align: center;
  flex: none;
}
.v2-ficha-empresa { font: 500 12.5px/1.3 var(--v2-sans); color: var(--v2-tinta-70); }

.v2-ficha-h1 {
  font: 600 24px/1.1 var(--v2-sans);
  letter-spacing: -.03em;
  margin: 0 0 6px;
}
.v2-ficha-sub { font: 400 12.5px/1.5 var(--v2-sans); color: rgba(242, 239, 233, .6); margin: 0 0 8px; }
.v2-ficha-lugar {
  display: flex;
  align-items: center;
  gap: 6px;
  font: 400 12px/1.4 var(--v2-sans);
  color: rgba(242, 239, 233, .5);
  margin: 0 0 14px;
}
.v2-ficha-desc {
  font: 400 12.5px/1.55 var(--v2-sans);
  color: rgba(242, 239, 233, .65);
  margin: 0 0 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.v2-ficha-acciones { display: flex; gap: 8px; margin-bottom: 14px; }
.v2-ficha-compartir { flex: 1; border-radius: 12px; min-height: 44px; }
.v2-ficha-acciones .v2-btn--icono { min-height: 44px; border-radius: 12px; }

.v2-ficha-vistas,
.v2-ficha-directo {
  display: flex;
  align-items: center;
  gap: 6px;
  font: 400 11.5px/1.4 var(--v2-sans);
  color: var(--v2-tinta-45);
  margin: 0 0 14px;
}
.v2-ficha-directo { color: var(--v2-cobre); }

.v2-ficha-cta {
  background: linear-gradient(160deg, rgba(200, 118, 58, .16), rgba(20, 20, 22, .6));
  border: 1px solid rgba(200, 118, 58, .35);
  border-radius: 16px;
  padding: 16px;
}
.v2-ficha-cta-marca {
  display: flex;
  align-items: center;
  gap: 7px;
  font: 700 8.5px/1 var(--v2-mono);
  letter-spacing: .14em;
  color: var(--v2-cobre);
  margin: 0 0 9px;
  text-transform: uppercase;
}
.v2-ficha-cta-t { font: 600 14.5px/1.2 var(--v2-sans); margin: 0 0 5px; }
.v2-ficha-cta-x {
  font: 400 12px/1.45 var(--v2-sans);
  color: rgba(242, 239, 233, .6);
  margin: 0 0 13px;
}
.v2-ficha-cta .v2-btn { min-height: 44px; border-radius: 12px; font-size: 13px; }

/* --------------------------------------------------------------------------
   7. Precio
   -------------------------------------------------------------------------- */

.v2-planes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
  margin-top: 16px;
  align-items: start;
}

.v2-plan {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--v2-carta);
  border: 1px solid rgba(255, 255, 255, .11);
  border-radius: 18px;
  padding: 18px;
}
.v2-plan--destacado {
  border-color: rgba(200, 118, 58, .5);
  background: linear-gradient(165deg, rgba(200, 118, 58, .14), rgba(20, 20, 22, .9));
  padding-top: 22px;
}
.v2-plan-cinta {
  position: absolute;
  top: -10px;
  left: 18px;
  font: 700 8px/1 var(--v2-mono);
  letter-spacing: .14em;
  background: var(--v2-cobre);
  color: #0f0f10;
  padding: 5px 8px;
  border-radius: 9999px;
  margin: 0;
  text-transform: uppercase;
}

.v2-plan-nombre { font: 600 17px/1.2 var(--v2-sans); margin: 0 0 3px; }
.v2-plan-lema {
  font: 400 12px/1.45 var(--v2-sans);
  color: var(--v2-tinta-55);
  margin: 0 0 14px;
}

.v2-plan-precio {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 0 0 4px;
}
.v2-plan-moneda { font: 700 10px/1 var(--v2-mono); letter-spacing: .1em; color: var(--v2-tinta-45); }
.v2-plan-cifra { font: 700 30px/1 var(--v2-sans); letter-spacing: -.04em; }
.v2-plan-periodo { font: 400 11.5px/1 var(--v2-sans); color: var(--v2-tinta-45); }

.v2-plan-nota { font: 400 11px/1.45 var(--v2-sans); color: var(--v2-tinta-45); margin: 0; }
.v2-plan-nota--mes { color: var(--v2-cobre); }

.v2-plan-lista {
  margin: 16px 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 9px;
  /* Empuja el botón al fondo: con listas de largo distinto los botones de las
     tres tarjetas quedaban a tres alturas. */
  flex: 1;
}
.v2-plan-lista li {
  display: flex;
  gap: 9px;
  font: 400 12.5px/1.35 var(--v2-sans);
  color: var(--v2-tinta-82);
}
.v2-plan-lista svg { color: var(--v2-cobre); flex: none; margin-top: 2px; }

/* Tabla comparativa. Bajo 640px se vuelve tarjetas con data-etiqueta: una tabla
   de cuatro columnas no cabe en un teléfono y el scroll horizontal esconde
   justo la columna del precio. */
.v2-tabla-caja { margin-top: 16px; overflow-x: auto; }
/* La aclaración de los clips con IA, bajo la tabla. 12.5px, el MISMO tamaño que
   la tabla que aclara: una condición del precio en letra más chica que el
   precio es la letra chica de toda la vida, y esta es justo la que la gente
   reclama después. Ancho limitado para que no se lea a lo ancho de la página. */
.v2-nota-tabla {
  max-width: 68ch;
  margin: 14px 0 0;
  font: 400 12.5px/1.6 var(--v2-sans);
  color: var(--v2-tinta-72);
}
.v2-tabla {
  width: 100%;
  border-collapse: collapse;
  font: 400 12.5px/1.45 var(--v2-sans);
}
.v2-tabla th,
.v2-tabla td {
  text-align: left;
  padding: 11px 12px;
  border-bottom: 1px solid var(--v2-borde);
}
.v2-tabla thead th {
  font: 700 8.5px/1.3 var(--v2-mono);
  letter-spacing: .14em;
  color: var(--v2-tinta-45);
  text-transform: uppercase;
  white-space: nowrap;
}
.v2-tabla tbody th { font: 500 12.5px/1.4 var(--v2-sans); color: var(--v2-tinta-82); }
.v2-tabla td { color: var(--v2-tinta-70); }
.v2-si { color: var(--v2-cobre); font-size: 15px; }
.v2-no { color: var(--v2-tinta-34); }

@media (max-width: 640px) {
  .v2-tabla thead { display: none; }
  .v2-tabla, .v2-tabla tbody, .v2-tabla tr, .v2-tabla th, .v2-tabla td { display: block; }
  .v2-tabla tr {
    background: var(--v2-carta);
    border: 1px solid var(--v2-borde);
    border-radius: 14px;
    padding: 12px 14px;
    margin-bottom: 10px;
  }
  .v2-tabla tbody th { border: 0; padding: 0 0 8px; }
  .v2-tabla td {
    border: 0;
    padding: 5px 0;
    display: flex;
    justify-content: space-between;
    gap: 12px;
  }
  .v2-tabla td::before {
    content: attr(data-etiqueta);
    font: 700 8.5px/1.6 var(--v2-mono);
    letter-spacing: .12em;
    color: var(--v2-tinta-45);
    text-transform: uppercase;
  }
}

/* FAQ en <details> nativo: abre con teclado y sin una línea de JS. */
.v2-faq { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.v2-faq details {
  background: var(--v2-carta);
  border: 1px solid var(--v2-borde);
  border-radius: 14px;
  padding: 14px 16px;
}
.v2-faq summary {
  font: 600 13.5px/1.4 var(--v2-sans);
  cursor: pointer;
  list-style: none;
}
.v2-faq summary::-webkit-details-marker { display: none; }
.v2-faq summary::after {
  content: "+";
  float: right;
  color: var(--v2-cobre);
  font-family: var(--v2-mono);
}
.v2-faq details[open] summary::after { content: "–"; }
.v2-faq p {
  font: 400 12.5px/1.6 var(--v2-sans);
  color: var(--v2-tinta-70);
  margin: 10px 0 0;
  max-width: 72ch;
}

/* Caja de cierre, igual que en el índice. */
.v2-cierre {
  margin: 8px auto 0;
  padding: 22px;
  background: linear-gradient(160deg, rgba(200, 118, 58, .16), rgba(20, 20, 22, .9));
  border: 1px solid rgba(200, 118, 58, .4);
  border-radius: 20px;
}
.v2-cierre .v2-h2 { font-size: 20px; margin-bottom: 7px; }
.v2-cierre p { margin: 0 0 16px; }
.v2-cierre p:last-child { margin-bottom: 0; }

/* --------------------------------------------------------------------------
   8. Cascada: rótulos de los enlaces con piel propia

   NO hay ningún valor nuevo acá. Se repiten, uno por uno, los que ya declara
   este archivo más arriba, con una clase más de especificidad.

   El porqué: `.v2 a { color: var(--v2-cobre) }` (0,1,1) le gana por
   especificidad a `.v2-btn--cobre` (0,1,0) y a toda la cabecera, sin importar el
   orden de los archivos. Con la clase `v2` en el <body> —hace falta ahí para que
   la paleta llegue a la cabecera y al pie, que viven fuera del <div class="v2">
   de cada vista— esa regla alcanza a los botones y a los enlaces de la nav.
   El resultado se veía: el botón cobre salía con el rótulo COBRE SOBRE COBRE,
   es decir invisible, y los enlaces de la nav en cobre en vez de tinta.

   Se arregla acá y no tocando `.v2 a` porque esa regla sí es la correcta para
   los enlaces de texto del cuerpo; lo que faltaba era que los componentes con
   color propio no la heredaran.
   -------------------------------------------------------------------------- */

/* Botón sólido: tinta oscura sobre cobre. Es el par que declara
   `.v2-btn--cobre` y el que da contraste de sobra (14:1 aprox). */
.v2 a.v2-btn--cobre,
.v2 a.v2-btn--cobre:hover { color: #0f0f10; }

/* Botón de vidrio: tinta clara sobre el velo translúcido. */
.v2 a.v2-btn--vidrio,
.v2 a.v2-btn--vidrio:hover { color: var(--v2-tinta); }

/* Cabecera. */
.v2 a.v2-nav-logo { color: #f2efe9; }
.v2 a.v2-nav-logo:hover { color: #fff; }
.v2 a.v2-nav-link { color: var(--v2-tinta-55); }
.v2 a.v2-nav-link:hover { color: var(--v2-tinta); }
.v2 a.v2-idioma { color: var(--v2-tinta-55); }
.v2 a.v2-idioma:hover { color: var(--v2-tinta); }

/* El enlace de salto (`.saltar-al-contenido`) también vive fuera del
   <div class="v2"> y base.css le da SU par: fondo --sup-0 (claro) y texto --txt.
   Con el cobre heredado quedaba en 2,6:1 sobre ese fondo justo cuando aparece,
   que es al recibir el foco desde el teclado. Se le devuelve su color. */
.v2 a.saltar-al-contenido { color: var(--txt); }

/* Pie: su regla es `.v2-pie-nav a` (0,1,1), o sea EMPATA con `.v2 a`, y ahí
   manda el orden de carga. En la portada, index-nuevo.css se carga después y
   volvía a ganar el cobre; con una clase más deja de depender del orden. */
.v2 .v2-pie-nav a { color: var(--v2-tinta-55); }
.v2 .v2-pie-nav a:hover { color: var(--v2-tinta); }

/* ══════════════════════════════════════════════════════════════════════════
   GALERÍA EN PC — mockup del dueño (31-jul-2026)

   QUÉ ESTABA MAL: `.v2-grilla` es `repeat(auto-fill, minmax(240px,1fr))`, así
   que en un monitor ancho abría cuatro columnas de 240px. Con dos recorridos
   publicados eso deja dos tarjetas flacas arriba a la izquierda y medio ancho
   vacío. El mockup pide DOS columnas anchas dentro de un contenedor de 1024px.

   TODO va dentro de `@media (min-width:820px)` a propósito: por debajo vive el
   feed a pantalla completa (una tarjeta por pantalla, con scroll-snap) que el
   dueño pidió el 30-jul, y no se toca ni un píxel.

   Acotado con `:has(.v2-grilla)` porque esta hoja la comparten /precio,
   /entrar y el resto de páginas v2.
   ══════════════════════════════════════════════════════════════════════════ */
@media (min-width: 820px) {
  /* max-w-5xl del mockup. Solo en la galería: el resto del sitio v2 sigue con
     sus 1120px. */
  body:has(.v2-grilla) .v2-sec { max-width: 1024px; }

  .v2-grilla {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px;
    margin-top: 32px;
  }

  .v2-showroom { border-radius: 16px; }
  .v2-showroom:hover { border-color: #404040; }

  /* El mockup pone al AUTOR arriba y la foto debajo; el marcado los trae al
     revés y la empresa vive dentro del cuerpo. `display:contents` sube los
     hijos del cuerpo al grid de la tarjeta para poder ordenarlos sin tocar el
     PHP ni un solo id. */
  .v2-showroom-abrir { display: grid; }
  .v2-showroom-cuerpo { display: contents; }

  .v2-showroom-empresa {
    order: 1;
    display: flex; align-items: center; gap: 12px;
    padding: 20px 20px 0;
    font: 700 15px/1.2 var(--v2-sans);
    color: var(--v2-tinta);
  }
  .v2-showroom-chapa {
    width: 40px; height: 40px; flex: none;
    display: grid; place-items: center;
    border-radius: 50%;
    font: 700 16px/1 var(--v2-sans);
  }

  /* Foto: deja de ir a sangre y pasa a los 16/9 con aire y esquinas del mock. */
  .v2-showroom-foto {
    order: 2;
    height: auto; aspect-ratio: 16 / 9;
    margin: 16px 20px; border-radius: 12px;
  }
  .v2-showroom-nombre {
    order: 3;
    margin: 0 0 8px; padding: 0 20px;
    font: 700 20px/1.25 var(--v2-sans);
    color: var(--v2-cobre);
  }
  .v2-showroom-sub {
    order: 4;
    display: block; margin-bottom: 12px; padding: 0 20px;
    font: 400 14px/1.5 var(--v2-sans);
    color: var(--v2-tinta-82);
  }
  .v2-showroom-meta {
    order: 5;
    display: block; margin-bottom: 20px; padding: 0 20px;
    font: 700 11px/1.4 var(--v2-sans);
    letter-spacing: .1em; text-transform: uppercase;
    color: var(--v2-tinta-45);
  }
  .v2-showroom-ver {
    order: 6;
    display: inline-flex; align-items: center; gap: 8px;
    margin-top: auto; padding: 0 20px 24px;
    font: 700 14px/1 var(--v2-sans);
    color: var(--v2-cobre);
  }
  .v2-showroom:hover .v2-showroom-ver { color: var(--v2-cobre-alto); }

  /* La píldora de vistas, en la esquina de la foto como en el mockup. */
  .v2-vistas { top: 12px; right: 12px; }
}
