/* Shaktiva · capa de página: tienda (2026-10-09). Se carga solo en esta página, después de shaktiva-fundacion.css. */

/* ============================================================
   TIENDA · ATELIER (catálogo, ficha, relacionados, carrito, checkout)
   ------------------------------------------------------------
   Criterio: la foto manda; el texto es sobrio y alineado a la izquierda;
   un solo botón (el de tinta de la fundación, sección 14.3).
   Escala usada (fundación): xs 13 · sm 15 · md 17 · lg 22,4 · xl 29,6 · 2xl/3xl.
   Sin sombras, sin elevación, radios de 2 px, transiciones de 250 ms.
   Problemas de DATOS que esta hoja NO tapa (van al informe):
   «68.00» con punto decimal, «Uncategorized», «Category:», «Cart»,
   «Your cart is currently empty!», «New in store», botón «Enviar» de valoraciones.
   ============================================================ */

:root{
  --tk-ink:#241F28;          /* violeta-cosmos: tinta */
  --tk-ink-soft:#4A4351;     /* carbon-soft: 6,8:1 sobre lino */
  --tk-card:#F0ECE3;         /* lino-card */
  --tk-rule:rgba(36,31,40,.16);
  --tk-field:rgba(36,31,40,.55);        /* borde de campo: 3,7:1 sobre lino-card (SC 1.4.11) */
  --tk-gap-x:clamp(16px,2.2vw,32px);
  --tk-gap-y:clamp(48px,6vw,80px);
}

/* ---------- 0. Marco de página ---------- */
/* En móvil el main tenía 48 px por lado: la galería quedaba en 294 px. Un solo margen de 20 px. */
@media (max-width:600px){
  body.woocommerce-page main.has-global-padding{padding-left:20px !important;padding-right:20px !important}
}
body.woocommerce-page main{padding-bottom:clamp(64px,8vw,112px)} /* ≤ 112 en escritorio, 64 en móvil (ronda 5) */

/* Migas: pequeñas, en tinta suave; el hover subraya (el oro no es texto sobre claro). */
body.woocommerce-page .woocommerce-breadcrumb{
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-xs) !important;
  letter-spacing:.08em !important;line-height:1.6 !important;color:var(--tk-ink-soft) !important;
  margin:clamp(24px,4vw,48px) 0 clamp(16px,2vw,24px) !important;
}
body.woocommerce-page .woocommerce-breadcrumb a{color:var(--tk-ink-soft) !important;text-decoration:none !important;transition:color .25s var(--sk-ease)}
body.woocommerce-page .woocommerce-breadcrumb a:hover{color:var(--tk-ink) !important;text-decoration:underline !important;text-underline-offset:3px}
@media (max-width:600px){body.woocommerce-page .woocommerce-breadcrumb{letter-spacing:.04em !important}}

/* ---------- 1. Catálogo ---------- */
.woocommerce-shop h1.wp-block-query-title,
.tax-product_cat h1.wp-block-query-title{margin-block:0 clamp(32px,5vw,64px) !important;letter-spacing:-.02em;text-wrap:balance}
@media (max-width:600px){
  .woocommerce-shop h1.wp-block-query-title,
  .tax-product_cat h1.wp-block-query-title{font-size:var(--sk-2xl) !important;line-height:1.08 !important}
}
/* Barra: recuento y orden, en una línea fina con filete. */
.wp-block-group:has(> .wc-block-product-results-count){
  align-items:center !important;padding-block:12px;border-block:1px solid var(--tk-rule);
  margin-bottom:clamp(32px,4vw,56px) !important;
}
.wc-block-product-results-count .woocommerce-result-count{
  margin:0 !important;font-size:var(--sk-sm) !important;color:var(--tk-ink-soft) !important;font-family:var(--shaktiva-font-text);
}
.woocommerce-ordering select,
.wc-block-catalog-sorting select{
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-sm) !important;color:var(--tk-ink) !important;
  min-height:44px;padding:0 36px 0 14px !important;
  background-color:var(--tk-card) !important;border:1px solid var(--tk-field) !important;border-radius:2px !important;
  box-shadow:none !important;cursor:pointer;
}

/* Rejilla (Adrián, ronda 5): 1 columna < 600 · 2 en tableta · 3 de 1024 a 1279 · 4 desde 1280.
   Mismo selector en todos los cortes para que ninguna regla anterior gane por especificidad. */
