/* global React, Icon, fmtMXN, ProductArt, Stars */
// Shell: header, footer, mini-cart drawer, quick-view modal, toast stack, autocomplete

// Body-scroll lock with reference counting so nested overlays (drawer + modal)
// don't corrupt each other's saved state.
const __scrollLock = (() => {
  let count = 0;
  let savedY = 0;
  let prev = {};
  return {
    acquire() {
      if (count === 0) {
        savedY = window.scrollY;
        prev = {
          position: document.body.style.position,
          top: document.body.style.top,
          width: document.body.style.width,
          overflow: document.body.style.overflow,
          htmlOverflow: document.documentElement.style.overflow,
        };
        document.body.style.position = 'fixed';
        document.body.style.top = `-${savedY}px`;
        document.body.style.width = '100%';
        document.body.style.overflow = 'hidden';
        document.documentElement.style.overflow = 'hidden';
      }
      count++;
    },
    release() {
      count = Math.max(0, count - 1);
      if (count === 0) {
        document.body.style.position = prev.position || '';
        document.body.style.top = prev.top || '';
        document.body.style.width = prev.width || '';
        document.body.style.overflow = prev.overflow || '';
        document.documentElement.style.overflow = prev.htmlOverflow || '';
        window.scrollTo(0, savedY);
      }
    },
    forceReset() {
      // Failsafe — restore if anything got stuck.
      count = 0;
      document.body.style.position = '';
      document.body.style.top = '';
      document.body.style.width = '';
      document.body.style.overflow = '';
      document.documentElement.style.overflow = '';
    },
  };
})();
if (typeof window !== 'undefined') { window.__scrollLockReset = __scrollLock.forceReset; }

function useScrollLock(locked) {
  React.useEffect(() => {
    if (!locked) return;
    __scrollLock.acquire();
    return () => __scrollLock.release();
  }, [locked]);
}

