/* ============================================================
   Álvaro&Raíces — Bolso de Ganchillo Hecho a Mano
   ============================================================ */

/* El atributo hidden debe ganar siempre.
   Reglas como .drawer{display:flex} o .cart-empty{display:grid} tienen más
   especificidad que el display:none que el navegador aplica a [hidden], así
   que los paneles del carrito y del menú quedaban abiertos sobre la página
   y bloqueaban los clics de los botones que hay debajo. */
[hidden]{display:none !important}

:root{
  --cream:#faf6f0;
  --paper:#ffffff;
  --ink:#2b241f;
  --ink-soft:#6b5d53;
  --line:#e6ddd2;
  --clay:#a9613f;
  --clay-dark:#8d4d2f;
  --olive:#7f8f6a;
  --gold:#e2a33c;
  --sale:#b8342b;
  --radius:14px;
  --radius-sm:9px;
  --shadow:0 10px 30px rgba(60,42,30,.09);
  --wrap:1200px;
  --font-display:"Playfair Display", Georgia, serif;
  --font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{max-width:100%;display:block;height:auto}
a{color:inherit}
button{font-family:inherit;cursor:pointer}

h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.2;margin:0 0 .5em}

.container{width:min(100% - 2.5rem, var(--wrap));margin-inline:auto}

.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}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:.6rem 1rem;z-index:200}
.skip-link:focus{left:.5rem;top:.5rem}

:focus-visible{outline:2px solid var(--clay);outline-offset:2px}

