/* ============================================================
   Pelo & Piel — Tienda · Design tokens & shared components
   Theme asset — enqueued via functions.php
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&family=Inter:wght@400;500;600;700&display=swap');

:root{
  --navy: #21669F;
  --navy-deep: #123A5C;
  --navy-soft: #3D7CAE;
  --cream: #F8F3EB;
  --tan: #B5A388;
  --gold: #C5A46B;
  --ink: #1E2A33;
  --ink-soft: #566270;
  --white: #FFFFFF;
  --line: rgba(33,102,159,0.14);
  --shadow: 0 20px 50px -25px rgba(18,58,92,0.35);

  --serif: 'Playfair Display', Georgia, serif;
  --sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;

  --radius: 18px;
  --radius-sm: 10px;
  --container: 1180px;

  /* ---- sticky offsets ----
     Altura del nav + aire. Cambia --sticky-gap para dar mas o menos
     espacio entre el nav y cualquier elemento sticky (filtros, buybox, tabs). */
  --nav-h: 92px;
  --sticky-gap: 32px;
  --admin-bar-h: 0px;
}

/* El nav baja a 76px en pantallas chicas — ver el breakpoint de
   .site-nav .wrap mas abajo. Los dos valores DEBEN coincidir. */
@media(max-width:560px){ :root{ --nav-h:76px; } }

/* La barra de admin de WP solo queda fija (position:fixed) desde 783px.
   Por debajo de eso se va con el scroll, asi que NO debe sumar offset. */
@media(min-width:783px){ body.admin-bar{ --admin-bar-h:32px; } }

/* IMPORTANTE: --sticky-top se declara en `body`, no en `:root`.
   Las variables CSS se sustituyen en el elemento donde se DECLARAN.
   Si esto viviera en :root, se calcularia sobre <html>, donde
   --admin-bar-h siempre vale 0px, y la barra de admin de WordPress
   taparia los filtros de la tienda. */
body{
  --sticky-top: calc(var(--nav-h) + var(--sticky-gap) + var(--admin-bar-h));
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  line-height:1.6;
  display:flex;
  flex-direction:column;
  min-height:100vh;
}
.site-main{flex:1;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
button{font-family:inherit;cursor:pointer;border:none;background:none;padding:0;}
.wrap{max-width:var(--container);margin:0 auto;padding:0 32px;}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* ---------- eyebrow / section badge ---------- */
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;
  color:var(--navy);
  background:rgba(33,102,159,0.08);
  border:1px solid rgba(33,102,159,0.18);
  padding:7px 16px;border-radius:100px;
  margin-bottom:18px;
}
.eyebrow::before{content:"◆";font-size:9px;color:var(--gold);}
.eyebrow.on-navy{color:#D8E6F2;background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.18);}
.eyebrow.on-navy::before{color:var(--gold);}

h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.15;margin:0;color:var(--navy-deep);}
.accent-italic{font-style:italic;font-weight:500;color:var(--navy-soft);}
.section-lede{font-family:var(--sans);color:var(--ink-soft);font-size:16px;max-width:520px;margin-top:14px;}
.center{text-align:center;margin-left:auto;margin-right:auto;}