ul.wc-block-product-template,
ul.wc-block-product-template.is-flex-container,
ul.wc-block-product-template__responsive,
.wc-block-grid ul.wc-block-grid__products{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  column-gap:var(--tk-gap-x) !important;row-gap:var(--tk-gap-y) !important;
  margin:0 !important;padding:0 !important;list-style:none !important;
}
@media (min-width:600px){
  ul.wc-block-product-template,
  ul.wc-block-product-template.is-flex-container,
  ul.wc-block-product-template__responsive,
  .wc-block-grid ul.wc-block-grid__products{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}
@media (min-width:1024px){
  ul.wc-block-product-template,
  ul.wc-block-product-template.is-flex-container,
  ul.wc-block-product-template__responsive{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
  .wc-block-grid.has-4-columns ul.wc-block-grid__products{grid-template-columns:repeat(4,minmax(0,1fr)) !important}
}
@media (min-width:1280px){
  ul.wc-block-product-template,
  ul.wc-block-product-template.is-flex-container,
  ul.wc-block-product-template__responsive{grid-template-columns:repeat(4,minmax(0,1fr)) !important}
}
ul.wc-block-product-template > li.wc-block-product,
.wc-block-grid ul.wc-block-grid__products > li.wc-block-grid__product{
  display:flex !important;flex-direction:column;align-items:flex-start;
  width:auto !important;max-width:none !important;flex:none !important;
  margin:0 !important;padding:0 !important;border:0 !important;
  background:transparent !important;box-shadow:none !important;transform:none !important;
  text-align:left !important;
}
ul.wc-block-product-template > li.wc-block-product > *,
.wc-block-grid__product > *{width:100%}

/* Foto: proporción fija 4:5, recorte decidido, radio mínimo. Hover: velo de 6 %; la escala lenta
   vive en el bloque de movimiento del final (solo sin prefers-reduced-motion). */
.wc-block-product .wc-block-components-product-image,
.wc-block-grid__product .wc-block-grid__product-image{
  margin:0 0 16px !important;border-radius:2px;overflow:hidden;background:var(--tk-card);
}
.wc-block-product .wc-block-components-product-image a{display:block}
.wc-block-product .wc-block-components-product-image img,
.wc-block-grid__product .wc-block-grid__product-image img{
  display:block;width:100% !important;height:auto !important;
  aspect-ratio:4/5 !important;object-fit:cover !important;object-position:50% 40%;
  border-radius:0 !important;border:0 !important;box-shadow:none !important;margin:0 !important;
  transform:none;transition:opacity .25s var(--sk-ease) !important;
}
.wc-block-product .wc-block-components-product-image a:hover img,
.wc-block-grid__product-link:hover img{opacity:.94}

/* Nombre (ronda 5, Adrián): 22 px en Montserrat 600 (escalón de titular pequeño, fundación §17),
   alto fijo de 2 líneas: un nombre corto o largo no mueve el precio de su horizontal. */
.wc-block-product :is(h2,h3).wp-block-post-title,
.wc-block-grid__product .wc-block-grid__product-title{
  font-family:var(--shaktiva-font-text) !important;font-weight:600 !important;font-style:normal !important;
  font-size:1.375rem !important;line-height:1.3 !important;letter-spacing:-.005em !important;
  text-align:left !important;color:var(--tk-ink) !important;margin:0 0 12px !important;
  min-height:2.6em; /* 2 líneas × 1,3 */
}
/* El enlace lleva el recorte a 2 líneas y ocupa todo el alto: objetivo táctil de 57 px. */
.wc-block-product :is(h2,h3).wp-block-post-title a,
.wc-block-grid__product .wc-block-grid__product-title{
  display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;
  min-height:2.6em !important;text-wrap:balance;
}
.wc-block-product :is(h2,h3).wp-block-post-title a{font-size:inherit !important;line-height:inherit !important;font-weight:inherit !important}
.wc-block-product .wp-block-post-title a,
.wc-block-grid__product-link{
  color:var(--tk-ink) !important;text-decoration:underline !important;text-decoration-color:transparent !important;
  text-decoration-thickness:1px !important;text-underline-offset:4px;
  transition:text-decoration-color .25s var(--sk-ease);
}
/* El nombre se subraya en lila al pasar por cualquier punto de la tarjeta o al llegar con el teclado. */
.wc-block-product:has(a:focus-visible) .wp-block-post-title a{
  text-decoration:underline !important;text-decoration-color:var(--shaktiva-lila-espacial) !important;
}
@media (hover:hover){ /* en táctil el :hover se queda pegado tras un toque */
  .wc-block-product:hover .wp-block-post-title a,
  .wc-block-grid__product-link:hover .wc-block-grid__product-title{
    text-decoration:underline !important;text-decoration-color:var(--shaktiva-lila-espacial) !important;
  }
}

/* Precio: 22 px, tinta, cifras tabulares; anclado abajo junto al botón (margin-top:auto). */
.wc-block-product .wp-block-woocommerce-product-price,
.wc-block-grid__product .wc-block-grid__product-price{margin:auto 0 16px !important;text-align:left !important}
.wc-block-product .wc-block-components-product-price,
.wc-block-grid__product .wc-block-grid__product-price{
  font-family:var(--shaktiva-font-text) !important;font-size:1.375rem !important;font-weight:400 !important;line-height:1.3 !important;
  color:var(--tk-ink) !important;text-align:left !important;font-variant-numeric:tabular-nums;letter-spacing:.01em;
}

/* Acción: el botón de tinta, siempre abajo y del mismo tamaño en todas las tarjetas. */
.wc-block-product .wp-block-woocommerce-product-button,
.wc-block-grid__product .wc-block-grid__product-add-to-cart{
  margin:0 !important;text-align:left !important;justify-content:flex-start !important;
  display:flex !important;flex-direction:column;align-items:flex-start;gap:8px;
}
.wc-block-product .wc-block-components-product-button__button,
.wc-block-grid__product .wc-block-grid__product-add-to-cart .wp-block-button__link{
  display:inline-flex !important;align-items:center;justify-content:center;
  min-height:48px;margin:0 !important;padding:0 24px !important;
  font-family:var(--shaktiva-font-text) !important;white-space:nowrap; /* tamaño y caja: fundación §16 */
  background:var(--sk-btn-bg) !important;color:var(--sk-btn-ink) !important;border:1px solid var(--sk-btn-bg) !important;
  border-radius:2px !important;box-shadow:none !important;transform:none !important;text-decoration:none !important;
  transition:background-color .25s var(--sk-ease),border-color .25s var(--sk-ease) !important;
}
.wc-block-product .wc-block-components-product-button__button:hover,
.wc-block-grid__product .wc-block-grid__product-add-to-cart .wp-block-button__link:hover{
  background:var(--sk-btn-bg-hover) !important;border-color:var(--sk-btn-bg-hover) !important;
}
@media (max-width:600px){
  .wc-block-product .wc-block-components-product-button__button,
  .wc-block-grid__product .wc-block-grid__product-add-to-cart .wp-block-button__link{width:100%;padding:0 12px !important}
}
/* «Ver carrito» tras añadir: enlace sobrio con objetivo de 44 px. */
.wc-block-product .added_to_cart,
.wc-block-grid__product .added_to_cart{
  display:inline-flex;align-items:center;min-height:44px;font-size:var(--sk-sm);
  color:var(--tk-ink) !important;text-decoration:underline;text-underline-offset:3px;
}
/* La animación de entrada del texto del botón (slide-in) es movimiento sobrante. */
.wc-block-components-product-button__button .wc-block-slide-in,
.wc-block-components-product-button__button .wc-block-slide-out{animation:none !important}

/* Paginación del catálogo */
.wp-block-query-pagination{margin-top:var(--tk-gap-y) !important;font-size:var(--sk-sm)}
.wp-block-query-pagination a,.wp-block-query-pagination .page-numbers{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;color:var(--tk-ink)}

/* ---------- 2. Ficha de producto ---------- */
/* Galería protagonista (56 %). De 782 a 1023 el resumen queda fijo a 96 px (cabecera de 70 + aire)
   mientras baja la galería; desde 1024, la descripción sube a su columna (ver abajo). */
.single-product main > .wp-block-columns{
  gap:clamp(32px,6vw,96px) !important;align-items:flex-start !important;
  margin-bottom:var(--sk-space-tight) !important;
}
@media (min-width:782px){
  .single-product main > .wp-block-columns > .wp-block-column:first-child{flex:0 0 56% !important;max-width:56%}
  /* el bloque de galería de WooCommerce limita a 512 px: la foto ocupa toda su columna */
  .single-product .wp-block-woocommerce-product-image-gallery{max-width:none !important;width:100% !important}
  .single-product main > .wp-block-columns > .wp-block-column:last-child{
    flex:1 1 0 !important;min-width:0;position:sticky;top:96px;padding-top:8px;
  }
}
/* ≥1024 (ronda 5): el resumen medía 440-570 px y la galería 1.080: quedaba un hueco lateral de
   ~500 px. La descripción sube a la columna del resumen y ambas columnas acaban casi a la vez.
   Solo CSS: <main> pasa a rejilla (márgenes · galería 56 % · texto 44 % · márgenes) y el bloque de
   columnas se disuelve (display:contents). La fila de la descripción absorbe el alto sobrante
   (1fr), así el resumen no se estira ni se separa de ella. Orden del DOM intacto. */
@media (min-width:1024px){
  .single-product main.is-layout-constrained{
    display:grid !important;column-gap:0;
    grid-template-columns:minmax(0,1fr) minmax(0,calc(min(100%,var(--wp--style--global--wide-size,1280px)) * .56)) minmax(0,calc(min(100%,var(--wp--style--global--wide-size,1280px)) * .44)) minmax(0,1fr);
    grid-template-rows:auto auto auto 1fr auto;
  }
  .single-product main.is-layout-constrained > *{grid-column:2 / 4;margin-inline:0 !important;max-width:none !important;width:auto !important}
  .single-product main.is-layout-constrained > .wp-block-columns{display:contents !important}
  .single-product main > .wp-block-columns > .wp-block-column:first-child{
    grid-column:2;grid-row:3 / span 2;align-self:start;max-width:none;margin:0 !important;
  }
  /* Si el texto es más largo que la galería (el retiro), la galería acompaña la lectura.
     En rejilla el límite del sticky es todo <main>: con relacionados debajo los pisaría, así que
     solo se aplica en fichas sin relacionados. 128 px: la isla de cabecera acaba en 88-111 px. */
  .single-product main.is-layout-constrained:not(:has(> .wp-block-woocommerce-product-collection)) > .wp-block-columns > .wp-block-column:first-child{
    position:sticky;top:128px;
  }
  .single-product main > .wp-block-columns > .wp-block-column:last-child,
  .single-product main.is-layout-constrained > .wp-block-woocommerce-product-details{
    grid-column:3;align-self:start;position:static;padding-left:clamp(32px,6vw,96px);min-width:0;
  }
  .single-product main > .wp-block-columns > .wp-block-column:last-child{grid-row:3;margin:0 !important}
  .single-product main.is-layout-constrained > .wp-block-woocommerce-product-details{grid-row:4;margin:48px 0 0 !important}
  .single-product main.is-layout-constrained > .wp-block-woocommerce-product-collection{grid-row:5}
}

/* Galería: sin marco, sin sombra, sin radio grande; foto principal 4:5. */
.single-product .woocommerce-product-gallery{margin:0 !important;position:relative}
.single-product .woocommerce-product-gallery .flex-viewport,
.single-product .woocommerce-product-gallery__wrapper{border-radius:2px;background:var(--tk-card)}
.single-product .woocommerce-product-gallery__image,
.single-product .woocommerce-product-gallery__image a{display:block}
.single-product .woocommerce-product-gallery__image img,
.single-product div.product div.images img,
.single-product .woocommerce-product-gallery img{
  border-radius:0 !important;border:0 !important;box-shadow:none !important;
}
.single-product .woocommerce-product-gallery__image > a > img{
  width:100% !important;height:auto !important;aspect-ratio:4/5;object-fit:cover;display:block;
}
/* Miniaturas: rejilla de 4 a 8 px, la activa a pleno, el resto atenuado. */
.single-product .flex-control-thumbs{
  display:grid !important;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;
  margin:8px 0 0 !important;padding:0 !important;list-style:none;
}
.single-product .flex-control-thumbs li{width:auto !important;float:none !important;margin:0 !important;padding:0 !important}
.single-product .flex-control-thumbs img{
  width:100% !important;aspect-ratio:1/1;object-fit:cover;border-radius:2px !important;
  opacity:.55;cursor:pointer;transition:opacity .25s var(--sk-ease) !important;
}
.single-product .flex-control-thumbs img:hover,
.single-product .flex-control-thumbs img.flex-active{opacity:1}
/* Lupa: cuadrado lino de 44 px, sin sombra (antes, círculo blanco). */
.single-product .woocommerce-product-gallery__trigger{
  top:12px !important;right:12px !important;border-radius:2px !important;
  background:var(--tk-card) !important;box-shadow:none !important;border:1px solid var(--tk-rule) !important;
}

/* Columna de información */
.single-product main .wp-block-column h1.wp-block-post-title{margin:0 0 16px !important;max-width:18ch;text-wrap:balance}
.single-product main > .wp-block-columns .wp-block-woocommerce-product-price{margin:0 0 24px !important}
.single-product main > .wp-block-columns .wp-block-woocommerce-product-price .wc-block-components-product-price{
  font-family:var(--shaktiva-font-text) !important;font-size:1.375rem !important;font-weight:400 !important;
  color:var(--tk-ink) !important;font-variant-numeric:tabular-nums;letter-spacing:.01em;
}
.single-product .wp-block-post-excerpt{margin:0 0 32px !important}
.single-product .wp-block-post-excerpt__excerpt{
  font-size:var(--sk-md) !important;line-height:1.6 !important;color:var(--tk-ink-soft) !important;max-width:46ch;margin:0 !important;
}

/* Compra: cantidad + botón en una fila; el botón ocupa el resto y no se parte. */
.single-product .wc-block-add-to-cart-form form.cart,
.single-product div.product form.cart{
  display:grid !important;grid-template-columns:72px minmax(0,1fr);gap:8px;align-items:stretch;
  margin:0 0 32px !important;max-width:440px;
}
.single-product form.cart:has(table.variations){grid-template-columns:minmax(0,1fr)}
.single-product form.cart .quantity{margin:0 !important;float:none !important}
.single-product form.cart .quantity input.qty{
  width:100% !important;height:100% !important;min-height:52px;margin:0 !important;
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-md) !important;color:var(--tk-ink) !important;
  text-align:center;background:var(--tk-card) !important;border:1px solid var(--tk-field) !important;border-radius:2px !important;box-shadow:none !important;
}
body.single-product .wc-block-add-to-cart-form form.cart .single_add_to_cart_button.button,
body.single-product div.product form.cart .single_add_to_cart_button.button{
  width:100%;min-height:48px !important;margin:0 !important;padding:0 24px !important;float:none !important;
  font-family:var(--shaktiva-font-text) !important;white-space:nowrap;line-height:1.2 !important; /* tamaño y caja: fundación §16 */
}

/* Lupa (emoji 🔍) y estrellas dentro de la escala; stock en texto pequeño. */
.single-product .woocommerce-product-gallery__trigger > span,
.single-product .woocommerce-product-gallery__trigger{font-size:var(--sk-md) !important;line-height:1 !important}
.single-product #reviews .stars a{font-size:var(--sk-md) !important}
.single-product main > .wp-block-columns p.stock{
  font-family:var(--shaktiva-font-text);font-size:var(--sk-sm) !important;color:var(--tk-ink-soft) !important;margin:0 0 12px !important;
}

/* Metadatos: pequeños, separados por filete, sin cortar la referencia. */
.single-product .wp-block-woocommerce-product-meta{padding-top:16px;border-top:1px solid var(--tk-rule);max-width:440px}
.single-product .wp-block-woocommerce-product-meta > .wp-block-group{flex-wrap:wrap !important;gap:4px 24px !important}
.single-product .wp-block-woocommerce-product-meta :is(.wp-block-post-terms,.wc-block-components-product-sku){
  font-family:var(--shaktiva-font-text);font-size:var(--sk-xs) !important;letter-spacing:.04em;color:var(--tk-ink-soft) !important;
  margin:0 !important;white-space:nowrap;
}
.single-product .wp-block-woocommerce-product-meta .wp-block-post-terms__prefix{font-weight:500;color:var(--tk-ink)}
.single-product .wp-block-woocommerce-product-meta a{
  color:var(--tk-ink-soft) !important;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--tk-rule);
  display:inline-flex;align-items:center;min-height:44px;
}
.single-product .wp-block-woocommerce-product-meta a:hover{text-decoration-color:currentColor}