function Header({ route, navigate, cartCount, favCount, user, openCart, openSearch, search, setSearch, suggestions, onSuggest, dark, openLogin, onLogout }) {
  const cats = window.BK_DATA.CATEGORIES;
  const [mobileOpen, setMobileOpen] = React.useState(false);
  const [mobileSearchOpen, setMobileSearchOpen] = React.useState(false);
  React.useEffect(() => { setMobileOpen(false); setMobileSearchOpen(false); }, [route.name]);
  useScrollLock(mobileOpen);
  const navItems = [
    { id:'home', label:'Inicio' },
    { id:'shop', label:'Tienda' },
    { id:'blog', label:'Blog' },
    { id:'about', label:'Nosotros' },
    { id:'contact', label:'Contacto' },
  ];
  return (
    <>
      <div className="announce">
        <div className="announce-track">
          {[1, 2].map((k) =>
          <React.Fragment key={k}>
              <span><span className="dot">●</span> Envío gratis en pedidos +$2,000 MXN</span>
              <span><span className="dot">●</span> 12 MSI con tarjetas seleccionadas</span>
              <span><span className="dot">●</span> Garantía oficial · Devolución 30 días</span>
              <span><span className="dot">●</span> 6 sucursales en México</span>
              <span><span className="dot">●</span> Atención técnica · WhatsApp 24/7</span>
            </React.Fragment>
          )}
        </div>
      </div>

      <header className="header">
        <div className="wrap">
          <div className="header-inner">
            <div className="header-left">
              <button className="icon-btn hamburger mobile-only" onClick={()=>setMobileOpen(true)} aria-label="Abrir menú">
                <svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor"><rect x="1" y="3" width="18" height="2"/><rect x="1" y="9" width="18" height="2"/><rect x="1" y="15" width="18" height="2"/></svg>
              </button>
              <div className="header-nav-desktop">
                {navItems.map(it => (
                  <a key={it.id} className={`nav-link ${route.name === it.id ? 'active' : ''}`} onClick={() => navigate(it.id)}>{it.label}</a>
                ))}
              </div>
            </div>

            <a className="header-logo" onClick={() => navigate('home')} style={{ cursor: 'pointer' }}>
              <img src="assets/logo-full.png" alt="BK MOTO · Helmets and Parts" data-comment-anchor="071ad8015d-img-34-15" />
            </a>

            <div className="header-right">
              <div style={{ position: 'relative' }} className="header-search-wrap">
                <div className="search-input">
                  <span style={{ color: 'var(--text-muted)' }}>{Icon.search()}</span>
                  <input
                    placeholder="Cascos, llantas, marcas…"
                    value={search}
                    onChange={(e) => setSearch(e.target.value)}
                    onKeyDown={(e) => {if (e.key === 'Enter' && search.trim()) {navigate('search', { q: search });}}} />
                  
                </div>
                {search && suggestions.length > 0 &&
                <div className="autocomplete">
                    {suggestions.slice(0, 6).map((p) =>
                  <div key={p.id} className="ac-item" onClick={() => onSuggest(p)}>
                        <div className="ac-thumb"><ProductArt product={p} dark={dark} /></div>
                        <div>
                          <div className="ac-brand">{p.brand}</div>
                          <div className="ac-name">{p.name}</div>
                        </div>
                        <div className="ac-price">{fmtMXN(p.price)}</div>
                      </div>
                  )}
                    <div style={{ padding: '10px 14px', borderTop: '1px solid var(--line)' }}>
                      <a className="mono" style={{ cursor: 'pointer', color: 'var(--blood)' }} onClick={() => navigate('search', { q: search })}>
                        Ver todos los resultados para "{search}" →
                      </a>
                    </div>
                  </div>
                }
              </div>

              <button className="icon-btn mobile-only" onClick={()=>setMobileSearchOpen(s=>!s)} title="Buscar">
                {Icon.search()}
              </button>
              <button className="icon-btn hide-on-mobile" onClick={user ? () => navigate('account') : openLogin} title={user ? user.name : 'Iniciar sesión'}>
                {Icon.user()}
              </button>
              <button className="icon-btn hide-on-mobile" onClick={() => navigate('wishlist')} title="Wishlist">
                {Icon.heart()}
                {favCount > 0 && <span className="badge">{favCount}</span>}
              </button>
              <button id="header-cart-btn" className="icon-btn" onClick={openCart} title="Carrito">
                {Icon.cart()}
                {cartCount > 0 && <span className="badge">{cartCount}</span>}
              </button>
            </div>
          </div>

          {mobileSearchOpen && (
            <div className="mobile-search">
              <div className="search-input">
                <span style={{ color: 'var(--text-muted)' }}>{Icon.search()}</span>
                <input autoFocus
                  placeholder="Cascos, llantas, marcas…"
                  value={search}
                  onChange={(e) => setSearch(e.target.value)}
                  onKeyDown={(e) => {if (e.key === 'Enter' && search.trim()) { navigate('search', { q: search }); setMobileSearchOpen(false); }}} />
              </div>
            </div>
          )}
        </div>

        <div className="catstrip">
          <div className="wrap">
            <div className="catstrip-inner">
              <a className="hot sale" onClick={() => navigate('shop', { sale: 1 })}>
                <span className="dot"></span> OFERTAS <span className="kbd">−35%</span>
              </a>
              <a className="hot new" onClick={() => navigate('shop', { sort: 'new' })}>
                NUEVO <span className="kbd">2026</span>
              </a>
              <span className="catstrip-spacer"></span>
              <a className="catstrip-quiet" onClick={() => navigate('shop')}>Ver toda la tienda →</a>
            </div>
          </div>
        </div>
      </header>

      <div className={`mobile-drawer-scrim ${mobileOpen?'open':''}`} onClick={()=>setMobileOpen(false)}/>
      <aside className={`mobile-drawer ${mobileOpen?'open':''}`}>
        <div className="mobile-drawer-head">
          <img src="assets/logo-full.png" alt="BK MOTO" style={{height:36, width:'auto'}}/>
          <button className="icon-btn" onClick={()=>setMobileOpen(false)} aria-label="Cerrar">
            <svg width="18" height="18" viewBox="0 0 18 18" stroke="currentColor" strokeWidth="2" fill="none"><line x1="2" y1="2" x2="16" y2="16"/><line x1="16" y1="2" x2="2" y2="16"/></svg>
          </button>
        </div>
        <nav className="mobile-drawer-nav">
          {navItems.map(it => (
            <a key={it.id} className={route.name===it.id ? 'on' : ''} onClick={()=>navigate(it.id)}>
              <span>{it.label}</span>
              <span className="arr">→</span>
            </a>
          ))}
          <div className="mobile-drawer-divider"/>
          <a onClick={()=>navigate('wishlist')}><span>Wishlist {favCount>0 && <span className="mono" style={{color:'var(--blood)'}}>({favCount})</span>}</span><span className="arr">→</span></a>
          <a onClick={user ? ()=>navigate('account') : ()=>{ setMobileOpen(false); openLogin(); }}><span>{user ? `Cuenta · ${user.name.split(' ')[0]}` : 'Iniciar sesión'}</span><span className="arr">→</span></a>
          {user && onLogout && (
            <a onClick={onLogout} style={{color:'var(--blood)'}}><span>Cerrar sesión</span><span className="arr">→</span></a>
          )}
          <div className="mobile-drawer-divider"/>
          <a onClick={()=>navigate('shop', {sale:1})} style={{color:'var(--blood)'}}><span>● Ofertas activas</span><span className="arr">→</span></a>
          <a onClick={()=>navigate('shop', {sort:'new'})}><span>Lo nuevo</span><span className="arr">→</span></a>
          <div className="mobile-drawer-divider"/>
          <a onClick={()=>navigate('admin')} style={{color:'var(--blood)'}}><span>● Panel admin</span><span className="arr">→</span></a>
        </nav>
        <div className="mobile-drawer-foot">
          <div className="eyebrow">Atención técnica</div>
          <div className="mono" style={{fontSize:13, marginTop:6}}>WhatsApp +52 55 1234 0023</div>
        </div>
      </aside>
    </>);

}