.muted{color:var(--ink-soft);font-size:.9rem}
.stars{color:var(--gold);letter-spacing:1px}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  border:1px solid transparent;border-radius:var(--radius-sm);
  padding:.95rem 1.6rem;font-size:.95rem;font-weight:600;letter-spacing:.01em;
  text-decoration:none;transition:background .18s ease, color .18s ease, transform .12s ease;
}
.btn:active{transform:translateY(1px)}
.btn--primary{background:var(--clay);color:#fff}
.btn--primary:hover{background:var(--clay-dark)}
.btn--dark{background:var(--ink);color:#fff}
.btn--dark:hover{background:#170f0b}
.btn--outline{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--outline:hover{background:var(--ink);color:#fff}
.btn--block{width:100%}
.btn--grow{flex:1}

.icon-btn{
  background:none;border:0;color:var(--ink);padding:.45rem;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;font-size:1.5rem;line-height:1;
}
.icon-btn:hover{background:rgba(43,36,31,.07)}

/* ---------- Announcement ---------- */
.announcement{background:var(--ink);color:#f6efe6;font-size:.82rem}
.announcement__inner{
  width:min(100% - 2.5rem,var(--wrap));margin-inline:auto;
  display:flex;align-items:center;justify-content:center;gap:.75rem;
  padding:.55rem 0;text-align:center;flex-wrap:wrap;
}
.announcement__stars{color:var(--gold)}
.announcement__stars strong{color:#fff}
.announcement__sep{opacity:.4}
.announcement__promo{font-weight:600;letter-spacing:.02em}

/* ---------- Header ---------- */
.header{
  position:sticky;top:0;z-index:60;
  background:rgba(250,246,240,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.header__inner{display:flex;align-items:center;gap:1rem;padding:.85rem 0}
.header__burger{display:none}

.header__logo{
  font-family:var(--font-display);font-size:1.45rem;font-weight:700;
  text-decoration:none;letter-spacing:-.01em;white-space:nowrap;
}
.header__logo span{color:var(--clay);margin:0 .1em}
.header__logo--footer{font-size:1.6rem}

.header__nav{display:flex;gap:1.6rem;margin-inline:auto;font-size:.9rem;font-weight:500}
.header__nav a{text-decoration:none;padding-bottom:2px;border-bottom:1.5px solid transparent}
.header__nav a:hover{border-color:var(--clay)}

.header__actions{display:flex;align-items:center;gap:.15rem;margin-left:auto}

.cart-btn{position:relative}
.cart-btn__count{
  position:absolute;top:0;right:0;min-width:18px;height:18px;
  background:var(--clay);color:#fff;border-radius:9px;
  font-size:.68rem;font-weight:700;display:grid;place-items:center;padding:0 4px;
}

/* ---------- Drawers ---------- */
.drawer-backdrop{position:fixed;inset:0;background:rgba(30,22,17,.45);z-index:90;animation:fade .2s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}

.drawer{
  position:fixed;top:0;bottom:0;width:min(420px,90vw);z-index:100;
  background:var(--paper);display:flex;flex-direction:column;
  box-shadow:0 0 40px rgba(40,28,20,.2);
}
.drawer--right{right:0;animation:slideL .25s ease}
.drawer--left{left:0;animation:slideR .25s ease}
@keyframes slideL{from{transform:translateX(100%)}}
@keyframes slideR{from{transform:translateX(-100%)}}

.drawer__head{
  display:flex;align-items:center;justify-content:space-between;
  padding:1rem 1.25rem;border-bottom:1px solid var(--line);
}
.drawer__title{font-family:var(--font-display);font-size:1.25rem;font-weight:600}

.drawer__nav{display:flex;flex-direction:column;padding:.5rem 0;overflow-y:auto}
.drawer__nav a{padding:.85rem 1.25rem;text-decoration:none;font-size:.95rem;border-bottom:1px solid var(--line)}
.drawer__nav a:hover{background:var(--cream)}

.drawer__foot{margin-top:auto;padding:1.25rem;border-top:1px solid var(--line);display:grid;gap:.85rem}

.field{display:grid;gap:.3rem;font-size:.82rem;color:var(--ink-soft)}
.field select{
  font-family:inherit;font-size:.9rem;color:var(--ink);
  padding:.6rem .7rem;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--paper);width:100%;
}

/* ---------- Cart ---------- */
.cart-reserve{
  display:flex;align-items:center;justify-content:space-between;
  padding:.7rem 1.25rem;background:#fdf3e8;font-size:.85rem;
}
.cart-reserve__timer{font-weight:700;color:var(--sale);font-variant-numeric:tabular-nums}

.cart-ship{padding:.9rem 1.25rem;font-size:.83rem;color:var(--ink-soft);display:grid;grid-template-columns:auto 1fr;gap:.45rem .5rem;align-items:center}
.cart-ship svg{grid-row:1;grid-column:1;color:var(--clay)}
.cart-ship span{grid-row:1;grid-column:2}
.cart-ship__bar{grid-column:1/-1;height:5px;background:var(--line);border-radius:3px;overflow:hidden}
.cart-ship__bar i{display:block;height:100%;background:var(--olive);transition:width .3s ease}

.cart-body{flex:1;overflow-y:auto;padding:1rem 1.25rem}
.cart-empty{text-align:center;padding:2.5rem 0;display:grid;gap:1rem;justify-items:center}
.cart-empty h3{font-size:1.2rem;margin:0}

.cart-items{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.cart-item{display:grid;grid-template-columns:70px 1fr auto;gap:.85rem;align-items:start}
.cart-item img{border-radius:var(--radius-sm);background:var(--cream)}
.cart-item__name{font-size:.9rem;font-weight:600;margin:0}
.cart-item__meta{font-size:.78rem;color:var(--ink-soft);margin:.15rem 0 .4rem}
.cart-item__remove{background:none;border:0;color:var(--ink-soft);font-size:.75rem;text-decoration:underline;padding:0}
.cart-item__price{font-weight:600;font-size:.9rem;white-space:nowrap}

.cart-foot{padding:1.1rem 1.25rem 1.4rem;border-top:1px solid var(--line);display:grid;gap:.85rem}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;font-size:.95rem}
.cart-total strong{font-size:1.2rem}

/* ---------- Product layout ---------- */
.product{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:3rem;padding:2.5rem 0 3.5rem;align-items:start;
}

/* Gallery */
.gallery{position:sticky;top:88px;min-width:0}
.gallery__stage{
  position:relative;border-radius:var(--radius);overflow:hidden;
  background:var(--paper);box-shadow:var(--shadow);aspect-ratio:1/1;
}
.gallery__stage img{width:100%;height:100%;object-fit:cover}
.gallery__badge{
  position:absolute;top:1rem;left:1rem;background:var(--sale);color:#fff;
  font-size:.75rem;font-weight:700;padding:.35rem .7rem;border-radius:99px;letter-spacing:.02em;
}
.gallery__arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  width:40px;height:40px;border:0;border-radius:50%;
  background:rgba(255,255,255,.9);color:var(--ink);font-size:1.6rem;line-height:1;
  display:grid;place-items:center;box-shadow:0 2px 10px rgba(0,0,0,.12);
}
.gallery__arrow:hover{background:#fff}
.gallery__arrow--prev{left:.75rem}
.gallery__arrow--next{right:.75rem}

.gallery__thumbs{
  display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-top:.7rem;
}
.gallery__thumbs button{
  padding:0;border:2px solid transparent;border-radius:var(--radius-sm);
  overflow:hidden;background:var(--paper);aspect-ratio:1/1;
}
.gallery__thumbs button img{width:100%;height:100%;object-fit:cover}
.gallery__thumbs button.is-active{border-color:var(--clay)}

/* Product info */
.pinfo{min-width:0}
.pinfo__eyebrow{
  font-size:.76rem;font-weight:700;color:var(--sale);
  letter-spacing:.03em;margin:0 0 .6rem;
}
.pinfo__title{font-size:clamp(1.8rem,3.4vw,2.6rem);margin:0 0 .55rem}

.pinfo__rating{
  display:inline-flex;align-items:center;gap:.5rem;
  font-size:.87rem;color:var(--ink-soft);text-decoration:none;margin-bottom:1.1rem;
}
.pinfo__rating:hover{color:var(--ink)}

.pinfo__price{display:flex;align-items:baseline;gap:.65rem;flex-wrap:wrap}
.price--now{font-family:var(--font-display);font-size:2rem;font-weight:600}
.price--was{color:var(--ink-soft);text-decoration:line-through;font-size:1.05rem}
.tag{font-size:.72rem;font-weight:700;padding:.25rem .55rem;border-radius:5px}
.tag--sale{background:#fbe9e7;color:var(--sale)}
.pinfo__unit{font-size:.78rem;color:var(--ink-soft);margin:.2rem 0 1.4rem}

.perks{
  list-style:none;margin:0 0 1.5rem;padding:1rem 1.1rem;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  display:grid;gap:.55rem;font-size:.9rem;
}

.variant{margin-bottom:1.4rem}
.variant__label{font-size:.85rem;font-weight:600;display:block;margin-bottom:.5rem}
.swatches{display:flex;flex-wrap:wrap;gap:.5rem}
.swatch{
  width:34px;height:34px;border-radius:50%;border:1.5px solid var(--line);
  background:var(--sw);padding:0;transition:box-shadow .15s ease;
}
.swatch.is-active{box-shadow:0 0 0 2px var(--cream),0 0 0 4px var(--clay)}
.variant__chosen{font-size:.82rem;color:var(--ink-soft);margin:.6rem 0 0}

.qty-row{display:flex;gap:.7rem;margin-bottom:.7rem}
.qty{
  display:flex;align-items:center;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:var(--paper);overflow:hidden;
}
.qty button{width:40px;height:100%;border:0;background:none;font-size:1.1rem;color:var(--ink)}
.qty button:hover{background:var(--cream)}
.qty input{
  width:44px;text-align:center;border:0;background:none;
  font-family:inherit;font-size:.95rem;font-weight:600;-moz-appearance:textfield;
}
.qty input::-webkit-outer-spin-button,.qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

.stock-note{font-size:.83rem;color:var(--ink-soft);display:flex;align-items:center;gap:.45rem;margin:1rem 0 1.6rem}
.stock-note .dot{width:8px;height:8px;border-radius:50%;background:var(--sale);animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* Mini testimonials */
/* O padding va en cada slide y no en la caja: con overflow:hidden el recorte
   se hace en el borde exterior del padding, así que el slide siguiente
   asomaba por la derecha en el móvil. */
.minitest{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem 0;overflow:hidden}
.minitest__track{display:flex;transition:transform .35s ease}
.minitest__slide{margin:0;flex:0 0 100%;min-width:0;padding:0 1.25rem;display:grid;grid-template-columns:64px 1fr;gap:1rem;align-items:start}
.minitest__slide img{width:64px;height:64px;border-radius:50%;object-fit:cover}
.minitest__slide blockquote{margin:0}
.minitest__slide p{margin:0 0 .5rem;font-size:.88rem;line-height:1.6}
.minitest__slide figcaption{display:flex;align-items:center;gap:.6rem;font-size:.82rem;color:var(--ink-soft)}
.minitest__dots{display:flex;justify-content:center;gap:.4rem;margin-top:.9rem}
.minitest__dots button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:var(--line)}
.minitest__dots button.is-active{background:var(--clay);width:20px;border-radius:4px}

.payments{display:flex;justify-content:center}
.payments--inline{margin-top:1.4rem;opacity:.85}

/* ---------- Marquee ---------- */
.marquee{background:var(--ink);color:#f6efe6;overflow:hidden;padding:.7rem 0;font-size:.8rem;font-weight:600;letter-spacing:.05em}
.marquee__track{display:flex;gap:2.5rem;width:max-content;animation:scroll 28s linear infinite}
.marquee--reverse .marquee__track{animation-direction:reverse}
@keyframes scroll{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.marquee__track{animation:none}}

/* ---------- Sections ---------- */
.section{padding:3.5rem 0}
.section--narrow{max-width:820px}
.section__title{font-size:clamp(1.5rem,3vw,2.1rem);text-align:center;margin-bottom:1.8rem}

/* Videos */
.videos{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.video-card{border-radius:var(--radius);overflow:hidden;background:#000;box-shadow:var(--shadow);aspect-ratio:9/16}
.video-card video{width:100%;height:100%;object-fit:cover;display:block}

/* FAQ */
.faq{display:grid;gap:.7rem}
.faq__item{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.faq__item summary{
  cursor:pointer;list-style:none;padding:1.05rem 1.25rem;
  font-family:var(--font-display);font-size:1.08rem;font-weight:600;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{content:"+";font-size:1.4rem;color:var(--clay);font-family:var(--font-body);line-height:1}
.faq__item[open] summary::after{content:"−"}
.faq__body{padding:0 1.25rem 1.15rem;font-size:.92rem}
.faq__body p{margin:0 0 .7rem}
.faq__body p:last-child{margin-bottom:0}

/* Story */
/* Texto arriba y foto debajo.
   Antes iban lado a lado y la foto, que es vertical (1536x2752), se metía en
   una caja 4/3: con object-fit:cover solo se veía el 42% de su altura y las
   caras salían cortadas. Apilado, la foto va en una caja 3/4 y se ve el 74%. */
.story{
  display:grid;grid-template-columns:minmax(0,1fr);gap:0;
  background:var(--paper);padding-bottom:clamp(2rem,4vw,3.5rem);
}
.story__text{
  padding:clamp(2rem,5vw,4rem) clamp(1.25rem,5vw,4rem) clamp(1.5rem,3vw,2.5rem);
  text-align:center;max-width:60ch;margin-inline:auto;
}
.story__text h2{font-size:clamp(1.6rem,3vw,2.3rem)}
.story__text p{color:var(--ink-soft);margin-bottom:1.5rem}
.story__media{
  aspect-ratio:3/4;overflow:hidden;border-radius:var(--radius);
  width:min(100% - 2.5rem, 560px);margin-inline:auto;
}
.story__media img{width:100%;height:100%;object-fit:cover}

/* Reviews */
.reviews__head{text-align:center;margin-bottom:2rem}
.reviews__score{font-size:.95rem;color:var(--ink-soft);margin:0}
.reviews{columns:3;column-gap:1.2rem}
.review{
  break-inside:avoid;margin:0 0 1.2rem;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
}
.review img{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--cream)}
.review__body{padding:1rem 1.1rem 1.15rem}
.review__stars{color:var(--gold);font-size:.9rem;letter-spacing:1px}
.review__text{font-size:.89rem;margin:.4rem 0 .7rem;line-height:1.6}
.review__meta{font-size:.78rem;color:var(--ink-soft);display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.review__verified{color:var(--olive);font-weight:600}
.reviews__more{text-align:center;margin-top:1.5rem}

/* ---------- Footer ---------- */
.footer{background:var(--ink);color:#e8ded2;margin-top:3rem;padding:3rem 0 1.5rem}
.footer__inner{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:2.5rem}
.footer__brand p{font-size:.88rem;color:#b8a99a;max-width:34ch}
.footer h3{font-size:1rem;font-family:var(--font-body);font-weight:600;color:#fff;margin-bottom:.9rem}
.footer__links ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem;font-size:.88rem}
.footer__links a{text-decoration:none;color:#cbbcad}
.footer__links a:hover{color:#fff;text-decoration:underline}
.footer__prefs{display:grid;gap:.7rem;align-content:start}
.footer__prefs .field select{background:#3a302a;border-color:#4b3f37;color:#e8ded2}

.footer__bottom{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  border-top:1px solid #453a33;margin-top:2.5rem;padding-top:1.4rem;
}
.footer__copy{font-size:.8rem;color:#a8988a;margin:0}
.footer .payments img{filter:none}

/* ---------- Sticky bar ---------- */
.sticky-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
  align-items:center;gap:.8rem;padding:.7rem 1rem;
  background:rgba(255,255,255,.97);backdrop-filter:blur(8px);
  border-top:1px solid var(--line);
}
.sticky-bar.is-visible{display:flex}
.sticky-bar__price{font-size:1rem;white-space:nowrap}
.sticky-bar__price s{color:var(--ink-soft);font-size:.85rem;margin-left:.25rem}
.sticky-bar .btn{flex:1}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,140%);
  background:var(--ink);color:#fff;padding:.8rem 1.3rem;border-radius:99px;
  font-size:.88rem;z-index:150;transition:transform .3s ease;box-shadow:var(--shadow);
}
.toast.is-visible{transform:translate(-50%,0)}

/* ---------- Static pages ---------- */
.page{padding:3rem 0 4rem;max-width:760px}
.page h1{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:1.2rem}
.page h2{font-size:1.25rem;margin-top:2rem}
.page p,.page li{font-size:.95rem;color:#463a33}
.page ul{padding-left:1.2rem}
.page .lead{font-size:1.05rem;color:var(--ink-soft)}
.page a{color:var(--clay)}

.form{display:grid;gap:1rem;margin-top:1.5rem;max-width:520px}
.form label{display:grid;gap:.35rem;font-size:.85rem;font-weight:500}
.form input,.form textarea{
  font-family:inherit;font-size:.95rem;padding:.75rem .85rem;
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);
}
.form textarea{min-height:130px;resize:vertical}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  /* minmax(0,1fr) y no 1fr: con 1fr el mínimo de la columna es auto, y el
     carrusel de testimonios (un flex ancho dentro de .pinfo) la estiraba más
     allá de la pantalla, dejando la página con scroll horizontal en el móvil. */
  .product{grid-template-columns:minmax(0,1fr);gap:2rem}
  .gallery{position:static}
  .reviews{columns:2}
  .videos{grid-template-columns:repeat(3,1fr)}
  .header__nav{display:none}
  .header__burger{display:inline-flex}
  .header__logo{margin-inline:auto}
  .footer__inner{grid-template-columns:1fr 1fr;gap:2rem}
}

@media (max-width:720px){
  .container{width:min(100% - 1.6rem,var(--wrap))}

  /* Fotos de las historias a pantalla completa: de borde a borde y con la
     altura de la pantalla del móvil (svh descuenta la barra del navegador). */
  .story{padding-bottom:0}
  .story__media{
    width:100%;max-width:none;margin:0;border-radius:0;
    aspect-ratio:auto;height:100vh;height:100svh;
  }
  .story__media img{width:100%;height:100%;object-fit:cover;object-position:center top}

  .videos{grid-template-columns:1fr;max-width:380px;margin-inline:auto}
  .reviews{columns:1}

  /* Miniaturas en una tira deslizable en vez de una rejilla de 5 que dejaba
     una fila suelta con 2 fotos. */
  .gallery__thumbs{
    display:flex;gap:.5rem;overflow-x:auto;scroll-snap-type:x mandatory;
    padding:2px 2px 6px;margin-inline:-2px;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  }
  .gallery__thumbs::-webkit-scrollbar{display:none}
  .gallery__thumbs button{flex:0 0 64px;width:64px;scroll-snap-align:start}
  .footer__inner{grid-template-columns:1fr}
  .section{padding:2.5rem 0}
  .minitest__slide{grid-template-columns:1fr}
  .minitest__slide img{width:52px;height:52px}
  body{padding-bottom:68px}
}

/* ============================================================
   Estados de reserva: imagen que no carga y vídeo no disponible
   ============================================================ */
.img--fallback {
  object-fit: contain;
  background: #f3ece3;
}

/* Vídeo sin miniatura propia: fondo claro en vez de un rectángulo negro */
.video-card video {
  background: #f3ece3;
}

.video-card__error {
  margin: .6rem 0 0;
  font-size: .875rem;
  line-height: 1.4;
  color: #8a7360;
  text-align: center;
}