/* Pestañas: texto pequeño espaciado, filete inferior, la activa marcada en tinta. */
.single-product .wp-block-woocommerce-product-details{margin-top:var(--sk-space-tight) !important}
.single-product .woocommerce-tabs ul.tabs{
  display:flex !important;flex-wrap:nowrap;gap:32px;overflow-x:auto;
  margin:0 0 clamp(32px,4vw,48px) !important;padding:0 !important;list-style:none;
  border-bottom:1px solid var(--tk-rule) !important;
}
.single-product .woocommerce-tabs ul.tabs::before,
.single-product .woocommerce-tabs ul.tabs::after,
.single-product .woocommerce-tabs ul.tabs li::before,
.single-product .woocommerce-tabs ul.tabs li::after{display:none !important;content:none !important}
.single-product .woocommerce-tabs ul.tabs li{
  display:block !important;width:auto !important;margin:0 0 -1px !important;padding:0 !important;flex:none;
  background:transparent !important;border:0 !important;border-bottom:1px solid transparent !important;border-radius:0 !important;
}
.single-product .woocommerce-tabs ul.tabs li a{
  display:inline-flex !important;align-items:center;min-height:48px;padding:0 !important;
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-xs) !important;font-weight:500 !important;
  letter-spacing:.12em !important;text-transform:uppercase;color:var(--tk-ink-soft) !important;text-decoration:none !important;
  transition:color .25s var(--sk-ease);
}
.single-product .woocommerce-tabs ul.tabs li a:hover{color:var(--tk-ink) !important}
.single-product .woocommerce-tabs ul.tabs li.active{border-bottom-color:var(--tk-ink) !important}
.single-product .woocommerce-tabs ul.tabs li.active a{color:var(--tk-ink) !important;font-weight:500 !important}