function Footer({ navigate }) {
  return (
    <footer className="footer">
      <div className="wrap footer-top">
        <div className="footer-brand">
          <img src="assets/logo-full.png" alt="BK MOTO · Helmets and Parts" className="footer-logo" />
          <p>Refacciones, equipo y movilidad para quienes viven sobre dos ruedas. Calle, pista y montaña — desde 2014.</p>
          <div className="row" style={{ marginTop: 20, gap: 14, color: '#ffffff90' }}>
            <a>{Icon.ig()}</a><a>{Icon.yt()}</a><a>{Icon.fb()}</a>
          </div>
        </div>
        <div>
          <h4>Tienda</h4>
          <ul>
            {window.BK_DATA.CATEGORIES.slice(0, 6).map((c) =>
            <li key={c.slug}><a onClick={() => navigate('shop', { cat: c.slug })} style={{ cursor: 'pointer' }}>{c.name}</a></li>
            )}
            <li><a onClick={() => navigate('shop', { sale: 1 })} style={{ cursor: 'pointer' }}>Ofertas</a></li>
          </ul>
        </div>
        <div>
          <h4>Cuenta</h4>
          <ul>
            <li><a onClick={() => navigate('account')} style={{ cursor: 'pointer' }}>Mi cuenta</a></li>
            <li><a onClick={() => navigate('account', { tab: 'orders' })} style={{ cursor: 'pointer' }}>Mis pedidos</a></li>
            <li><a onClick={() => navigate('wishlist')} style={{ cursor: 'pointer' }}>Wishlist</a></li>
            <li><a onClick={() => navigate('cart')} style={{ cursor: 'pointer' }}>Carrito</a></li>
          </ul>
        </div>
        <div>
          <h4>Ayuda</h4>
          <ul>
            <li><a>Envíos</a></li>
            <li><a>Devoluciones</a></li>
            <li><a>Guía de tallas</a></li>
            <li><a>Garantías</a></li>
            <li><a>Preguntas frecuentes</a></li>
          </ul>
        </div>
        <div>
          <h4>Compañía</h4>
          <ul>
            <li><a onClick={() => navigate('about')} style={{ cursor: 'pointer' }}>Sobre BK Moto</a></li>
            <li><a onClick={() => navigate('blog')} style={{ cursor: 'pointer' }}>Blog</a></li>
            <li><a onClick={() => navigate('contact')} style={{ cursor: 'pointer' }}>Sucursales</a></li>
            <li><a onClick={() => navigate('admin')} style={{ cursor: 'pointer', color:'var(--blood)' }}>Panel admin →</a></li>
            <li><a>Términos</a></li>
            <li><a>Privacidad</a></li>
          </ul>
        </div>
      </div>
      <div className="wrap footer-bottom">
        <div>© 2026 BK MOTO · HELMETS AND PARTS</div>
        <div>Hecho en México · CDMX → GDL → MTY</div>
      </div>
    </footer>);

}

