:root{--ink:#171310;--ink2:#241d18;--cream:#f7f0e4;--paper:#fffaf2;--red:#e63224;--yellow:#ffc52c;--muted:#726860;--radius:20px;--shadow:0 18px 45px rgba(28,19,12,.14)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}body.no-scroll{overflow:hidden}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.header{height:78px;padding:0 clamp(20px,5vw,76px);display:flex;align-items:center;justify-content:space-between;background:rgba(23,19,16,.97);color:white;position:sticky;top:0;z-index:50;border-bottom:1px solid rgba(255,255,255,.08)}.brand{display:flex;gap:10px;align-items:center;font:800 22px/18px 'League Spartan',sans-serif;letter-spacing:.7px}.brand small{display:block;font:600 8px/12px 'DM Sans';letter-spacing:2.4px;color:#d1c6b7}.brand-mark{width:38px;height:38px;border-radius:10px 10px 10px 2px;display:grid;place-items:center;background:var(--red);color:var(--yellow);font:800 25px 'League Spartan';transform:rotate(-3deg)}nav{display:flex;gap:34px;align-items:center}nav a{font-size:14px;font-weight:600;color:#bfb5ac;position:relative}nav a:hover,nav a.active{color:white}nav a.active:after{content:"";height:3px;background:var(--yellow);border-radius:3px;position:absolute;left:0;right:0;bottom:-12px}.header-actions{display:flex;gap:10px}.cart-button,.nav-toggle{border:0;background:#312923;color:white;border-radius:12px;height:43px;min-width:48px;font-size:17px}.cart-button span{display:inline-grid;place-items:center;background:var(--red);font-size:11px;font-weight:700;border-radius:20px;min-width:19px;height:19px;margin-left:4px}.cart-button span.has-items{background:var(--yellow);color:var(--ink)}.nav-toggle{display:none;font-size:22px}.hero{min-height:620px;height:calc(100vh - 78px);max-height:780px;background:url('../img/hero.jpg') center/cover no-repeat;position:relative;display:flex;align-items:center;padding:55px clamp(20px,8vw,120px);color:white}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,12,10,.98) 0%,rgba(15,12,10,.8) 45%,rgba(15,12,10,.05) 76%)}.hero-content{position:relative;max-width:620px}.eyebrow,.kicker{font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--yellow)}.hero h1,.menu-hero h1{font:800 clamp(64px,8.4vw,118px)/.78 'League Spartan';letter-spacing:-4px;text-transform:uppercase;margin:25px 0}.hero h1 em,.menu-hero h1 em{font-style:normal;color:var(--red)}.hero p{font-size:18px;line-height:1.6;color:#d6cdc4;max-width:520px}.hero-actions{display:flex;align-items:center;gap:28px;margin:33px 0 48px}.btn{border:0;border-radius:12px;padding:15px 22px;font-weight:800;display:inline-flex;justify-content:center;align-items:center;gap:18px;transition:.2s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--red);color:white;box-shadow:0 10px 25px rgba(230,50,36,.3)}.btn-light{background:var(--cream);color:var(--ink)}.text-link{font-weight:700;font-size:14px;border-bottom:1px solid currentColor;padding-bottom:4px}.text-link.red{color:var(--red)}.hero-proof{display:flex;gap:0}.hero-proof div{padding:0 28px;border-left:1px solid #51473f}.hero-proof div:first-child{padding-left:0;border:0}.hero-proof strong,.hero-proof span{display:block}.hero-proof strong{font:700 21px 'League Spartan';color:var(--yellow)}.hero-proof span{font-size:11px;color:#a79e96;margin-top:3px}.section{padding:90px clamp(20px,7vw,105px)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:35px}.section h2,.promo-section h2{font:800 clamp(40px,5vw,66px)/.95 'League Spartan';letter-spacing:-2px;text-transform:uppercase;margin:10px 0}.section-heading>a{font-weight:700;color:var(--red);font-size:14px}.product-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.product-card{background:white;border-radius:var(--radius);overflow:hidden;box-shadow:0 8px 25px rgba(30,20,12,.07);border:1px solid #eee3d7;opacity:0;transform:translateY(18px);transition:.35s}.product-card.visible{opacity:1;transform:none}.product-card:hover{box-shadow:var(--shadow);transform:translateY(-5px)}.product-img{height:220px;position:relative;overflow:hidden;background:#2a231e}.product-img img{width:100%;height:100%;object-fit:cover;transition:.5s}.product-card:hover .product-img img{transform:scale(1.05)}.category-label,.sold-label{position:absolute;left:13px;top:13px;background:rgba(23,19,16,.8);color:white;padding:6px 9px;border-radius:7px;text-transform:uppercase;font-size:9px;letter-spacing:1.3px;font-weight:800}.sold-label{z-index:2;background:var(--red);left:auto;right:13px}.sold-out .product-img img{filter:grayscale(.7);opacity:.65}.product-body{padding:20px}.product-body h3{font:800 23px 'League Spartan';margin:0 0 8px}.product-body p{font-size:13px;line-height:1.5;color:var(--muted);margin:0;min-height:40px}.product-foot{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.product-foot strong{font:800 21px 'League Spartan'}.product-foot button{border:0;border-radius:9px;padding:10px 12px;background:var(--ink);color:white;font-size:12px;font-weight:700}.product-foot button:hover{background:var(--red)}.product-foot button:disabled{background:#a79f97;cursor:not-allowed}.promo-section{margin:0 clamp(20px,7vw,105px) 80px;display:grid;grid-template-columns:1fr 1fr;background:var(--red);color:white;border-radius:28px;overflow:hidden;min-height:460px}.promo-copy{padding:65px clamp(30px,5vw,75px);display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.eyebrow.dark{color:var(--ink)}.promo-copy h2{font-size:clamp(50px,6vw,80px);margin:18px 0}.promo-copy p{margin:0 0 18px;color:#ffe1dc}.promo-copy>div{display:flex;align-items:center;gap:14px;margin-bottom:25px}.promo-copy strong{font:800 28px 'League Spartan';color:var(--yellow)}.promo-copy s{opacity:.65}.promo-art{position:relative;overflow:hidden}.promo-art:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--red),transparent 35%)}.promo-art img{width:100%;height:100%;object-fit:cover}.promo-art>span{position:absolute;z-index:2;right:30px;top:30px;width:110px;height:110px;background:var(--yellow);color:var(--ink);border-radius:50%;display:grid;place-items:center;text-align:center;font:800 14px/18px 'League Spartan';transform:rotate(8deg)}.promo-art>span b{font-size:27px}.info-section{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px;background:var(--cream)}.story p{color:var(--muted);line-height:1.7;max-width:480px}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.info-grid article{padding:25px;background:var(--paper);border-radius:16px;border:1px solid #eadfce;opacity:0;transform:translateY(15px);transition:.35s}.info-grid article.visible{opacity:1;transform:none}.info-grid article>span{color:var(--red);font-size:24px}.info-grid h3{font:800 20px 'League Spartan';margin:15px 0 7px}.info-grid p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}footer{background:var(--ink);color:#a99f97;padding:45px clamp(20px,7vw,105px);display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:30px;align-items:center;font-size:12px}.footer-brand{color:white}.footer-links{display:flex;gap:20px}.footer-links a:hover{color:white}.credit strong{color:var(--yellow)}.whatsapp-float{position:fixed;right:22px;bottom:22px;z-index:20;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#25d366;color:white;font-size:28px;box-shadow:0 8px 22px rgba(0,0,0,.25)}#toast{position:fixed;z-index:100;left:50%;bottom:25px;transform:translate(-50%,30px);background:var(--ink);color:white;border-left:4px solid var(--yellow);border-radius:10px;padding:13px 20px;font-size:13px;opacity:0;pointer-events:none;transition:.25s}#toast.show{opacity:1;transform:translate(-50%,0)}.cart-overlay{position:fixed;inset:0;z-index:90;visibility:hidden}.cart-overlay.open{visibility:visible}.cart-backdrop{position:absolute;inset:0;border:0;background:rgba(12,9,7,.68);opacity:0;transition:.3s}.cart-overlay.open .cart-backdrop{opacity:1}.cart-panel{position:absolute;right:0;top:0;height:100%;width:min(470px,100%);background:var(--paper);transform:translateX(100%);transition:.35s;display:flex;flex-direction:column;box-shadow:-20px 0 50px rgba(0,0,0,.2)}.cart-overlay.open .cart-panel{transform:none}.cart-head{display:flex;align-items:center;justify-content:space-between;padding:26px;border-bottom:1px solid #eadfd4}.cart-head>div>span{text-transform:uppercase;color:var(--red);font-size:10px;font-weight:800;letter-spacing:1.8px}.cart-head h2{font:800 30px 'League Spartan';margin:4px 0}.cart-head h2 small{font:500 12px 'DM Sans';color:var(--muted);margin-left:8px}.cart-head>button{border:0;background:#ece3d9;border-radius:50%;width:38px;height:38px;font-size:25px}.cart-items{padding:8px 25px;overflow:auto;flex:1}.cart-item{display:grid;grid-template-columns:78px 1fr auto;gap:14px;padding:17px 0;border-bottom:1px solid #e8ded3}.cart-item img{width:78px;height:78px;object-fit:cover;border-radius:12px}.cart-item h3{font:800 17px 'League Spartan';margin:3px 0}.cart-item span{font-size:12px;color:var(--muted)}.qty{display:flex;align-items:center;gap:12px;margin-top:10px}.qty button{width:25px;height:25px;border:1px solid #ddd0c3;background:white;border-radius:7px}.qty b{font-size:13px}.cart-line{display:flex;flex-direction:column;align-items:end;justify-content:space-between}.cart-line button{border:0;background:none;color:#a69a90;font-size:20px}.cart-line strong{font:800 16px 'League Spartan'}.cart-bottom{border-top:1px solid #eadfd4;padding:20px 25px;background:white}.clear-cart{border:0;background:none;color:var(--red);font-size:11px;text-decoration:underline;float:right}.total-row{display:flex;justify-content:space-between;align-items:center;clear:both;padding-top:14px}.total-row span{font-weight:700}.total-row strong{font:800 27px 'League Spartan'}.cart-bottom small{display:block;color:var(--muted);font-size:10px;margin:4px 0 15px}.whatsapp-order{width:100%;border:0;background:#20ba5a;color:white;border-radius:12px;padding:15px;font-weight:800}.cart-empty{text-align:center;padding:80px 20px}.cart-empty>span{font-size:45px}.cart-empty h3{font:800 27px 'League Spartan';margin:18px 0 5px}.cart-empty p{color:var(--muted);font-size:13px;margin:0 0 22px}
@media(max-width:1000px){.product-grid{grid-template-columns:repeat(2,1fr)}.info-section{grid-template-columns:1fr;gap:35px}.promo-section{grid-template-columns:1.05fr .95fr}footer{grid-template-columns:1fr 1fr}.hero-shade{background:linear-gradient(90deg,rgba(15,12,10,.97),rgba(15,12,10,.56))}}
@media(max-width:720px){.header{height:68px;padding:0 18px}.header nav{position:absolute;top:68px;left:0;right:0;background:var(--ink2);flex-direction:column;align-items:flex-start;padding:0 24px;gap:0;max-height:0;overflow:hidden;transition:.3s}.header nav.open{max-height:300px;padding-top:12px;padding-bottom:12px}.header nav a{padding:14px 0;width:100%}.header nav a.active:after{display:none}.nav-toggle{display:block}.hero{height:auto;min-height:650px;padding:75px 22px;background-position:63% center}.hero-shade{background:linear-gradient(90deg,rgba(15,12,10,.98) 0%,rgba(15,12,10,.77) 70%,rgba(15,12,10,.4))}.hero h1{font-size:68px;letter-spacing:-2px}.hero p{font-size:16px}.hero-actions{align-items:flex-start;flex-direction:column;gap:22px}.hero-proof div{padding:0 12px}.hero-proof span{font-size:9px}.section{padding:65px 18px}.section-heading{align-items:flex-start}.section-heading>a{display:none}.product-grid{grid-template-columns:1fr 1fr;gap:10px}.product-img{height:145px}.product-body{padding:14px}.product-body h3{font-size:18px}.product-body p{font-size:11px;min-height:51px}.product-foot{align-items:flex-start;flex-direction:column;gap:10px}.product-foot strong{font-size:18px}.product-foot button{width:100%}.promo-section{margin:0 18px 55px;display:flex;flex-direction:column;min-height:0}.promo-copy{padding:40px 28px}.promo-copy h2{font-size:50px}.promo-art{height:260px}.promo-art:after{background:linear-gradient(180deg,var(--red),transparent 45%)}.info-grid{grid-template-columns:1fr}.info-section{padding-bottom:65px}footer{grid-template-columns:1fr;text-align:center;justify-items:center}.footer-links{justify-content:center}.whatsapp-float{width:49px;height:49px}.cart-item{grid-template-columns:65px 1fr auto}.cart-item img{width:65px;height:65px}}

/* Contenedores: el fondo puede ser fluido, el contenido nunca supera 1200px. */
.header{padding-inline:max(16px,calc((100% - 1200px)/2))}
.hero{padding-inline:max(16px,calc((100% - 1200px)/2))}
.section{width:min(calc(100% - 32px),1200px);margin-inline:auto;padding-inline:0}
.promo-section{width:min(calc(100% - 32px),1200px);margin-inline:auto;margin-bottom:80px}
footer{padding-inline:max(16px,calc((100% - 1200px)/2))}
@media(max-width:720px){.header{padding-inline:16px}.hero{padding-inline:20px}.section{width:min(calc(100% - 32px),1200px);padding-inline:0}.promo-section{width:min(calc(100% - 32px),1200px);margin-inline:auto;margin-bottom:55px}}

/* Bloque informativo compacto */
.info-section{
  grid-template-columns:minmax(300px,.82fr) minmax(0,1.18fr);
  align-items:center;
  gap:clamp(32px,4vw,52px);
  padding:clamp(46px,5vw,62px) clamp(38px,5.5vw,68px);
  border-radius:26px;
  overflow:hidden;
}
.info-section .story{max-width:420px}
.info-section .story h2{
  font-size:clamp(40px,4vw,52px);
  line-height:.96;
  margin:12px 0 16px;
}
.info-section .story p{
  max-width:400px;
  margin:0 0 18px;
  font-size:14px;
  line-height:1.65;
}
.info-section .info-grid{gap:12px}
.info-section .info-grid article{
  min-height:132px;
  padding:19px 20px;
}
.info-section .info-grid article>span{font-size:21px}
.info-section .info-grid h3{
  margin:10px 0 5px;
  font-size:18px;
}
.info-section .info-grid p{
  font-size:12px;
  line-height:1.5;
}
@media(min-width:841px) and (max-width:1000px){
  .info-section{
    grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr);
    gap:30px;
  }
}
@media(max-width:840px){
  .info-section{
    grid-template-columns:1fr;
    align-items:start;
    gap:28px;
    padding:42px 34px;
  }
  .info-section .story{max-width:560px}
}
@media(max-width:720px){
  .info-section{
    gap:25px;
    padding:32px 22px 34px;
    border-radius:22px;
  }
  .info-section .story h2{font-size:38px;margin-block:10px 14px}
  .info-section .story p{font-size:13px;margin-bottom:16px}
  .info-section .info-grid{gap:10px}
  .info-section .info-grid article{min-height:auto;padding:17px 18px}
}