.divider-mark{width:44px;height:2px;background:var(--gold);margin:18px 0;}
.center .divider-mark{margin-left:auto;margin-right:auto;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-weight:600;font-size:14.5px;
  padding:14px 26px;border-radius:100px;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
  white-space:nowrap;
}
.btn-primary{background:var(--navy);color:#fff;box-shadow:0 12px 24px -10px rgba(33,102,159,0.55);}
.btn-primary:hover{background:var(--navy-deep);transform:translateY(-1px);}
.btn-ghost{background:transparent;color:var(--navy);border:1.5px solid var(--line);}
.btn-ghost:hover{border-color:var(--navy);}
.btn-text{font-weight:600;color:var(--navy);display:inline-flex;align-items:center;gap:6px;font-size:14.5px;}
.btn-text .arrow{transition:transform .15s ease;}
.btn-text:hover .arrow{transform:translateX(3px);}
.btn-block{width:100%;justify-content:center;}
.btn-sm{padding:9px 16px;font-size:13px;}

/* ---------- signature hair-strand motif ---------- */
.strand-motif{position:absolute;pointer-events:none;}
.strand-motif svg{display:block;}
.strand-divider{display:flex;justify-content:center;padding:6px 0;opacity:.55;}
.strand-divider svg{height:34px;width:auto;}

/* ---------- nav ---------- */
.site-nav{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,0.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.site-nav .wrap{display:flex;align-items:center;justify-content:space-between;height:92px;}
.brand img{height:62px;width:auto;}
/* wp_nav_menu emits bare <li> here (items_wrap '%3$s'), so the global
   ul{list-style:none} never reaches them — kill the markers directly. */
.nav-links{display:flex;gap:34px;align-items:center;}
.nav-links li{list-style:none;margin:0;padding:0;}
.mobile-panel li{list-style:none;}
.nav-links a{font-size:14.5px;font-weight:500;color:var(--ink);position:relative;padding:6px 0;}
.nav-links a.is-active,.nav-links a.current-menu-item{color:var(--navy);font-weight:700;}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--gold);transition:width .2s ease;}
.nav-links a:hover::after,.nav-links a.current-menu-item::after{width:100%;}
.nav-right{display:flex;align-items:center;gap:14px;}
.nav-icon-btn{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:100px;background:var(--cream);color:var(--navy);transition:background .15s ease;}
.nav-icon-btn:hover{background:#EFE7D8;}
.nav-icon-btn svg{width:18px;height:18px;}
.nav-icon-btn .count{position:absolute;top:-4px;right:-4px;background:var(--gold);color:#fff;font-size:10px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;}

/* ---------- search panel ---------- */
.search-panel{border-top:1px solid var(--line);background:#fff;}
.search-panel[hidden]{display:none;}
.search-form{
  max-width:var(--container);margin:0 auto;padding:16px 32px;
  display:flex;align-items:center;gap:12px;position:relative;
}
.search-form-icon{width:19px;height:19px;color:var(--tan);flex-shrink:0;}
.search-form input[type="search"]{
  flex:1;min-width:0;border:none;background:transparent;
  font-family:var(--sans);font-size:16px;color:var(--ink);padding:10px 0;
}
.search-form input[type="search"]::placeholder{color:var(--ink-soft);}
.search-form input[type="search"]:focus{outline:none;}
.search-form::after{
  content:"";position:absolute;left:32px;right:32px;bottom:10px;
  height:1px;background:var(--line);
}
.search-close{
  font-size:26px;line-height:1;color:var(--ink-soft);
  padding:0 4px;flex-shrink:0;
}
.search-close:hover{color:var(--navy);}
@media(max-width:560px){
  .search-form{padding:14px 20px;gap:9px;}
  .search-form::after{left:20px;right:20px;}
  .search-form .btn-sm{padding:9px 14px;}
}

/* mobile nav */
.nav-burger{display:none;width:40px;height:40px;border-radius:100px;background:var(--cream);align-items:center;justify-content:center;color:var(--navy);}
.nav-burger svg{width:20px;height:20px;}
.mobile-panel{display:none;flex-direction:column;gap:2px;padding:10px 32px 22px;border-top:1px solid var(--line);background:#fff;}
.mobile-panel a{padding:13px 4px;font-size:15px;font-weight:600;color:var(--ink);border-bottom:1px solid var(--line);}
.mobile-panel a.is-active{color:var(--navy);}
.site-nav.is-open .mobile-panel{display:flex;}

@media(max-width:920px){.nav-links{display:none;}.nav-burger{display:flex;}}
@media(max-width:560px){
  .nav-right .btn-sm{display:none;}
  .site-nav .wrap{height:76px;}
  .brand img{height:48px;}
}

/* Barra de admin de WP: solo es fija desde 783px. Por debajo scrollea,
   asi que el nav no debe llevar offset o queda un hueco al bajar. */
@media(min-width:783px){body.admin-bar .site-nav{top:var(--admin-bar-h);}}

/* ---------- footer ---------- */
.site-footer{background:var(--navy-deep);color:#EAF1F8;padding:72px 0 0;position:relative;overflow:hidden;}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;}
.footer-brand img{height:40px;margin-bottom:16px;}
.footer-brand p{font-size:13.5px;color:#AFC4D8;max-width:260px;line-height:1.7;}
.footer-col h4{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#8FB0CC;margin-bottom:16px;}
.footer-col a,.footer-col li{font-size:14px;color:#D9E6F1;display:block;margin-bottom:11px;}
.footer-col span{font-size:14px;color:#AFC4D8;display:block;margin-bottom:11px;line-height:1.5;}
.footer-col a:hover{color:var(--gold);}
.footer-bottom{border-top:1px solid rgba(255,255,255,0.12);padding:22px 0;display:flex;justify-content:space-between;font-size:12.5px;color:#82A0BC;flex-wrap:wrap;gap:10px;}

@media(max-width:860px){
  .footer-grid{grid-template-columns:1fr 1fr;gap:32px;}
  .footer-brand{grid-column:1/-1;}
}
@media(max-width:480px){
  .footer-grid{grid-template-columns:1fr;gap:24px;}
  .footer-bottom{flex-direction:column;align-items:flex-start;}
}

/* ---------- product card ---------- */
.product-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;transition:transform .2s ease, box-shadow .2s ease;
  display:flex;flex-direction:column;
}
.product-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.product-card .thumb{aspect-ratio:1/1;background:var(--cream);display:flex;align-items:center;justify-content:center;padding:22px;position:relative;overflow:hidden;}
.product-card .thumb img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;}
/* Solid navy fill: the old white pill vanished against light product photos. */
/* Misma pastilla en la tarjeta y en la ficha (.gallery-main solo la posiciona
   mas abajo; sin este selector alli salia como texto plano). */
.product-card .cat-tag,
.gallery-main .cat-tag{
  position:absolute;top:12px;left:12px;z-index:2;
  background:var(--navy);color:#fff;
  font-size:10.5px;font-weight:700;letter-spacing:.4px;
  padding:5px 11px;border-radius:100px;
  box-shadow:0 2px 10px -3px rgba(18,58,92,.55);
  max-width:calc(100% - 24px);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.product-card .body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:8px;flex:1;}
.product-card .brand-name{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--tan);}
.product-card .p-title{font-family:var(--sans);font-weight:600;font-size:14.5px;color:var(--ink);line-height:1.4;min-height:40px;}
.stars{color:var(--gold);font-size:12px;letter-spacing:1px;}
.product-card .price-row{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding-top:6px;}
.pyp-price{font-family:var(--serif);font-weight:700;font-size:19px;color:var(--navy-deep);}
.pyp-price .cur{font-family:var(--sans);font-size:11px;font-weight:700;color:var(--tan);margin-left:3px;}
/* El enlace del producto cubre toda la tarjeta; el boton de anadir vive
   encima (z-index mayor) para que se pueda pulsar. */
.product-card{position:relative;}
.card-link{position:static;}
.card-link::after{content:"";position:absolute;inset:0;z-index:1;}
.product-card .price-row{position:relative;z-index:2;}
.product-card:has(.card-link:hover){transform:translateY(-4px);box-shadow:var(--shadow);}
.icon-add{position:relative;z-index:2;width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;text-decoration:none;transition:background .15s ease, transform .15s ease;}
.icon-add.loading{opacity:.6;pointer-events:none;}
.icon-add.added::after{content:"";}
.icon-add:active{transform:scale(.92);}
/* WooCommerce agrega este enlace tras anadir por AJAX; el carrito ya se ve en
   la barra superior, asi que en la tarjeta solo estorbaria. */
.product-card a.added_to_cart{display:none;}
.icon-add:hover{background:var(--navy-deep);}

/* ---------- WooCommerce price override — scoped to avoid conflicts ---------- */
.product-card .woocommerce-Price-amount,
.buybox .woocommerce-Price-amount{
  font-family:var(--serif);font-weight:700;font-size:19px;color:var(--navy-deep);
}
.buybox .woocommerce-Price-amount{font-size:32px;}
.woocommerce-Price-currencySymbol{font-family:var(--sans);font-size:11px;font-weight:700;color:var(--tan);}

/* ---------- testimonial card ---------- */
.testi-card{background:var(--cream);border-radius:var(--radius);padding:28px 26px;}
.testi-card .quote-mark{font-family:var(--serif);font-size:40px;color:var(--tan);line-height:1;margin-bottom:6px;}
.testi-card p{font-style:italic;color:var(--ink);font-size:15px;line-height:1.65;margin:10px 0 18px;}
.testi-foot{display:flex;align-items:center;gap:10px;}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:700;font-size:13px;}
.testi-foot .who{font-size:13.5px;font-weight:700;color:var(--ink);}
.testi-foot .role{font-size:12px;color:var(--ink-soft);}

/* ---------- generic section spacing ---------- */
.section{padding:88px 0;}
.section.tight{padding:56px 0;}
.section.bg-navy{background:var(--navy);color:#fff;}
.section.bg-navy h2,.section.bg-navy h3{color:#fff;}
.section.bg-cream{background:var(--cream);}

/* ---------- floating WhatsApp chat button ---------- */
.chat-fab{
  position:fixed;bottom:26px;right:26px;z-index:60;
  width:56px;height:56px;border-radius:50%;
  background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 14px 30px -10px rgba(18,58,92,0.5);
  transition:transform .15s ease, box-shadow .15s ease;
}
.chat-fab:hover{transform:scale(1.08);}

::selection{background:var(--gold);color:#fff;}

/* ---------- accessibility ---------- */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,.product-card:focus-visible{
  outline:2.5px solid var(--gold);outline-offset:3px;border-radius:6px;
}

/* ---------- scroll reveal ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease, transform .6s ease;}
.reveal.is-visible{opacity:1;transform:translateY(0);}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
  .reveal{opacity:1;transform:none;}
}

/* ============================================================
   Tienda (shop archive) — catálogo
   ============================================================ */
.hero{position:relative;background:var(--cream);overflow:hidden;padding:52px 0 0;}
.hero .wrap{display:grid;grid-template-columns:1.1fr 0.8fr;gap:50px;align-items:center;padding-bottom:46px;}
.hero h1{font-size:38px;letter-spacing:-.5px;}
.hero .lede{font-size:16px;color:var(--ink-soft);max-width:460px;margin:18px 0 26px;}
.hero .cta-row{display:flex;align-items:center;gap:26px;flex-wrap:wrap;}

/* Reglas base del collage. DEBEN ir antes que los @media de abajo: tienen la
   misma especificidad, asi que si quedan despues pisan en silencio todas las
   variantes responsive (ya paso una vez: la banda movil nunca se aplicaba). */
.hero-art{position:relative;aspect-ratio:1/0.92;}
.hero-collage{position:absolute;inset:0;border-radius:28px;background:linear-gradient(160deg,var(--tan) 0%, #cbb89c 55%, var(--cream) 100%);display:grid;grid-template-columns:1.4fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"main a" "main b";gap:14px;padding:20px;}
.hero-shot{background:var(--cream);border-radius:18px;box-shadow:0 16px 30px -16px rgba(18,58,92,.35);display:flex;align-items:center;justify-content:center;overflow:hidden;min-width:0;min-height:0;}
.hero-shot img{width:76%;height:76%;object-fit:contain;mix-blend-mode:multiply;}
.hero-shot--main{grid-area:main;transform:rotate(-1.5deg);}
.hero-shot--a{grid-area:a;transform:rotate(2deg);}
.hero-shot--b{grid-area:b;transform:rotate(-2deg);}
.hero-badge{position:absolute;bottom:18px;left:18px;background:#fff;border-radius:14px;padding:12px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;z-index:4;}
.hero-badge .num{font-family:var(--serif);font-size:19px;font-weight:700;color:var(--navy);}
.hero-badge .lbl{font-size:10.5px;color:var(--ink-soft);line-height:1.3;}
.hero-badge2{position:absolute;top:18px;right:18px;background:#fff;border-radius:100px;padding:8px 14px;box-shadow:var(--shadow);font-size:11.5px;font-weight:700;color:var(--navy);z-index:4;}

@media(max-width:820px){
  .hero .wrap{grid-template-columns:1fr;gap:32px;padding-bottom:36px;}
  .hero h1{font-size:30px;}
  /* El collage pasa de 2x2 casi cuadrado a una banda horizontal. Apilado bajo
     el texto, la caja cuadrada medía ~390px de alto y empujaba el catálogo
     fuera de la pantalla; en banda ocupa poco más de la mitad y las tres fotos
     se siguen viendo completas.
     width:100% es obligatorio: con margin:auto un item de grid se encoge a su
     contenido, y como todo lo de adentro es absolute, quedaba en 0x0. */
  .hero-art{width:100%;max-width:560px;margin:0 auto;aspect-ratio:2/1;}
  .hero-collage{
    grid-template-columns:1.25fr 1fr 1fr;
    grid-template-rows:1fr;
    grid-template-areas:"main a b";
    gap:10px;padding:14px;border-radius:22px;
  }
  .hero-shot{border-radius:14px;}
  .hero-shot img{width:82%;height:82%;}
  .hero-badge{bottom:12px;left:12px;padding:9px 12px;border-radius:12px;}
  .hero-badge .num{font-size:17px;}
  .hero-badge .lbl{font-size:10px;}
  .hero-badge2{top:12px;right:12px;padding:7px 12px;font-size:10.5px;}
}
@media(max-width:560px){
  /* Las etiquetas taparían las fotos en una banda tan estrecha. No se pierde
     informacion: la barra de confianza justo debajo repite el mensaje de
     CardNet, y todo el bloque es decorativo (aria-hidden en la plantilla). */
  .hero-badge,.hero-badge2{display:none;}
  .hero-art{aspect-ratio:16/9;}
  /* Dos fotos en vez de tres: con tres columnas en 340px cada caja media
     ~93px de ancho y la foto (cuadrada) quedaba en ~76px. Con dos, ~126px. */
  .hero-collage{grid-template-columns:1fr 1fr;grid-template-areas:"main a";gap:8px;padding:10px;border-radius:18px;}
  .hero-shot--b{display:none;}
  .hero-shot{border-radius:11px;}
  .hero-shot img{width:88%;height:88%;}
  .hero-shot--main,.hero-shot--a,.hero-shot--b{transform:none;}
}
/* El adorno de hebras (inline en archive-product.php: top:-20px; right:6%)
   solo cabe en el hueco a la derecha del collage en escritorio ancho. Por
   debajo de 1100px cae encima del contenido: queda mocho bajo el menu y, al
   ser absolute, se pinta sobre el recuadro "Tienda oficial". Es decorativo. */
@media(max-width:1100px){.hero > .strand-motif{display:none;}}
@media(max-width:480px){
  .hero{padding:36px 0 0;}
  .hero h1{font-size:26px;}
  .hero .lede{font-size:15px;margin:14px 0 22px;}
  .hero .cta-row{gap:16px;}
}

.trust-bar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;}
.trust-bar .wrap{display:flex;justify-content:space-between;padding:18px 32px;flex-wrap:wrap;gap:12px 24px;}
.trust-item{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;color:var(--ink-soft);}
.trust-item .ic{color:var(--navy);flex-shrink:0;}
@media(max-width:640px){.trust-item{font-size:11.5px;}.trust-bar .wrap{padding:14px 18px;}}

.shop-layout{display:grid;grid-template-columns:260px 1fr;gap:36px;padding:52px 0 90px;align-items:start;}
.filter-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;position:sticky;top:var(--sticky-top);}

/* --- tablet/movil: barra de filtros plegable que acompana el scroll --- */
.filter-toggle{display:none;}
@media(max-width:880px){
  /* .shop-layout pasa de grid a bloque a proposito: como item de grid, el area
     del panel seria solo la primera fila y el sticky no avanzaria mas alla de
     su propia altura. En bloque, el sticky se limita al alto de .shop-layout,
     asi la barra acompana la cuadricula y se suelta al terminar el catalogo. */
  .shop-layout{display:block;}

  .filter-card{
    position:sticky;top:var(--sticky-top);z-index:20;
    padding:0;overflow:hidden;margin-bottom:24px;
    box-shadow:0 6px 20px -16px rgba(18,58,92,.55);
  }
  .filter-toggle{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    width:100%;padding:15px 18px;
    font-family:var(--sans);font-size:14.5px;font-weight:600;color:var(--navy);
    background:none;border:none;text-align:left;
  }
  .filter-toggle-label{display:flex;align-items:center;gap:10px;}
  .filter-toggle svg{width:17px;height:17px;}
  .filter-toggle-chevron{font-size:17px;line-height:1;transition:transform .2s ease;}
  .filter-card.is-open .filter-toggle-chevron{transform:rotate(180deg);}

  /* Plegado por defecto: los productos deben verse sin scroll previo. */
  .filter-body{display:none;padding:0 18px 18px;}
  /* Abierto se acota y hace scroll propio: sin esto el panel abierto vuelve a
     taparlo todo, que es justo el problema que se estaba corrigiendo. */
  /* overscroll-behavior evita el encadenado: al llegar al final de la lista el
     scroll no se pasa a la pagina, que dispararia el cierre automatico. */
  .filter-card.is-open .filter-body{display:block;max-height:58vh;overflow-y:auto;overscroll-behavior:contain;}
  .filter-card.is-open .filter-toggle{border-bottom:1px solid var(--line);margin-bottom:16px;}
}
.filter-card h4{font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft);margin:0 0 12px;}
.filter-card h4:not(:first-child){margin-top:24px;}
.f-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;font-size:13.5px;color:var(--ink);}
.f-row .n{color:var(--ink-soft);font-size:12px;}
.f-row label{display:flex;align-items:center;gap:9px;cursor:pointer;}
.f-row input{accent-color:var(--navy);width:15px;height:15px;}

.price-range{-webkit-appearance:none;appearance:none;width:100%;height:5px;border-radius:100px;background:var(--cream);margin:14px 0 8px;cursor:pointer;}
.price-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:15px;height:15px;background:#fff;border:3px solid var(--navy);border-radius:50%;cursor:pointer;margin-top:-5px;}
.price-range::-moz-range-thumb{width:9px;height:9px;background:#fff;border:3px solid var(--navy);border-radius:50%;cursor:pointer;}
.price-range::-moz-range-track{height:5px;border-radius:100px;background:transparent;}
.price-range:focus-visible{outline:2.5px solid var(--gold);outline-offset:4px;}
.range-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-soft);}

.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;}
.toggle-switch{position:relative;display:inline-flex;flex-shrink:0;}
.toggle-switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;}
.toggle-switch .toggle{width:36px;height:21px;border-radius:100px;background:#DDE4EA;position:relative;transition:background .15s ease;}
.toggle-switch .toggle::after{content:"";position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .15s ease;}
.toggle-switch input:checked + .toggle{background:var(--navy);}
.toggle-switch input:checked + .toggle::after{transform:translateX(15px);}
.toggle-switch input:focus-visible + .toggle{outline:2.5px solid var(--gold);outline-offset:3px;}
.toggle-note{font-size:11px;color:var(--ink-soft);margin-top:8px;line-height:1.5;}

.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px;}
.toolbar h2{font-size:22px;}
.sort-sel{font-size:13px;font-weight:600;color:var(--navy);border:1.5px solid var(--line);border-radius:100px;padding:8px 14px;}

.prod-grid4,.prod-grid,.woocommerce ul.products{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;list-style:none;margin:0;padding:0;}
@media(max-width:1100px){.prod-grid4,.prod-grid,.woocommerce ul.products{grid-template-columns:repeat(3,1fr);}}
@media(max-width:700px){.prod-grid4,.prod-grid,.woocommerce ul.products{grid-template-columns:repeat(2,1fr);gap:12px;}}
/* Una sola columna solo por debajo de 340px. El corte anterior estaba en 380px
   y dejaba en columna unica al iPhone SE/8 (375px) y a muchos Android (360px):
   con 18px de padding lateral esos telefonos tienen 324px utiles, espacio de
   sobra para dos tarjetas. */
@media(max-width:340px){.prod-grid4,.prod-grid,.woocommerce ul.products{grid-template-columns:1fr;}}

/* --- tarjeta compacta en movil: mas productos por pantalla --- */
@media(max-width:560px){
  .product-card .thumb{padding:12px;}
  .product-card .body{padding:12px 12px 14px;gap:5px;}
  .product-card .brand-name{font-size:10px;letter-spacing:.8px;}
  .product-card .p-title{font-size:13px;line-height:1.35;min-height:34px;}
  .product-card .stars{font-size:11px;}
  .product-card .price{font-size:16px;}
  .product-card .price-row{padding-top:4px;}
  .icon-add{width:32px;height:32px;font-size:16px;}
  .product-card .cat-tag{font-size:9.5px;padding:3px 8px;top:8px;left:8px;}
}

.more-note{grid-column:1/-1;text-align:center;padding:26px;background:var(--cream);border-radius:16px;font-size:13px;color:var(--ink-soft);}

.story-wrap{display:grid;grid-template-columns:0.9fr 1.1fr;gap:60px;align-items:center;}
.story-mark{position:relative;height:360px;margin:0;border-radius:24px;overflow:hidden;border:1px solid rgba(255,255,255,0.14);}
.story-mark img{width:100%;height:100%;object-fit:cover;object-position:center 32%;display:block;}
/* Scrim: keeps the quote legible over the photo without darkening the faces. */
.story-mark::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,58,92,.88) 0%,rgba(18,58,92,.55) 28%,rgba(18,58,92,0) 55%);}
.story-quote{position:absolute;left:0;right:0;bottom:0;z-index:1;margin:0;padding:0 28px 26px;font-family:var(--serif);font-style:italic;font-size:19px;color:#fff;line-height:1.5;text-align:center;text-shadow:0 1px 12px rgba(0,0,0,.35);}
.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media(max-width:900px){.testi-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){.testi-grid{grid-template-columns:1fr;}}
@media(max-width:760px){
  .story-wrap{grid-template-columns:1fr;gap:32px;}
  .story-mark{height:260px;}
  .story-quote{font-size:17px;padding:0 20px 20px;}
}

/* ============================================================
   Producto (single product PDP)
   ============================================================ */
.breadcrumb-bar{background:var(--cream);padding:20px 0;}
.crumbs,.woocommerce-breadcrumb{font-size:12.5px;color:var(--ink-soft);}
.crumbs a,.woocommerce-breadcrumb a{color:var(--navy);font-weight:600;}

.pdp{display:grid;grid-template-columns:1fr 0.85fr;gap:56px;padding:56px 0;align-items:start;}
@media(max-width:900px){.pdp{grid-template-columns:1fr;}}

.gallery-main{background:var(--cream);border-radius:24px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;padding:40px;position:relative;overflow:hidden;}
.gallery-main img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;}
.gallery-main .cat-tag{position:absolute;top:18px;left:18px;}

.buybox{position:sticky;top:var(--sticky-top);}
/* Mismo caso que .filter-card: .pdp colapsa a una columna en 900px. */
@media(max-width:900px){.buybox{position:static;top:auto;}}
.buybox .brand-name{font-size:12px;}
.buybox h1{font-size:26px;margin-top:6px;line-height:1.25;}
.buybox .sku{font-size:12px;color:var(--ink-soft);margin-top:6px;}
.buybox .stars-row{display:flex;align-items:center;gap:8px;margin-top:12px;}
.buybox .stars-row .stars{font-size:14px;}
.buybox .price-block{margin:22px 0;display:flex;align-items:baseline;gap:8px;}
.buybox .short-desc{font-size:14.5px;color:var(--ink-soft);line-height:1.7;margin-bottom:22px;}

.qty-row{display:flex;align-items:center;gap:16px;margin-bottom:16px;}
.qty-stepper{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:100px;overflow:hidden;}
.qty-stepper button{width:38px;height:38px;font-size:16px;color:var(--navy);}
.qty-stepper .qty-value{width:36px;text-align:center;font-weight:700;}

/* WooCommerce quantity: selector tipo pildora − 1 +.
   Las flechas nativas de input[type=number] solo aparecen al pasar el mouse
   y en movil no existen; los botones .qty-btn los inyecta pelo-y-piel.js. */
.woocommerce .quantity{
  display:inline-flex;align-items:center;flex:none;
  border:1.5px solid var(--line);border-radius:100px;background:#fff;
}
.woocommerce .quantity input.qty{
  width:44px;height:46px;padding:0;text-align:center;font-weight:700;
  border:none;background:none;font-family:var(--sans);font-size:16px;color:var(--ink);
  -moz-appearance:textfield;appearance:textfield;
}
.woocommerce .quantity input.qty::-webkit-outer-spin-button,
.woocommerce .quantity input.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.qty-btn{
  width:44px;height:46px;display:flex;align-items:center;justify-content:center;
  font-size:20px;line-height:1;color:var(--navy);border-radius:100px;
  transition:background .15s ease;
}
.qty-btn:hover{background:var(--cream);}
.qty-btn:disabled{color:var(--line);cursor:default;background:none;}

/* Cantidad y boton en una sola fila en la ficha (solo productos simples;
   los variables traen su propia tabla de variaciones). */
.buybox form.cart:not(.variations_form){display:flex;align-items:center;gap:12px;}
.buybox form.cart:not(.variations_form) .single_add_to_cart_button{flex:1;width:auto !important;}

/* WooCommerce add-to-cart button */
.woocommerce .single_add_to_cart_button{
  background:var(--navy) !important;color:#fff !important;
  border-radius:100px !important;font-family:var(--sans) !important;font-weight:600 !important;
  font-size:14.5px !important;padding:14px 26px !important;
  border:none !important;cursor:pointer !important;width:100% !important;
  transition:background .15s ease !important;
}
.woocommerce .single_add_to_cart_button:hover{background:var(--navy-deep) !important;}

.trust-mini{display:flex;flex-direction:column;gap:10px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line);}
.trust-mini .row{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft);}
.trust-mini .row .ic{color:var(--navy);flex-shrink:0;}

.tag-flag{display:inline-flex;align-items:center;gap:7px;background:rgba(197,164,107,0.15);border:1px solid rgba(197,164,107,0.4);color:#8a6d34;font-size:12px;font-weight:700;padding:7px 14px;border-radius:100px;margin-bottom:18px;}

.detail-tabs{border-top:1px solid var(--line);padding:56px 0 80px;}
.tab-nav{display:flex;gap:8px;margin-bottom:34px;flex-wrap:wrap;position:sticky;top:var(--sticky-top);z-index:10;background:#fff;padding:10px 0;}
.tab-btn{display:inline-flex;align-items:center;padding:11px 20px;border-radius:100px;font-size:13.5px;font-weight:600;border:1.5px solid var(--line);color:var(--ink-soft);transition:background .15s ease, color .15s ease, border-color .15s ease;}
.tab-btn:hover{border-color:var(--navy);color:var(--navy);}
.tab-btn.is-active{background:var(--navy);color:#fff;border-color:var(--navy);}

.detail-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:50px;}
@media(max-width:880px){.detail-grid{grid-template-columns:1fr;}}
.detail-block h3{font-size:19px;margin-bottom:14px;scroll-margin-top:150px;}
.detail-block p{color:var(--ink-soft);font-size:14.5px;line-height:1.8;margin-bottom:22px;}
.benefit-list li{display:flex;gap:10px;font-size:14.5px;color:var(--ink);padding:9px 0;border-bottom:1px dashed var(--line);}
.benefit-list li .b-ic{color:var(--gold);flex-shrink:0;}
.spec-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:13.5px;}
.spec-row .k{color:var(--ink-soft);}
.spec-row .v{font-weight:600;text-align:right;max-width:60%;}
.precaution-box{background:var(--cream);border-radius:16px;padding:20px 22px;font-size:13.5px;color:var(--ink-soft);line-height:1.7;margin-top:6px;}
.precaution-box strong{color:var(--ink);}
.related-head{margin-bottom:30px;}

/* --- ficha de producto en movil --- */
@media(max-width:700px){
  /* Las 4 pestañas suman ~500px. Con flex-wrap se apilaban en 2-3 filas y,
     al ser .tab-nav sticky, ese bloque quedaba fijo bajo el menú comiéndose
     media pantalla durante todo el scroll. En fila única con desplazamiento
     lateral ocupa ~55px constantes. */
  .tab-nav{
    flex-wrap:nowrap;overflow-x:auto;gap:7px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .tab-nav::-webkit-scrollbar{display:none;}
  .tab-btn{flex:0 0 auto;padding:9px 16px;font-size:12.5px;}
}
@media(max-width:540px){
  /* Sangrado hasta el borde: sin esto la fila de pestañas se corta dentro del
     padding del contenedor y parece que no hay más. -18px == padding de .wrap. */
  .tab-nav{margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px;}

  .pdp{gap:26px;padding:26px 0;}
  /* 40px de padding sobre una caja de 324px dejaban la foto en 244px. */
  .gallery-main{border-radius:18px;padding:18px;}
  .gallery-main .cat-tag{top:12px;left:12px;}
  .buybox h1{font-size:22px;}
  .buybox .price-block{margin:18px 0;}
  .buybox .short-desc{font-size:14px;margin-bottom:18px;}
  .detail-tabs{padding:30px 0 46px;}
  .detail-grid{gap:30px;}
  .detail-block h3{font-size:17px;}
  .detail-block p{font-size:14px;}
  .spec-row{font-size:13px;}
}

/* ============================================================
   WooCommerce global overrides
   ============================================================ */
/* --- Carrito y checkout por bloques --- */
/* En movil WooCommerce arma cada fila del carrito como grid
   "80px 132px 1fr auto": la columna del nombre es FIJA en 132px, asi que en
   pantallas de 375px la fila no cabe (necesita ~341px de 339 utiles) y aparece
   scroll horizontal. Se cambia por minmax(0,1fr) para que el nombre ceda. */
.wp-block-woocommerce-cart .wc-block-cart.is-mobile .wc-block-cart-items .wc-block-cart-items__row,
.wp-block-woocommerce-cart .wc-block-cart.is-small .wc-block-cart-items .wc-block-cart-items__row{
  grid-template-columns:64px minmax(0,1fr) auto;column-gap:12px;
}
.wp-block-woocommerce-cart .wc-block-cart.is-mobile .wc-block-cart-item__product,
.wp-block-woocommerce-cart .wc-block-cart.is-small .wc-block-cart-item__product{grid-column:2 / 3;}
.wp-block-woocommerce-cart .wc-block-cart.is-mobile .wc-block-cart-item__total,
.wp-block-woocommerce-cart .wc-block-cart.is-small .wc-block-cart-item__total{grid-column:3;}
.wp-block-woocommerce-cart .wc-block-cart.is-mobile .wc-block-cart-item__image img,
.wp-block-woocommerce-cart .wc-block-cart.is-small .wc-block-cart-item__image img{width:64px;}

/* Botones de pago con el azul de la marca (por defecto salen gris carbon). */
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button{
  background:var(--navy) !important;color:#fff !important;border:none !important;
  border-radius:100px !important;font-family:var(--sans) !important;font-weight:600 !important;
  min-height:50px;box-shadow:0 12px 24px -12px rgba(33,102,159,.6);
}
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover{background:var(--navy-deep) !important;}

/* Avisos. El tema desactiva woocommerce-general.css, asi que la caja entera
   (fondo, borde, padding, layout) se define aqui, no solo los retoques. */
.pyp-notices:has(.woocommerce-message, .woocommerce-error, .woocommerce-info){padding-top:24px;}
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-info{
  display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;
  margin:0 0 10px;padding:14px 18px;list-style:none;
  border-radius:12px;border:1px solid var(--line);border-left:4px solid var(--gold);
  background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;
}
.woocommerce-notices-wrapper .woocommerce-error{border-left-color:#B3261E;background:#FCF1F0;}
.woocommerce-notices-wrapper .woocommerce-info{border-left-color:var(--navy);}
.woocommerce-notices-wrapper .woocommerce-error li{margin:0;}
/* WooCommerce pone el boton ANTES del texto en el HTML; lo mandamos al final. */
.woocommerce-notices-wrapper .woocommerce-message .button{order:2;}
.woocommerce-notices-wrapper .woocommerce-message a.button,
.woocommerce-notices-wrapper .woocommerce-message .button{
  display:inline-flex;align-items:center;padding:9px 18px;white-space:nowrap;text-decoration:none;
  background:var(--navy) !important;border-radius:100px !important;color:#fff !important;
  font-family:var(--sans) !important;font-weight:600 !important;font-size:13.5px;border:none !important;
}

/* Cart & checkout pages */
.woocommerce .woocommerce-checkout,
.woocommerce-cart .woocommerce{padding:40px 0;}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row select{
  border:1.5px solid var(--line) !important;border-radius:10px !important;
  font-family:var(--sans) !important;color:var(--ink) !important;padding:12px 14px !important;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row select:focus{
  border-color:var(--navy) !important;outline:none !important;
  box-shadow:0 0 0 3px rgba(33,102,159,0.12) !important;
}
.woocommerce #place_order,
.woocommerce button.button.alt{
  background:var(--navy) !important;border-radius:100px !important;
  font-family:var(--sans) !important;font-weight:700 !important;font-size:15px !important;
  color:#fff !important;padding:14px 30px !important;border:none !important;
  transition:background .15s ease !important;
}
.woocommerce #place_order:hover,
.woocommerce button.button.alt:hover{background:var(--navy-deep) !important;}

/* Mobile global */
@media(max-width:540px){
  .wrap{padding:0 18px;}
  .section{padding:60px 0;}
}