// ============ Mini cart drawer ============
function MiniCart({ open, onClose, items, onChangeQty, onRemove, navigate, dark }) {
  useScrollLock(open);
  const subtotal = items.reduce((s, it) => s + it.price * it.qty, 0);
  const shipping = subtotal > 2000 || subtotal === 0 ? 0 : 199;
  const toFreeShipping = Math.max(0, 2000 - subtotal);
  return (
    <>
      <div className={`drawer-scrim ${open ? 'open' : ''}`} onClick={onClose} />
      <aside className={`drawer ${open ? 'open' : ''}`} aria-hidden={!open}>
        <div className="drawer-head">
          <h3>Tu carrito <span style={{ fontFamily: 'var(--f-mono)', fontSize: 11, color: 'var(--text-muted)', letterSpacing: '0.16em' }}>{items.length} ITEM{items.length !== 1 ? 'S' : ''}</span></h3>
          <button className="icon-btn" onClick={onClose}>{Icon.close()}</button>
        </div>
        <div className="drawer-body">
          {subtotal > 0 && toFreeShipping > 0 &&
          <div style={{ padding: '12px', background: 'var(--bg-2)', marginBottom: 16, borderLeft: '3px solid var(--blood)' }}>
              <div className="mono" style={{ fontSize: 11 }}>Te faltan <strong style={{ color: 'var(--blood)' }}>{fmtMXN(toFreeShipping)}</strong> para envío gratis</div>
              <div style={{ height: 4, background: 'var(--bg)', marginTop: 8, position: 'relative' }}>
                <div style={{ height: '100%', width: `${Math.min(100, subtotal / 2000 * 100)}%`, background: 'var(--blood)' }} />
              </div>
            </div>
          }
          {subtotal === 0 &&
          <div style={{ textAlign: 'center', padding: '40px 20px' }}>
              <div style={{ fontSize: 64, opacity: .3 }}>{Icon.cart({ width: 64, height: 64 })}</div>
              <div className="mono" style={{ marginTop: 16, color: 'var(--text-muted)' }}>Tu carrito está vacío</div>
              <button className="btn ghost mt-24" onClick={() => {onClose();navigate('shop');}}>Explorar la tienda</button>
            </div>
          }
          {items.map((it) =>
          <div key={it.cartId} className="line">
              <div className="line-thumb"><ProductArt product={it} dark={dark} /></div>
              <div className="line-info">
                <div className="brand">{it.brand}</div>
                <div className="name">{it.name}</div>
                {(it.size || it.color) && <div className="var">{[it.size && `Talla ${it.size}`, it.colorName].filter(Boolean).join(' · ')}</div>}
                <div className="row" style={{ marginTop: 10, gap: 14 }}>
                  <div className="qty">
                    <button onClick={() => onChangeQty(it.cartId, it.qty - 1)}>−</button>
                    <span className="val">{it.qty}</span>
                    <button onClick={() => onChangeQty(it.cartId, it.qty + 1)}>+</button>
                  </div>
                  <a className="mono" style={{ cursor: 'pointer', color: 'var(--text-muted)', textDecoration: 'underline' }} onClick={() => onRemove(it.cartId)}>Quitar</a>
                </div>
              </div>
              <div className="line-right">
                <div className="price">{fmtMXN(it.price * it.qty)}</div>
              </div>
            </div>
          )}
        </div>
        {items.length > 0 &&
        <div className="drawer-foot">
            <div className="between">
              <span className="mono">Subtotal</span>
              <span className="display" style={{ fontSize: 28 }}>{fmtMXN(subtotal)}</span>
            </div>
            <div className="between">
              <span className="mono" style={{ color: 'var(--text-muted)' }}>Envío</span>
              <span className="mono">{shipping === 0 ? 'GRATIS' : fmtMXN(shipping)}</span>
            </div>
            <button className="btn primary block lg" onClick={() => {onClose();navigate('checkout');}}>Finalizar compra →</button>
            <button className="btn ghost block sm" onClick={() => {onClose();navigate('cart');}}>Ver carrito completo</button>
          </div>
        }
      </aside>
    </>);

}