/* Panel: medida de lectura; el h2 repetía la pestaña: queda solo para lectores de pantalla. */
.single-product .woocommerce-tabs .panel{padding:0 !important;margin:0 !important;max-width:66ch}
.single-product .woocommerce-Tabs-panel--description > h2:first-child,
.single-product .woocommerce-Reviews-title{
  position:absolute !important;width:1px !important;height:1px !important;overflow:hidden !important;
  clip:rect(0 0 0 0) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:0 !important;padding:0 !important;
}
.single-product .woocommerce-tabs .panel :is(p,li){font-size:var(--sk-md) !important;line-height:1.7 !important;color:var(--tk-ink-soft)}
.single-product .woocommerce-tabs .panel p{margin:0 0 1.1em !important}
.single-product .woocommerce-tabs .panel :is(h3,h4,h5){
  /* V13-10 (2026-10-10): sin versalitas espaciadas (regla 70, antetítulos). Sans a 600 por debajo de 28 px. */
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-md) !important;font-weight:600 !important;
  letter-spacing:0;text-transform:none;color:var(--tk-ink) !important;margin:40px 0 12px !important;
}
.single-product .woocommerce-tabs .panel ul{margin:0 !important;padding:0 !important;list-style:none;border-top:1px solid var(--tk-rule)}
.single-product .woocommerce-tabs .panel ul li{padding:12px 0;border-bottom:1px solid var(--tk-rule);margin:0 !important}
.single-product .woocommerce-tabs .panel ul li strong{color:var(--tk-ink);font-weight:500}
/* QA-06 (2026-10-10): enlaces en línea de la descripción («Escríbeme antes de reservar», «Ver el programa completo»
   en la ficha del retiro) con objetivo táctil de 44 px; medían 20. Relleno vertical del elemento en línea:
   20 + 2×13 = 46 px sin mover las líneas (mismo criterio que Altea). Con ratón, 24 px en la fundación §31. */