/* Movimiento sutil y de una sola ejecución al entrar en pantalla */
.reveal{
  opacity:0;
  transform:translate3d(0,18px,0);
  transition:opacity .52s ease,transform .52s cubic-bezier(.22,.75,.28,1);
  will-change:opacity,transform;
}
.reveal.visible{
  opacity:1;
  transform:translate3d(0,0,0);
}
.product-card,.info-grid article{
  transition:opacity .48s ease,transform .48s cubic-bezier(.22,.75,.28,1),box-shadow .25s ease;
  will-change:opacity,transform;
}
.reveal-image img,.product-card .product-img img{
  transform:scale(1.025);
  transition:transform .75s cubic-bezier(.22,.75,.28,1);
}
.reveal-image.visible img,.product-card.visible .product-img img{transform:scale(1)}
.product-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.product-card:hover .product-img img{transform:scale(1.045)}
.info-grid article:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(28,19,12,.09)}
.btn,.product-foot button,.filters button,.cart-button,.whatsapp-order{
  transition:transform .2s ease,background-color .2s ease,color .2s ease,box-shadow .2s ease;
}
.btn:hover,.product-foot button:hover,.whatsapp-order:hover{transform:translateY(-2px)}
.cart-bump{animation:cartBump .38s cubic-bezier(.22,.75,.28,1)}
@keyframes cartBump{
  0%,100%{transform:scale(1)}
  45%{transform:scale(1.12) rotate(-3deg)}
}
@media(hover:none){
  .product-card:hover,.info-grid article:hover,.btn:hover,.product-foot button:hover,.whatsapp-order:hover{transform:none}
  .product-card:hover .product-img img{transform:scale(1)}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .reveal,.product-card,.info-grid article{opacity:1!important;transform:none!important}
  .reveal-image img,.product-card .product-img img{transform:none!important}
}

/* Estructura vertical: el footer cierra el flujo sin área desplazable posterior. */
html,body{min-height:100%;padding:0}
body{min-height:100svh;display:flex;flex-direction:column}
main{flex:1 0 auto}
footer{flex:0 0 auto;margin:0;transform:none}
footer>*{transform:none}

.whatsapp-float svg{width:29px;height:29px;display:block}
.footer-whatsapp{display:inline-flex;align-items:center;gap:5px}
.footer-whatsapp svg{width:14px;height:14px;color:#25d366}
.whatsapp-order{display:flex;align-items:center;justify-content:center;gap:9px}
.whatsapp-order svg{width:21px;height:21px;flex:0 0 auto}
.whatsapp-float:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 12px 28px rgba(37,211,102,.35)}
.whatsapp-float:focus-visible,.whatsapp-order:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
@media(max-width:720px){.whatsapp-float{right:16px;bottom:16px}.whatsapp-float svg{width:26px;height:26px}}
@media(prefers-reduced-motion:reduce){.whatsapp-float:hover{transform:none}}