// ============ Login modal (when accessed from header icon) ============
function LoginModal({ open, onClose, onLogin }) {
  useScrollLock(open);
  const [tab, setTab] = useState('login');
  const [email, setEmail] = useState('');
  const [pass, setPass] = useState('');
  const [name, setName] = useState('');
  const [err, setErr] = useState({});
  const [showPass, setShowPass] = useState(false);
  const [loading, setLoading] = useState(false);

  useEffect(() => {if (!open) {setErr({});setEmail('');setPass('');setName('');}}, [open]);

  const submit = (e) => {
    e.preventDefault();
    const errs = {};
    if (!email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) errs.email = 'Email no válido';
    if (pass.length < 6) errs.pass = 'Mínimo 6 caracteres';
    if (tab === 'register' && name.length < 2) errs.name = 'Ingresa tu nombre';
    setErr(errs);
    if (Object.keys(errs).length) return;
    setLoading(true);
    setTimeout(() => {
      setLoading(false);
      onLogin({ name: tab === 'register' ? name : email.split('@')[0].replace(/[._]/g, ' '), email });
    }, 700);
  };

  return (
    <div className={`modal-scrim ${open ? 'open' : ''}`} onClick={(e) => e.target === e.currentTarget && onClose()}>
      <div className="modal" style={{ maxWidth: 480 }}>
        <button className="modal-close" onClick={onClose}>{Icon.close()}</button>
        <div style={{ padding: '40px 36px' }}>
          <div className="eyebrow">{tab === 'login' ? 'Acceso a tu cuenta' : 'Nueva cuenta'}</div>
          <h2 className="display" style={{ fontSize: 36, margin: '8px 0 24px' }}>{tab === 'login' ? 'Bienvenido de vuelta' : 'Únete al garage'}</h2>
          <div className="tabs" style={{ marginBottom: 24 }}>
            <a className={`tab ${tab === 'login' ? 'on' : ''}`} onClick={() => setTab('login')}>Iniciar sesión</a>
            <a className={`tab ${tab === 'register' ? 'on' : ''}`} onClick={() => setTab('register')}>Crear cuenta</a>
          </div>
          <form onSubmit={submit} style={{ display: 'grid', gap: 16 }}>
            {tab === 'register' &&
            <div>
                <label className="field-label">Nombre completo</label>
                <input className={`field ${err.name ? 'error' : ''}`} value={name} onChange={(e) => setName(e.target.value)} placeholder="Tu nombre" />
                {err.name && <span className="field-err">{err.name}</span>}
              </div>
            }
            <div>
              <label className="field-label">Email</label>
              <input className={`field ${err.email ? 'error' : ''}`} type="email" value={email} onChange={(e) => setEmail(e.target.value)} placeholder="tu@email.com" />
              {err.email && <span className="field-err">{err.email}</span>}
            </div>
            <div>
              <label className="field-label">Contraseña</label>
              <div style={{ position: 'relative' }}>
                <input className={`field ${err.pass ? 'error' : ''}`} type={showPass ? 'text' : 'password'} value={pass} onChange={(e) => setPass(e.target.value)} placeholder="Mínimo 6 caracteres" />
                <button type="button" onClick={() => setShowPass((s) => !s)} style={{ position: 'absolute', right: 14, top: '50%', transform: 'translateY(-50%)', color: 'var(--text-muted)' }}>{Icon.eye()}</button>
              </div>
              {err.pass && <span className="field-err">{err.pass}</span>}
            </div>
            {tab === 'login' &&
            <div className="between">
                <label className="row" style={{ gap: 8, fontSize: 13 }}><input type="checkbox" /> Mantener sesión</label>
                <a className="mono" style={{ fontSize: 11, color: 'var(--blood)', cursor: 'pointer' }}>¿Olvidaste tu contraseña?</a>
              </div>
            }
            <button type="submit" className="btn primary block lg" disabled={loading}>
              {loading ? 'Procesando…' : tab === 'login' ? 'Entrar →' : 'Crear cuenta →'}
            </button>
            <div style={{ textAlign: 'center', color: 'var(--text-muted)', fontSize: 12, margin: '8px 0' }} className="mono">o continúa con</div>
            <div className="grid-2">
              <button type="button" className="btn ghost">Google</button>
              <button type="button" className="btn ghost">Apple</button>
            </div>
          </form>
        </div>
      </div>
    </div>);

}