@media (hover:none),(max-width:1023px){
  .single-product .woocommerce-tabs .panel :is(p,li) a{padding-block:13px}
}

/* Valoraciones: formulario sobrio. */
.single-product #reviews :is(.woocommerce-noreviews,.comment-reply-title){font-size:var(--sk-md) !important;color:var(--tk-ink-soft)}
.single-product #reviews .comment-reply-title{display:block;font-family:var(--shaktiva-font-text) !important;margin-bottom:16px}
.single-product #reviews label{font-size:var(--sk-sm);color:var(--tk-ink);display:block;margin-bottom:6px}
.single-product #reviews :is(input[type=text],input[type=email],textarea,select){
  width:100%;max-width:560px;min-height:48px;padding:10px 14px;font-family:var(--shaktiva-font-text);font-size:var(--sk-md);
  color:var(--tk-ink);background:var(--tk-card);border:1px solid var(--tk-field);border-radius:2px;box-shadow:none;
}
.single-product #reviews .comment-form-cookies-consent{display:flex;gap:10px;align-items:flex-start}
.single-product #reviews .comment-form-cookies-consent label{display:inline;font-size:var(--sk-sm);color:var(--tk-ink-soft)}
.single-product #reviews .comment-form-cookies-consent input{width:20px;height:20px;margin-top:3px;flex:none;accent-color:var(--shaktiva-lila-espacial)}
.single-product #reviews .stars a{min-width:44px;min-height:44px;display:inline-block}
.single-product #reviews .form-submit .submit{
  min-height:48px;padding:0 28px !important;border-radius:2px !important;cursor:pointer;
  background:var(--sk-btn-bg) !important;color:var(--sk-btn-ink) !important;border:1px solid var(--sk-btn-bg) !important;
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-sm) !important;font-weight:500 !important;box-shadow:none !important;
}
.single-product #reviews .form-submit .submit:hover{background:var(--sk-btn-bg-hover) !important;border-color:var(--sk-btn-bg-hover) !important}

/* Relacionados: misma rejilla que el catálogo, con filete superior. */
.single-product main > div:has(> .wc-block-product-template),
.single-product .wp-block-woocommerce-related-products{
  margin-top:clamp(32px,4.5vw,64px) !important;padding-top:clamp(32px,4.5vw,64px);border-top:1px solid var(--tk-rule);
}
.single-product main h2.wp-block-heading:has(+ ul.wc-block-product-template){
  font-size:2rem !important;line-height:1.15 !important;letter-spacing:-.01em;margin:0 0 clamp(32px,4vw,48px) !important;
}

/* ---------- 3. Carrito y checkout ---------- */
.woocommerce-cart main h1.wp-block-post-title,
.woocommerce-checkout main h1.wp-block-post-title{
  font-size:var(--sk-2xl) !important;line-height:1.08 !important;letter-spacing:-.015em;
  margin-block:clamp(32px,5vw,64px) clamp(32px,4vw,56px) !important;
}
/* Carrito vacío: sin la cara triste ni los tres puntos; un filete corto. */
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before{display:none !important;content:none !important}
.wp-block-woocommerce-empty-cart-block > h2.wp-block-heading{
  font-size:2rem !important;line-height:1.2 !important;font-weight:400 !important;color:var(--tk-ink) !important;
  text-align:left !important;margin:0 0 24px !important;
}
.wp-block-woocommerce-empty-cart-block > hr.is-style-dots{
  border:0 !important;height:1px !important;width:48px !important;margin:0 0 var(--sk-space-tight) !important;
  background:var(--shaktiva-oro-antiguo) !important;opacity:1;
}
.wp-block-woocommerce-empty-cart-block > hr.is-style-dots::before{display:none !important;content:none !important}
.wp-block-woocommerce-empty-cart-block .wc-block-grid{margin-top:32px}
.wc-block-grid__product .wc-block-grid__product-onsale{display:none}

/* Carrito y checkout con artículos: campos y botones del sistema. */
.wc-block-cart .wc-block-cart-items th,
.wc-block-cart .wc-block-components-totals-item__label{font-size:var(--sk-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--tk-ink-soft)}
.wc-block-cart-items__row .wc-block-components-product-name{
  font-family:var(--shaktiva-font-display) !important;font-size:1.375rem !important;line-height:1.2;color:var(--tk-ink) !important;text-decoration:none !important;
}
.wc-block-cart-items__row .wc-block-cart-item__image img{aspect-ratio:4/5;object-fit:cover;border-radius:2px}
.wc-block-components-sidebar .wc-block-components-panel,
.wc-block-cart .wc-block-cart__sidebar,
.wc-block-checkout__sidebar{border-radius:2px}
.wc-block-components-quantity-selector{border-radius:2px !important;border-color:var(--tk-field) !important;min-height:44px;width:136px !important}
.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input{min-width:0;font-size:var(--sk-md)}
.wc-block-cart-item__remove-link{min-width:44px !important;min-height:44px !important;display:inline-flex !important;align-items:center;justify-content:center}
@media (max-width:600px){
  .wc-block-cart-items__row .wc-block-components-product-name{font-size:var(--sk-md) !important;line-height:1.3 !important}
  /* 44 + 32 + 44: objetivos táctiles sin empujar la tabla fuera de los 390 px */
  .wc-block-components-quantity-selector{width:120px !important}
  .wc-block-cart-item__quantity{flex-wrap:wrap;gap:4px}
  .wc-block-cart-items{table-layout:fixed;width:100% !important}
}
/* Encabezados de bloques del carrito/checkout: el display en mayúsculas espaciadas se rompía. */
:is(.wc-block-cart__totals-title,.wp-block-woocommerce-cart-order-summary-heading-block h2,.wc-block-components-title.wc-block-components-title){
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-xs) !important;font-weight:500 !important;
  letter-spacing:.08em !important;text-transform:uppercase !important;color:var(--tk-ink-soft) !important;
}
.wc-block-components-checkout-step__title.wc-block-components-title,
.wc-block-components-checkout-order-summary__title-text{
  font-family:var(--shaktiva-font-display) !important;font-size:1.375rem !important;font-weight:400 !important;
  letter-spacing:-.01em !important;text-transform:none !important;color:var(--tk-ink) !important;
}

/* Avisos de bloque (p. ej. «se ha añadido a tu carrito»): lino, filete lila, sin verde de plantilla. */
.wc-block-components-notice-banner{
  background:var(--tk-card) !important;color:var(--tk-ink) !important;
  border:1px solid var(--tk-rule) !important;border-left:2px solid var(--shaktiva-lila-espacial) !important;
  font-size:var(--sk-md) !important;
}
.wc-block-components-notice-banner > svg{background:var(--tk-ink) !important;fill:var(--tk-card) !important}
.wc-block-components-notice-banner.is-error{border-left-color:var(--shaktiva-lila-espacial) !important}
.wc-block-components-notice-banner.is-error > svg{background:var(--shaktiva-lila-espacial) !important}
.wc-block-components-notice-banner a,
.wc-block-components-notice-banner .wc-forward{
  color:var(--tk-ink) !important;text-decoration:underline !important;text-underline-offset:3px;opacity:1 !important;
  display:inline-flex;align-items:center;min-height:44px;
}
.wc-block-components-quantity-selector::after{border-radius:2px !important;border-color:var(--tk-field) !important}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{min-width:44px}
:is(.wc-block-components-text-input,.wc-block-components-textarea,.wc-blocks-components-select) :is(input,textarea,select),
.wc-block-components-combobox .components-combobox-control__input{
  border-radius:2px !important;border-color:var(--tk-field) !important;background-color:var(--tk-card) !important;box-shadow:none !important;
}
.wc-block-components-button:not(.is-link):not(.wc-block-components-notice-banner__dismiss),
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button{
  min-height:52px;border-radius:2px !important;box-shadow:none !important;transform:none !important;
  background:var(--sk-btn-bg) !important;color:var(--sk-btn-ink) !important;border:1px solid var(--sk-btn-bg) !important;
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-sm) !important;font-weight:500 !important;
  letter-spacing:.02em !important;text-transform:none !important;
  transition:background-color .25s var(--sk-ease),border-color .25s var(--sk-ease) !important;
}
.wc-block-components-button:not(.is-link):not(.wc-block-components-notice-banner__dismiss):hover,
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover{background:var(--sk-btn-bg-hover) !important;border-color:var(--sk-btn-bg-hover) !important}
.wc-block-components-notice-banner{border-radius:2px !important;box-shadow:none !important}
.wc-block-components-totals-item__value,.wc-block-formatted-money-amount{font-variant-numeric:tabular-nums}

/* Movimiento: lo que queda es de estado y respeta la preferencia del sistema. */
@media (prefers-reduced-motion:reduce){
  body.woocommerce-page main *{transition:none !important}
}

/* Revisión cruzada Codex (docs/premium-2026-10/codex-3-revision-paginas.md), 2026-10-09 */
/* #10: con cinco piezas, recuento y orden sobran */
.wp-block-group:has(> .wc-block-product-results-count),.wc-block-product-results-count,.wc-block-catalog-sorting{display:none !important}
/* #4: en móvil, una pieza por fila: la foto manda y el nombre no se parte en cinco líneas */
@media (max-width:599px){
  /* (la columna única ya la fija la rejilla de la sección 1) */
  .wc-block-product :is(h2,h3).wp-block-post-title{max-width:24ch}
}