// ============ Quick-view modal ============
function QuickView({ product, onClose, onAddToCart, onToggleFav, isFav, dark, navigate }) {
  useScrollLock(!!product);
  const [size, setSize] = useState(product?.sizes?.[1] || product?.sizes?.[0]);
  const [color, setColor] = useState(product?.colors?.[0]);
  if (!product) return null;
  return (
    <div className="modal-scrim open" onClick={(e) => e.target === e.currentTarget && onClose()}>
      <div className="modal">
        <button className="modal-close" onClick={onClose}>{Icon.close()}</button>
        <div className="quickview-grid">
          <div className="quickview-media">
            <div style={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
              <ProductArt product={product} dark={dark} />
            </div>
          </div>
          <div style={{ padding: '36px', display: 'flex', flexDirection: 'column', gap: 14 }}>
            <div className="eyebrow">{product.brand}</div>
            <h2 className="display" style={{ fontSize: 32, margin: 0 }}>{product.name}</h2>
            <div className="row" style={{ gap: 14 }}>
              <Stars value={product.rating} reviews={product.reviews} />
            </div>
            <div className="pdp-price" style={{ padding: '4px 0' }}>
              <span className="now" style={{ fontSize: 36 }}>{fmtMXN(product.price)}</span>
              {product.oldPrice && <span className="was">{fmtMXN(product.oldPrice)}</span>}
              {product.oldPrice && <span className="off">−{Math.round((1 - product.price / product.oldPrice) * 100)}%</span>}
            </div>
            <div className="mono" style={{ color: 'var(--text-muted)', fontSize: 11 }}>{product.tags.join(' · ')}</div>
            {product.colors && product.colors.length > 0 &&
            <div>
                <div className="field-label">Color</div>
                <div className="swatch-row">
                  {product.colors.map((c) =>
                <button key={c} className={`swatch ${color === c ? 'on' : ''}`} style={{ background: c }} onClick={() => setColor(c)} />
                )}
                </div>
              </div>
            }
            {product.sizes && product.sizes.length > 0 && product.sizes[0] !== 'Unica' && product.sizes[0] !== 'Universal' && product.sizes[0] !== 'Set' &&
            <div>
                <div className="field-label">Talla</div>
                <div className="chips">
                  {product.sizes.map((s) =>
                <button key={s} className={`chip ${size === s ? 'on' : ''}`} onClick={() => setSize(s)}>{s}</button>
                )}
                </div>
              </div>
            }
            <div className="row" style={{ gap: 10, marginTop: 'auto' }}>
              <button className="btn primary block lg" onClick={(e) => {onAddToCart(product, e.currentTarget, { size, color });onClose();}}>Agregar al carrito</button>
              <button className={`pcard-fav ${isFav ? 'on' : ''}`} style={{ position: 'static', width: 48, height: 48 }} onClick={() => onToggleFav(product.id)}>
                {isFav ? Icon.heartFilled() : Icon.heart()}
              </button>
            </div>
            <a className="mono" style={{ textAlign: 'center', cursor: 'pointer', textDecoration: 'underline', fontSize: 11, color: 'var(--text-muted)' }} onClick={() => {onClose();navigate('product', { id: product.id });}}>
              Ver detalle completo del producto →
            </a>
          </div>
        </div>
      </div>
    </div>);

}

// Toasts
function ToastStack({ toasts }) {
  return (
    <div className="toast-stack">
      {toasts.map((t) =>
      <div key={t.id} className="toast">
          {t.icon || Icon.check()} <span>{t.msg}</span>
        </div>
      )}
    </div>);

}

// Trust badges row (used on home + footer-of-page)
function TrustRow() {
  return (
    <div className="grid-3" style={{ padding: '24px 0', borderTop: '1px solid var(--line)', borderBottom: '1px solid var(--line)' }}>
      <div className="row" style={{ gap: 14 }}>
        <span style={{ color: 'var(--blood)' }}>{Icon.truck()}</span>
        <div><div className="mono" style={{ fontSize: 11 }}>Envío gratis +$2,000</div><div style={{ fontSize: 12, color: 'var(--text-muted)' }}>A todo México en 2–4 días</div></div>
      </div>
      <div className="row" style={{ gap: 14 }}>
        <span style={{ color: 'var(--blood)' }}>{Icon.shield()}</span>
        <div><div className="mono" style={{ fontSize: 11 }}>Garantía oficial</div><div style={{ fontSize: 12, color: 'var(--text-muted)' }}>2 años en todos los productos</div></div>
      </div>
      <div className="row" style={{ gap: 14 }}>
        <span style={{ color: 'var(--blood)' }}>{Icon.bolt()}</span>
        <div><div className="mono" style={{ fontSize: 11 }}>12 MSI sin tarjeta</div><div style={{ fontSize: 12, color: 'var(--text-muted)' }}>Con Mercado Pago y Kueski</div></div>
      </div>
    </div>);

}

Object.assign(window, { Header, Footer, MiniCart, LoginModal, QuickView, ToastStack, TrustRow });