/* QA técnico (2026-10-09): ajustes tras la revisión de las hojas por página */
/* El bloque del carrito se hidrata y empujaba el pie (CLS 0,07-0,20): reserva su alto mientras carga. */
body.woocommerce-cart main .wp-block-woocommerce-cart{min-height:100svh}
/* Ficha: antes de que FlexSlider monte la galería, las 3 fotos se apilaban (CLS 0,15 a 390).
   Hasta entonces: foto principal arriba y miniaturas cuadradas en fila. */
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__wrapper{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:first-child{grid-column:1 / -1}
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:not(:first-child) img{aspect-ratio:1;object-fit:cover}
/* El botón de compra heredaba .85em de WooCommerce (13,6 px): misma voz que el resto (fundación §16). */
body.single-product form.cart .single_add_to_cart_button.button{font-size:.8125rem !important;letter-spacing:.1em !important;text-transform:uppercase !important}

/* ============================================================
   RONDA 5 · DINAMISMO (excepción expresa de Adrián a la regla 70, 2026-10-09)
   Solo con movimiento permitido y puntero fino; nada se oculta (sin opacity:0),
   solo escala dentro de un marco con overflow:hidden. Con reduced-motion no existe.
   ============================================================ */
@media (prefers-reduced-motion:no-preference) and (hover:hover){
  /* Tarjeta: la foto crece un 3 % dentro de su marco en 250 ms (Adrián, 2026-10-09: zoom leve). */
  .wc-block-product .wc-block-components-product-image img,
  .wc-block-grid__product .wc-block-grid__product-image img{
    transition:transform .25s var(--sk-ease),opacity .25s var(--sk-ease) !important;
  }
  .wc-block-product:hover .wc-block-components-product-image img,
  .wc-block-product:has(a:focus-visible) .wc-block-components-product-image img,
  .wc-block-grid__product:hover .wc-block-grid__product-image img{transform:scale(1.03) !important}

  /* Ficha: zoom lento de la foto principal (3 %), recortado por su propia diapositiva. */
  .single-product .woocommerce-product-gallery__image{overflow:hidden}
  .single-product .woocommerce-product-gallery__image > a > img{transition:transform 1.2s var(--sk-ease) !important}
  .single-product .woocommerce-product-gallery__image:hover > a > img{transform:scale(1.03)}
}

/* Ficha sin carrusel (functions.php quita el slider de Woo por rendimiento): woocommerce.css dejaba las
   miniaturas a width:25% DENTRO de cada celda de la rejilla (~20 px a 390). */
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__wrapper{background:none}
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:not(:first-child){width:auto !important;display:block !important;margin:0 !important;padding:0 !important}
.single-product .woocommerce-product-gallery:not(:has(.flex-viewport)) .woocommerce-product-gallery__image:not(:first-child) img{width:100% !important;height:auto !important;border-radius:2px !important}


/* ============================================================
   RONDA 8 · HÉROE DE LA TIENDA v2: PASE A SANGRE (Adrián, 2026-10-09)
   Plantilla: templates/archive-product.html; las fotos las pone functions.php
   (shaktiva_heroe_tienda_media): en /shop/ un pase de dos fotos horizontales 16:9
   (mano con anillo y colgante de obsidiana, por nombre de fichero); en cada categoría, su imagen.
   Sustituye al héroe partido de la ronda 7 (foto vertical en la mitad derecha).
   · Escritorio (≥1024): 100svh; foto a 100 % de ancho; UN velo de 90° en tierra
     rgba(22,18,27,…) a la izquierda, igual para todas las diapositivas (va en el
     contenedor, no en cada foto); texto en las columnas 1-5, abajo.
     Contraste medido con el texto oculto (p98 de luminancia del fondo bajo cada caja):
     ver docs/premium-2026-10/capturas/tienda-v2/contraste.json.
   · Móvil y tableta (<1024): fundación §25. Foto arriba a 50svh con fundido a tierra al
     pie y texto debajo sobre tierra; ningún velo sobre la foto salvo el fundido.
   · Pase: misma mecánica que el de la Home (fundido de 1,2 s; el JS es el de
     shaktiva-interactions.js). Sin JS o con movimiento reducido, solo la primera.
   ============================================================ */
body.woocommerce-page main:has(> .sk-shop-hero){padding-top:0 !important} /* la fundación (§23) reserva 112 px si no hay héroe */
.sk-shop-hero{
  --hero-sec:96px;
  /* El texto ocupa del 8 al 44 % del ancho (1366-1920): el velo se mantiene hasta el 40 % y se
     apaga antes del 64 %, donde empiezan la mano y el colgante. */
  --sk-shop-velo:linear-gradient(90deg,rgba(22,18,27,.78) 0%,rgba(22,18,27,.66) 36%,rgba(22,18,27,.38) 48%,rgba(22,18,27,.1) 57%,rgba(22,18,27,0) 62%);
  position:relative;isolation:isolate;overflow:hidden;background:#16121B;
  min-height:100svh;display:flex;align-items:flex-end;margin:0 !important;
}
.sk-shop-hero__media{position:absolute;inset:0;z-index:0;margin:0 !important}
.sk-shop-hero__media::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--sk-shop-velo)}
.sk-shop-hero__img{
  position:absolute;inset:0;display:block;
  width:100% !important;height:100% !important;max-width:none;object-fit:cover; /* woocommerce.css fuerza img{height:auto} */
  object-position:50% 40%;
}
/* Pase: todas apiladas; solo la activa se ve. */
.sk-shop-hero__media .sk-pase-item{opacity:0;transition:opacity 1.2s ease}
.sk-shop-hero__media .sk-pase-item.is-activa{opacity:1}
/* Encuadre por foto: el sujeto a la derecha del velo. La clase lleva la clave del fichero, no el ID del adjunto
   (QA-15: los IDs cambian entre entornos; ver shaktiva_heroe_tienda_adjuntos() en functions.php). */
.sk-shop-hero__img--anillo-rodilla{object-position:100% 50%}  /* el anillo, en el 48 %: con el recorte a la derecha queda fuera de la columna de texto */
.sk-shop-hero__img--colgante-obsidiana{object-position:30% 30%}  /* el colgante, en el 65 %; sin cara en cuadro */

.sk-shop-hero__grid{position:relative;z-index:1;margin:0 !important;padding-block:104px var(--hero-sec)}
.sk-shop-hero__text{max-width:560px;margin:0 !important}
@media (min-width:1024px){.sk-shop-hero__text{grid-column:1 / span 5}}
.sk-shop-hero__text > *{margin-block-start:0 !important}
/* Migas como antetítulo, en la tinta secundaria del héroe (#D3C9BE). */
body.woocommerce-page .sk-shop-hero .wc-block-breadcrumbs{margin:0 0 24px !important}
body.woocommerce-page .sk-shop-hero .woocommerce-breadcrumb{margin:0 !important;color:var(--sk-hero-tinta-2) !important}
body.woocommerce-page .sk-shop-hero .woocommerce-breadcrumb a{color:var(--sk-hero-tinta-2) !important}
body.woocommerce-page .sk-shop-hero .woocommerce-breadcrumb a:hover{color:var(--sk-hero-tinta) !important}
html body .sk-shop-hero h1.sk-shop-hero__h1{
  font-family:var(--shaktiva-font-display) !important;font-weight:400 !important;font-size:var(--sk-display-1) !important;
  line-height:1.04 !important;letter-spacing:-.02em !important;color:var(--sk-hero-tinta) !important;
  margin:0 0 32px !important;text-wrap:balance;
}
.sk-shop-hero .sk-shop-hero__lede{
  font-size:var(--sk-md) !important;line-height:1.6 !important;color:var(--sk-hero-tinta-2) !important;
  max-width:44ch;margin:0 0 32px !important;
}
.sk-shop-hero__accion{margin:8px 0 0 !important}
.sk-shop-hero__accion .shaktiva-btn-ink{min-height:48px;border-radius:2px}
/* En las categorías el h1 es el nombre de la categoría: la entradilla de la tienda no le corresponde. */
:is(.tax-product_cat,.tax-product_tag) .sk-shop-hero__lede{display:none}

/* Catálogo bajo el héroe: los mismos bloques; el aire superior sustituye al de la isla. */
.sk-shop-catalogo{margin-block-start:0 !important;padding-top:clamp(56px,7.5vw,112px);scroll-margin-top:48px} /* el ancla deja la rejilla por debajo de la isla */
@media (max-width:600px){
  .sk-shop-catalogo.has-global-padding{padding-left:20px !important;padding-right:20px !important}
}

@media (min-width:1024px) and (max-width:1279px){
  .sk-shop-hero__text{max-width:440px}
}
@media (max-width:1023px){
  .sk-shop-hero{display:block;min-height:0;--hero-sec:128px}
  .sk-shop-hero__media{position:relative;inset:auto;width:100%;height:50svh}
  .sk-shop-hero__media::after{background:var(--sk-hero-velo-movil)} /* solo el fundido a tierra al pie */
  .sk-shop-hero__img--anillo-rodilla{object-position:50% 50%}
  .sk-shop-hero__img--colgante-obsidiana{object-position:64% 30%}
  .sk-shop-hero__grid{padding-block:24px var(--hero-sec)}
  .sk-shop-hero__text{max-width:none}
}
@media (max-width:767px){
  .sk-shop-hero{--hero-sec:72px}
  html body .sk-shop-hero h1.sk-shop-hero__h1{margin-bottom:16px !important}
  .sk-shop-hero .sk-shop-hero__lede{margin-bottom:20px !important}
}
@media (prefers-reduced-motion:reduce){
  .sk-shop-hero__media .sk-pase-item{transition:none}
}

/* ---------- Filtros por categoría (2026-10-09) ----------
   [shaktiva_filtros_tienda]: enlaces reales a /shop/ y a cada categoría con productos.
   Botón del sitio en versión contorno (radio 2 px, 44 px de alto); la vista actual, en lila
   (#F4EEE6 sobre #4A2E73). En móvil, una fila que se desliza, sin barra visible. */
body .sk-shop-catalogo > .sk-filtros{margin-block:0 clamp(40px,5vw,64px) !important}
.sk-filtros__lista{display:flex;flex-wrap:wrap;gap:8px;margin:0 !important;padding:0 !important;list-style:none !important}
.sk-filtros__lista > li{margin:0 !important;padding:0 !important;flex:none}
.sk-filtros__lista > li::before{content:none !important;display:none !important}
.sk-filtros .sk-filtro{
  display:inline-flex;align-items:center;min-height:44px;padding:0 20px;
  font-family:var(--shaktiva-font-text) !important;font-size:var(--sk-sm) !important;font-weight:500 !important;line-height:1.2 !important;
  color:var(--tk-ink) !important;background:transparent;border:1px solid var(--tk-field);border-radius:2px;
  text-decoration:none !important;white-space:nowrap;
  transition:background-color .25s var(--sk-ease),border-color .25s var(--sk-ease),color .25s var(--sk-ease);
}
.sk-filtros .sk-filtro:hover{border-color:var(--tk-ink)}
.sk-filtros .sk-filtro[aria-current="page"]{background:var(--shaktiva-lila-espacial);border-color:var(--shaktiva-lila-espacial);color:#F4EEE6 !important}
.sk-filtros .sk-filtro:focus-visible{outline:2px solid var(--shaktiva-lila-espacial);outline-offset:2px}
@media (max-width:600px){
  /* La fila llega a los bordes de la pantalla (el catálogo tiene 20 px por lado) para que se vea que sigue. */
  body .sk-shop-catalogo > .sk-filtros{margin-inline:-20px !important;max-width:none !important;width:auto}
  /* padding-block: el contorno de foco no se recorta dentro del contenedor con scroll */
  .sk-filtros__lista{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:4px 20px !important;scroll-padding-inline:20px}
  .sk-filtros__lista::-webkit-scrollbar{display:none}
}

/* ---------- Tarjeta de producto entera clicable (Adrián, 2026-10-09) ----------
   Rejilla de /shop/, categorías y relacionados de la ficha. Un solo destino, la ficha: el ::after del
   enlace del nombre cubre toda la tarjeta (foto incluida), sin anidar enlaces. El botón de compra y
   «Ver carrito» suben por encima del ::after y siguen funcionando solos. El enlace de la foto (mismo
   destino) queda debajo del ::after. Foco: anillo del sitio en toda la tarjeta, solo con teclado
   (:has(:focus-visible) en los enlaces a la ficha; con :focus-within, un clic de ratón en «Añadir al
   carrito» también lo pintaría). El zoom de 250 ms está en el bloque RONDA 5 (sin reduced-motion). */
ul.wc-block-product-template > li.wc-block-product,
.wc-block-grid ul.wc-block-grid__products > li.wc-block-grid__product{position:relative !important;cursor:pointer}
.wc-block-product :is(h2,h3).wp-block-post-title a::after,
.wc-block-grid__product > a.wc-block-grid__product-link::after{
  content:"";position:absolute;inset:0;z-index:1;
}
.wc-block-product .wp-block-woocommerce-product-button,
.wc-block-grid__product .wc-block-grid__product-add-to-cart{position:relative;z-index:2;cursor:auto}
html body .wc-block-product:has(:is(.wp-block-post-title a,.wc-block-components-product-image a):focus-visible),
html body .wc-block-grid__product:has(> a.wc-block-grid__product-link:focus-visible){
  outline:2px solid var(--shaktiva-lila-espacial);outline-offset:6px;
}
/* El anillo ya rodea la tarjeta: el del enlace sobraría (doble contorno). */
html body .wc-block-product :is(.wp-block-post-title a,.wc-block-components-product-image a):focus-visible,
html body .wc-block-grid__product > a.wc-block-grid__product-link:focus-visible{outline:none !important;box-shadow:none !important}
