{"id":12,"date":"2026-04-17T21:20:05","date_gmt":"2026-04-17T21:20:05","guid":{"rendered":"https:\/\/newsfinance.online\/?page_id=12"},"modified":"2026-04-17T21:32:47","modified_gmt":"2026-04-17T21:32:47","slug":"elementor-12","status":"publish","type":"page","link":"https:\/\/newsfinance.online\/?page_id=12","title":{"rendered":"Elementor #12"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12\" class=\"elementor elementor-12\">\n\t\t\t\t<div class=\"elementor-element elementor-element-008a727 e-con-full e-flex e-con e-parent\" data-id=\"008a727\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-238e870 elementor-widget elementor-widget-html\" data-id=\"238e870\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n  <title>Tienda Fr\u00e1vega - Demo<\/title>\r\n  <style>\r\n    :root {\r\n      --bg: #f4f4f6;\r\n      --surface: #ffffff;\r\n      --text: #19191d;\r\n      --muted: #7b7b84;\r\n      --line: #e7e7eb;\r\n      --line-2: #f1f1f4;\r\n      --purple: #8b2cff;\r\n      --purple-dark: #6e1fe8;\r\n      --yellow: #f4c320;\r\n      --dark-btn: #232b37;\r\n      --success: #1d8f55;\r\n      --danger: #dd4c4c;\r\n      --shadow: 0 10px 26px rgba(18, 18, 22, 0.06);\r\n      --font: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n      --product-max: 520px;\r\n      --cart-max: 860px;\r\n    }\r\n\r\n    * { box-sizing: border-box; }\r\n    html, body { margin: 0; padding: 0; }\r\n    body {\r\n      font-family: var(--font);\r\n      background: var(--bg);\r\n      color: var(--text);\r\n      -webkit-font-smoothing: antialiased;\r\n      text-rendering: optimizeLegibility;\r\n      overflow-x: hidden;\r\n    }\r\n\r\n    img { max-width: 100%; display: block; }\r\n    button, input, textarea, select { font: inherit; }\r\n    a { color: inherit; text-decoration: none; }\r\n\r\n    .page {\r\n      width: 100%;\r\n      min-height: 100vh;\r\n      overflow-x: hidden;\r\n    }\r\n\r\n    .shell {\r\n      width: min(100%, 920px);\r\n      margin: 0 auto;\r\n      min-height: 100vh;\r\n      background: var(--surface);\r\n      position: relative;\r\n    }\r\n\r\n    .topbar {\r\n      position: sticky;\r\n      top: 0;\r\n      z-index: 40;\r\n      background: rgba(255,255,255,0.97);\r\n      backdrop-filter: blur(10px);\r\n      border-bottom: 1px solid var(--line);\r\n    }\r\n\r\n    .topbar-inner {\r\n      height: 56px;\r\n      padding: 0 14px;\r\n      display: grid;\r\n      grid-template-columns: 40px 1fr 88px;\r\n      gap: 10px;\r\n      align-items: center;\r\n    }\r\n\r\n    .icon-btn {\r\n      width: 40px;\r\n      height: 40px;\r\n      border-radius: 999px;\r\n      border: 1px solid var(--line);\r\n      background: #fff;\r\n      color: #2a2a31;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      padding: 0;\r\n      cursor: pointer;\r\n      position: relative;\r\n      transition: transform .18s ease, box-shadow .18s ease;\r\n    }\r\n\r\n    .icon-btn:active {\r\n      transform: scale(.985);\r\n    }\r\n\r\n    .brand {\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n    }\r\n\r\n    .brand-logo {\r\n      width: 132px;\r\n      height: auto;\r\n      object-fit: contain;\r\n    }\r\n\r\n    .icon-group {\r\n      display: flex;\r\n      justify-content: flex-end;\r\n      gap: 8px;\r\n    }\r\n\r\n    .cart-count {\r\n      position: absolute;\r\n      top: -2px;\r\n      right: -2px;\r\n      min-width: 18px;\r\n      height: 18px;\r\n      padding: 0 4px;\r\n      border-radius: 999px;\r\n      background: var(--purple);\r\n      color: #fff;\r\n      font-size: 0.65rem;\r\n      font-weight: 800;\r\n      line-height: 18px;\r\n      text-align: center;\r\n      display: none;\r\n      box-shadow: 0 4px 10px rgba(139,44,255,0.25);\r\n    }\r\n\r\n    .cart-count.is-visible {\r\n      display: inline-block;\r\n    }\r\n\r\n    .content {\r\n      padding: 0 12px 34px;\r\n    }\r\n\r\n    .view { display: none !important; }\r\n    .view.home-view.is-active { display: grid !important; gap: 18px; }\r\n    .view.product-view.is-active { display: block !important; }\r\n    .view.cart-view.is-active { display: block !important; }\r\n\r\n    .home-hero {\r\n      display: grid;\r\n      gap: 12px;\r\n      margin: 0 -12px 0;\r\n    }\r\n\r\n    .hero-banner {\r\n      position: relative;\r\n      min-height: 152px;\r\n      aspect-ratio: 2.56 \/ 1;\r\n      border: 0;\r\n      overflow: hidden;\r\n      background: #f6f6f8;\r\n    }\r\n\r\n    .hero-slides {\r\n      position: absolute;\r\n      inset: 0;\r\n    }\r\n\r\n    .hero-slide {\r\n      position: absolute;\r\n      inset: 0;\r\n      opacity: 0;\r\n      visibility: hidden;\r\n      transition: opacity .28s ease, visibility .28s ease;\r\n      background: #f6f6f8;\r\n    }\r\n\r\n    .hero-slide.is-active {\r\n      opacity: 1;\r\n      visibility: visible;\r\n    }\r\n\r\n    .hero-slide img {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: cover;\r\n      object-position: center center;\r\n      background: #f6f6f8;\r\n    }\r\n\r\n    .hero-dots {\r\n      position: absolute;\r\n      left: 50%;\r\n      bottom: 8px;\r\n      transform: translateX(-50%);\r\n      display: flex;\r\n      gap: 8px;\r\n      z-index: 3;\r\n      pointer-events: none;\r\n    }\r\n\r\n    .hero-dots span {\r\n      width: 10px;\r\n      height: 10px;\r\n      border-radius: 999px;\r\n      background: rgba(255,255,255,0.84);\r\n      box-shadow: 0 1px 4px rgba(0,0,0,0.08);\r\n    }\r\n\r\n    .hero-dots span.active {\r\n      background: #ffffff;\r\n    }\r\n\r\n    .home-shortcuts {\r\n      margin: 0 12px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 16px;\r\n      background: #fff;\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .shortcut-item {\r\n      display: grid;\r\n      grid-template-columns: 38px 1fr;\r\n      gap: 10px;\r\n      align-items: center;\r\n      padding: 14px 12px;\r\n      min-height: 76px;\r\n    }\r\n\r\n    .shortcut-item + .shortcut-item {\r\n      border-left: 1px solid var(--line);\r\n    }\r\n\r\n    .shortcut-icon {\r\n      width: 34px;\r\n      height: 34px;\r\n      border-radius: 11px;\r\n      background: rgba(139,44,255,0.08);\r\n      color: var(--purple);\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    .shortcut-copy strong {\r\n      display: block;\r\n      font-size: 0.76rem;\r\n      line-height: 1.15;\r\n      font-weight: 700;\r\n      color: #333842;\r\n      letter-spacing: -0.02em;\r\n    }\r\n\r\n    .shortcut-copy span {\r\n      display: block;\r\n      font-size: 0.78rem;\r\n      line-height: 1.15;\r\n      font-weight: 600;\r\n      color: #4d62d3;\r\n      margin-top: 4px;\r\n      letter-spacing: -0.02em;\r\n    }\r\n\r\n    .home-catalog {\r\n      display: grid;\r\n      gap: 10px;\r\n    }\r\n\r\n    .home-section-title {\r\n      margin: 0;\r\n      font-size: 0.96rem;\r\n      line-height: 1.2;\r\n      font-weight: 800;\r\n      letter-spacing: -0.03em;\r\n      color: #16171b;\r\n    }\r\n\r\n    .home-products {\r\n      display: grid;\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      gap: 12px;\r\n    }\r\n\r\n    .home-card {\r\n      display: block;\r\n      border: 1px solid var(--line);\r\n      border-radius: 14px;\r\n      overflow: hidden;\r\n      background: #fff;\r\n      box-shadow: var(--shadow);\r\n      transition: transform .18s ease, box-shadow .18s ease;\r\n    }\r\n\r\n    .home-card:active {\r\n      transform: scale(.992);\r\n    }\r\n\r\n    .home-card-media {\r\n      aspect-ratio: 1 \/ 1;\r\n      background: #ffffff;\r\n      padding: 8px;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .home-card-media img {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: contain;\r\n      border: 1px solid var(--line);\r\n      border-radius: 12px;\r\n      background: #f7f7fb;\r\n    }\r\n\r\n    .home-card-body {\r\n      padding: 10px 10px 11px;\r\n      display: grid;\r\n      gap: 5px;\r\n    }\r\n\r\n    .home-card-title {\r\n      margin: 0;\r\n      font-size: 0.8rem;\r\n      line-height: 1.28;\r\n      font-weight: 700;\r\n      color: #202026;\r\n      letter-spacing: -0.02em;\r\n      min-height: 2.55em;\r\n    }\r\n\r\n    .home-card-rating {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 5px;\r\n      flex-wrap: wrap;\r\n      font-size: 0.72rem;\r\n      color: #666b76;\r\n    }\r\n\r\n    .home-card-stars {\r\n      color: var(--yellow);\r\n      letter-spacing: 0.04em;\r\n      font-size: 0.78rem;\r\n    }\r\n\r\n    .home-card-old {\r\n      font-size: 0.72rem;\r\n      color: #8d8d95;\r\n      text-decoration: line-through;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .home-card-price {\r\n      font-size: 0.82rem;\r\n      line-height: 1;\r\n      font-weight: 800;\r\n      color: #16171b;\r\n      letter-spacing: -0.03em;\r\n    }\r\n\r\n    .product-shell {\r\n      max-width: var(--product-max);\r\n      margin: 0 auto;\r\n    }\r\n\r\n    .product-top-nav {\r\n      margin: 14px auto 14px;\r\n      max-width: var(--product-max);\r\n      display: flex;\r\n      justify-content: space-between;\r\n      align-items: center;\r\n      gap: 12px;\r\n    }\r\n\r\n    .product-back-link {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      font-size: 0.76rem;\r\n      font-weight: 700;\r\n      color: #404756;\r\n      letter-spacing: -0.01em;\r\n    }\r\n\r\n    .gallery-wrap { margin-bottom: 14px; }\r\n    .gallery-main {\r\n      border: 1px solid var(--line);\r\n      border-radius: 18px;\r\n      overflow: hidden;\r\n      background: #fbfbfd;\r\n      box-shadow: inset 0 0 0 1px rgba(255,255,255,0.45);\r\n    }\r\n\r\n    .main-image-frame {\r\n      position: relative;\r\n      aspect-ratio: 1 \/ 1;\r\n      background: #fbfbfd;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .main-image {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: contain;\r\n      transition: opacity .24s ease, transform .24s ease;\r\n      opacity: 1;\r\n    }\r\n\r\n    .main-image.is-loading {\r\n      opacity: .16;\r\n      transform: scale(.986);\r\n    }\r\n\r\n    .zoom-note {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 8px;\r\n      padding: 12px 0 10px;\r\n      color: var(--muted);\r\n      font-size: 0.82rem;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .thumbs {\r\n      display: grid;\r\n      grid-template-columns: repeat(6, 1fr);\r\n      gap: 8px;\r\n    }\r\n\r\n    .thumb {\r\n      appearance: none;\r\n      padding: 0;\r\n      margin: 0;\r\n      border: 1px solid var(--line);\r\n      border-radius: 12px;\r\n      background: #fff;\r\n      overflow: hidden;\r\n      aspect-ratio: 1 \/ 1;\r\n      cursor: pointer;\r\n      transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;\r\n    }\r\n\r\n    .thumb img {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: cover;\r\n    }\r\n\r\n    .thumb.active {\r\n      border-color: var(--purple);\r\n      box-shadow: 0 0 0 1.5px var(--purple) inset;\r\n    }\r\n\r\n    .thumb:active { transform: scale(.985); }\r\n\r\n    .main-copy { display: grid; gap: 0; }\r\n\r\n    .product-title {\r\n      margin: 0 0 8px;\r\n      font-size: 1.03rem;\r\n      line-height: 1.18;\r\n      letter-spacing: -0.03em;\r\n      font-weight: 700;\r\n      color: #202026;\r\n    }\r\n\r\n    .rating-row {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 6px;\r\n      flex-wrap: wrap;\r\n      font-size: 0.84rem;\r\n      color: #555560;\r\n      margin-bottom: 12px;\r\n    }\r\n\r\n    .stars {\r\n      color: var(--yellow);\r\n      letter-spacing: 0.05em;\r\n      font-size: 0.82rem;\r\n    }\r\n\r\n    .stars.partial .dim { color: #d7dae2; }\r\n\r\n    .old-price {\r\n      font-size: 0.78rem;\r\n      color: #8d8d95;\r\n      text-decoration: line-through;\r\n      margin-bottom: 4px;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .price-line {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      flex-wrap: wrap;\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    .price-main {\r\n      font-size: 1.08rem;\r\n      line-height: 1;\r\n      font-weight: 800;\r\n      letter-spacing: -0.05em;\r\n      color: #141419;\r\n    }\r\n\r\n    .discount-pill {\r\n      padding: 4px 8px;\r\n      border-radius: 999px;\r\n      background: rgba(139,44,255,0.11);\r\n      color: var(--purple);\r\n      font-size: 0.64rem;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .buy-actions {\r\n      display: grid;\r\n      gap: 8px;\r\n      margin-bottom: 8px;\r\n    }\r\n\r\n    .buy-btn,\r\n    .ghost-btn {\r\n      width: 100%;\r\n      height: 42px;\r\n      border-radius: 8px;\r\n      font-size: 0.82rem;\r\n      font-weight: 700;\r\n      letter-spacing: 0.01em;\r\n      cursor: pointer;\r\n      transition: transform .18s ease, opacity .18s ease;\r\n    }\r\n\r\n    .buy-btn { border: 0; background: linear-gradient(180deg, #9c31ff 0%, #7b22f2 100%); color: #fff; }\r\n    .ghost-btn { border: 1px solid var(--line); background: #fff; color: #2e3542; }\r\n\r\n    .buy-btn:active,\r\n    .ghost-btn:active { transform: scale(.992); }\r\n\r\n    .pay-strip {\r\n      border: 1px solid #dddddf;\r\n      border-radius: 12px;\r\n      background: #fff;\r\n      padding: 10px 10px 12px;\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    .pay-strip strong {\r\n      display: block;\r\n      text-align: center;\r\n      font-size: 0.62rem;\r\n      line-height: 1.1;\r\n      letter-spacing: 0.08em;\r\n      color: #606069;\r\n      font-weight: 800;\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .card-icons {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 4px;\r\n      flex-wrap: nowrap;\r\n    }\r\n\r\n    .card-badge {\r\n      height: 26px;\r\n      border-radius: 4px;\r\n      border: 1px solid var(--line);\r\n      background: #fff;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      padding: 0 4px;\r\n      flex: 0 0 auto;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .card-badge img,\r\n    .card-badge svg {\r\n      display: block;\r\n      height: 11px;\r\n      width: auto;\r\n      max-width: 100%;\r\n      object-fit: contain;\r\n    }\r\n\r\n    .card-badge.mc { width: 44px; }\r\n    .card-badge.visa { width: 40px; }\r\n    .card-badge.amex { width: 40px; }\r\n    .card-badge.apple { width: 48px; }\r\n    .card-badge.gpay { width: 48px; }\r\n    .card-badge.discover { width: 56px; }\r\n\r\n    .support-card {\r\n      display: grid;\r\n      grid-template-columns: 60px 1fr;\r\n      gap: 12px;\r\n      align-items: center;\r\n      min-height: 92px;\r\n      border: 1px solid #dfe0e5;\r\n      border-radius: 16px;\r\n      background: #fff;\r\n      padding: 14px 16px;\r\n      margin-bottom: 12px;\r\n    }\r\n\r\n    .support-icon-wrap {\r\n      width: 46px;\r\n      height: 46px;\r\n      border-radius: 15px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      margin: 0 auto;\r\n      flex: 0 0 auto;\r\n      position: relative;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .support-icon-wrap.fill {\r\n      background: linear-gradient(180deg, #a33bff 0%, #7b22f2 100%);\r\n      color: #fff;\r\n    }\r\n\r\n    .support-icon-wrap.soft {\r\n      background: rgba(139,44,255,0.08);\r\n      color: var(--purple);\r\n    }\r\n\r\n    .support-copy {\r\n      min-width: 0;\r\n      display: grid;\r\n      gap: 3px;\r\n    }\r\n\r\n    .support-title {\r\n      font-size: 0.74rem;\r\n      line-height: 1.2;\r\n      font-weight: 700;\r\n      color: #202026;\r\n      letter-spacing: -0.01em;\r\n    }\r\n\r\n    .support-title .light {\r\n      color: #9797a0;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .support-highlight {\r\n      font-size: 0.72rem;\r\n      line-height: 1.22;\r\n      color: var(--purple);\r\n      font-weight: 700;\r\n      letter-spacing: -0.01em;\r\n    }\r\n\r\n    .support-text {\r\n      font-size: 0.71rem;\r\n      line-height: 1.38;\r\n      color: #7c7c85;\r\n      max-width: 235px;\r\n    }\r\n\r\n    .section-copy {\r\n      margin: 18px 0 20px;\r\n      display: grid;\r\n      gap: 18px;\r\n      color: #43434c;\r\n    }\r\n\r\n    .desc-section { display: grid; gap: 10px; }\r\n\r\n    .desc-head {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 10px;\r\n    }\r\n\r\n    .desc-icon {\r\n      width: 28px;\r\n      height: 28px;\r\n      border-radius: 9px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      flex: 0 0 auto;\r\n      background: rgba(139,44,255,0.08);\r\n      color: var(--purple);\r\n    }\r\n\r\n    .desc-icon.neutral {\r\n      background: #f4f4f7;\r\n      color: #565662;\r\n    }\r\n\r\n    .desc-title {\r\n      margin: 0;\r\n      font-size: 0.92rem;\r\n      line-height: 1.22;\r\n      letter-spacing: -0.02em;\r\n      font-weight: 700;\r\n      color: #202026;\r\n    }\r\n\r\n    .desc-text {\r\n      margin: 0;\r\n      font-size: 0.76rem;\r\n      line-height: 1.62;\r\n      color: #5c5c65;\r\n    }\r\n\r\n    .feature-list {\r\n      list-style: none;\r\n      margin: 0;\r\n      padding: 0;\r\n      display: grid;\r\n      gap: 9px;\r\n    }\r\n\r\n    .feature-item {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 10px;\r\n      font-size: 0.76rem;\r\n      line-height: 1.56;\r\n      color: #5a5a63;\r\n    }\r\n\r\n    .feature-mark {\r\n      width: 18px;\r\n      height: 18px;\r\n      border-radius: 999px;\r\n      background: #f3efff;\r\n      color: var(--purple);\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      flex: 0 0 auto;\r\n      margin-top: 1px;\r\n    }\r\n\r\n    .feature-mark.gold { background: #fff6da; color: #d89b00; }\r\n    .feature-mark.charcoal { background: #f1f2f5; color: #4d5560; }\r\n\r\n    .spec-list { display: grid; gap: 8px; }\r\n\r\n    .spec-row {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      padding: 0 0 8px;\r\n      border-bottom: 1px solid var(--line-2);\r\n      font-size: 0.75rem;\r\n      line-height: 1.4;\r\n      color: #5e5e67;\r\n    }\r\n\r\n    .spec-row:last-child {\r\n      border-bottom: 0;\r\n      padding-bottom: 0;\r\n    }\r\n\r\n    .spec-row span { color: #7b7b84; }\r\n    .spec-row strong { color: #202026; font-weight: 600; text-align: right; }\r\n\r\n    .ean-line {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding-top: 2px;\r\n      font-size: 0.75rem;\r\n      line-height: 1.4;\r\n      color: #5a5a63;\r\n    }\r\n\r\n    .ean-line strong { color: #202026; font-weight: 700; }\r\n\r\n    .reviews-summary {\r\n      padding: 16px 0 12px;\r\n      border-top: 1px solid var(--line-2);\r\n      margin-top: 8px;\r\n      text-align: center;\r\n    }\r\n\r\n    .score {\r\n      font-size: 2.5rem;\r\n      line-height: 1;\r\n      font-weight: 500;\r\n      letter-spacing: -0.05em;\r\n      margin-bottom: 8px;\r\n      color: #3d4757;\r\n    }\r\n\r\n    .score-stars {\r\n      color: var(--yellow);\r\n      font-size: 1rem;\r\n      letter-spacing: 0.14em;\r\n      margin-bottom: 6px;\r\n    }\r\n\r\n    .score-meta {\r\n      color: #66666f;\r\n      font-size: 0.72rem;\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    .bars {\r\n      display: grid;\r\n      gap: 7px;\r\n      margin: 0 auto 14px;\r\n      width: min(100%, 360px);\r\n    }\r\n\r\n    .bar-row {\r\n      display: grid;\r\n      grid-template-columns: 10px 16px 1fr 34px;\r\n      gap: 8px;\r\n      align-items: center;\r\n      font-size: 0.68rem;\r\n      color: #71717a;\r\n    }\r\n\r\n    .bar-stars {\r\n      color: var(--yellow);\r\n      font-size: 0.62rem;\r\n      letter-spacing: 0.05em;\r\n    }\r\n\r\n    .track {\r\n      height: 5px;\r\n      border-radius: 999px;\r\n      background: #ececf1;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .fill {\r\n      height: 100%;\r\n      border-radius: inherit;\r\n      background: #efc128;\r\n    }\r\n\r\n    .review-btn {\r\n      min-width: 170px;\r\n      height: 40px;\r\n      border: 0;\r\n      border-radius: 8px;\r\n      background: var(--dark-btn);\r\n      color: #fff;\r\n      font-size: 0.72rem;\r\n      font-weight: 600;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .sort-wrap {\r\n      display: flex;\r\n      justify-content: center;\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    .sort-select {\r\n      height: 44px;\r\n      min-width: 118px;\r\n      padding: 0 14px;\r\n      border-radius: 8px;\r\n      border: 1px solid var(--line);\r\n      background: #f7f7f9;\r\n      color: #4f5560;\r\n      font-size: 0.8rem;\r\n      outline: none;\r\n    }\r\n\r\n    .review-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      gap: 14px;\r\n      margin-bottom: 18px;\r\n    }\r\n\r\n    .review-card {\r\n      border-radius: 10px;\r\n      border: 1px solid var(--line);\r\n      background: #fff;\r\n      box-shadow: var(--shadow);\r\n      overflow: hidden;\r\n    }\r\n\r\n    .review-media {\r\n      aspect-ratio: 1 \/ 1;\r\n      background: #f6f6f8;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .review-media img {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: cover;\r\n    }\r\n\r\n    .review-body {\r\n      padding: 12px 14px 14px;\r\n      font-size: 0.72rem;\r\n      color: #6d7481;\r\n      line-height: 1.58;\r\n    }\r\n\r\n    .review-stars {\r\n      color: var(--yellow);\r\n      font-size: 0.84rem;\r\n      letter-spacing: 0.08em;\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .review-title {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 6px;\r\n      flex-wrap: wrap;\r\n      margin-bottom: 10px;\r\n      color: #3c4656;\r\n      font-size: 0.78rem;\r\n      line-height: 1.3;\r\n      font-weight: 700;\r\n      letter-spacing: -0.01em;\r\n    }\r\n\r\n    .verified-icon {\r\n      width: 14px;\r\n      height: 14px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    .load-more {\r\n      display: flex;\r\n      justify-content: center;\r\n      margin-bottom: 24px;\r\n    }\r\n\r\n    .load-more button {\r\n      height: 38px;\r\n      min-width: 108px;\r\n      border-radius: 4px;\r\n      border: 1px solid #2d2d2d;\r\n      background: #fff;\r\n      color: #333;\r\n      font-size: 0.72rem;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .cart-shell {\r\n      max-width: var(--cart-max);\r\n      margin: 0 auto;\r\n      display: grid;\r\n      gap: 16px;\r\n    }\r\n\r\n    .cart-header {\r\n      display: grid;\r\n      gap: 6px;\r\n      margin-bottom: 2px;\r\n    }\r\n\r\n    .cart-title {\r\n      margin: 0;\r\n      font-size: 1.15rem;\r\n      line-height: 1.08;\r\n      letter-spacing: -0.04em;\r\n      font-weight: 800;\r\n      color: #202026;\r\n    }\r\n\r\n    .cart-subtitle {\r\n      margin: 0;\r\n      font-size: 0.78rem;\r\n      color: #666b76;\r\n      line-height: 1.45;\r\n    }\r\n\r\n    .cart-layout {\r\n      display: grid;\r\n      gap: 14px;\r\n    }\r\n\r\n    .cart-items {\r\n      display: grid;\r\n      gap: 12px;\r\n    }\r\n\r\n    .cart-item {\r\n      border: 1px solid var(--line);\r\n      border-radius: 16px;\r\n      background: #fff;\r\n      box-shadow: var(--shadow);\r\n      padding: 12px;\r\n      display: grid;\r\n      grid-template-columns: 88px 1fr;\r\n      gap: 12px;\r\n    }\r\n\r\n    .cart-item-media {\r\n      width: 88px;\r\n      height: 88px;\r\n      border-radius: 12px;\r\n      border: 1px solid var(--line);\r\n      background: #f7f7fb;\r\n      padding: 6px;\r\n      overflow: hidden;\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    .cart-item-media img {\r\n      width: 100%;\r\n      height: 100%;\r\n      object-fit: contain;\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .cart-item-main {\r\n      min-width: 0;\r\n      display: grid;\r\n      gap: 8px;\r\n    }\r\n\r\n    .cart-item-top {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n    }\r\n\r\n    .cart-item-title {\r\n      margin: 0;\r\n      font-size: 0.83rem;\r\n      line-height: 1.32;\r\n      letter-spacing: -0.02em;\r\n      font-weight: 700;\r\n      color: #202026;\r\n    }\r\n\r\n    .cart-item-route {\r\n      font-size: 0.72rem;\r\n      color: #4c62d2;\r\n      font-weight: 600;\r\n      line-height: 1.2;\r\n    }\r\n\r\n    .cart-remove {\r\n      border: 0;\r\n      background: transparent;\r\n      color: #9a4f4f;\r\n      cursor: pointer;\r\n      padding: 0;\r\n      font-size: 0.72rem;\r\n      font-weight: 700;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .cart-item-prices {\r\n      display: flex;\r\n      align-items: baseline;\r\n      gap: 8px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .cart-old {\r\n      font-size: 0.72rem;\r\n      color: #8d8d95;\r\n      text-decoration: line-through;\r\n    }\r\n\r\n    .cart-current {\r\n      font-size: 0.86rem;\r\n      font-weight: 800;\r\n      color: #15161a;\r\n      letter-spacing: -0.03em;\r\n    }\r\n\r\n    .cart-row-bottom {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .qty-control {\r\n      height: 36px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 10px;\r\n      background: #fff;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .qty-btn {\r\n      width: 36px;\r\n      height: 36px;\r\n      border: 0;\r\n      background: #fff;\r\n      color: #2a2e38;\r\n      cursor: pointer;\r\n      font-size: 1rem;\r\n      font-weight: 700;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n\r\n    .qty-value {\r\n      width: 40px;\r\n      text-align: center;\r\n      font-size: 0.8rem;\r\n      font-weight: 700;\r\n      color: #202026;\r\n    }\r\n\r\n    .cart-line-total {\r\n      font-size: 0.84rem;\r\n      font-weight: 800;\r\n      color: #202026;\r\n      letter-spacing: -0.02em;\r\n      margin-left: auto;\r\n    }\r\n\r\n    .cart-summary {\r\n      border: 1px solid var(--line);\r\n      border-radius: 16px;\r\n      background: #fff;\r\n      box-shadow: var(--shadow);\r\n      padding: 14px;\r\n      display: grid;\r\n      gap: 12px;\r\n      align-self: start;\r\n    }\r\n\r\n    .cart-summary-title {\r\n      margin: 0;\r\n      font-size: 0.9rem;\r\n      line-height: 1.15;\r\n      font-weight: 800;\r\n      color: #202026;\r\n      letter-spacing: -0.02em;\r\n    }\r\n\r\n    .summary-row {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n      font-size: 0.78rem;\r\n      color: #5f6470;\r\n    }\r\n\r\n    .summary-row strong {\r\n      color: #202026;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .summary-row.total {\r\n      padding-top: 10px;\r\n      border-top: 1px solid var(--line-2);\r\n      font-size: 0.9rem;\r\n    }\r\n\r\n    .summary-row.total strong {\r\n      font-size: 1rem;\r\n      letter-spacing: -0.03em;\r\n    }\r\n\r\n    .checkout-btn {\r\n      width: 100%;\r\n      height: 46px;\r\n      border: 0;\r\n      border-radius: 10px;\r\n      background: linear-gradient(180deg, #9c31ff 0%, #7b22f2 100%);\r\n      color: #fff;\r\n      font-size: 0.84rem;\r\n      font-weight: 800;\r\n      letter-spacing: -0.01em;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .checkout-note {\r\n      font-size: 0.72rem;\r\n      line-height: 1.5;\r\n      color: #707480;\r\n      margin: 0;\r\n    }\r\n\r\n    .cart-empty {\r\n      border: 1px dashed var(--line);\r\n      border-radius: 18px;\r\n      background: #fff;\r\n      padding: 26px 18px;\r\n      display: grid;\r\n      justify-items: center;\r\n      text-align: center;\r\n      gap: 12px;\r\n    }\r\n\r\n    .cart-empty-icon {\r\n      width: 54px;\r\n      height: 54px;\r\n      border-radius: 18px;\r\n      background: rgba(139,44,255,0.08);\r\n      color: var(--purple);\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n\r\n    .cart-empty-title {\r\n      margin: 0;\r\n      font-size: 0.96rem;\r\n      line-height: 1.2;\r\n      font-weight: 800;\r\n      color: #202026;\r\n      letter-spacing: -0.03em;\r\n    }\r\n\r\n    .cart-empty-text {\r\n      margin: 0;\r\n      font-size: 0.76rem;\r\n      line-height: 1.55;\r\n      color: #656b76;\r\n      max-width: 280px;\r\n    }\r\n\r\n    .cart-empty-btn {\r\n      min-width: 170px;\r\n      height: 42px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 10px;\r\n      background: #fff;\r\n      color: #2d3340;\r\n      font-size: 0.8rem;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .footer {\r\n      max-width: var(--product-max);\r\n      margin: 0 auto;\r\n      border-top: 1px solid var(--line);\r\n      padding: 18px 2px 8px;\r\n      color: #2f2f34;\r\n    }\r\n\r\n    .footer-block { margin-bottom: 16px; }\r\n\r\n    .footer-title {\r\n      font-size: 0.62rem;\r\n      font-weight: 800;\r\n      letter-spacing: 0.08em;\r\n      text-transform: uppercase;\r\n      margin-bottom: 8px;\r\n      color: #17171a;\r\n    }\r\n\r\n    .footer-text,\r\n    .footer-list {\r\n      font-size: 0.72rem;\r\n      color: #44444b;\r\n      line-height: 1.58;\r\n    }\r\n\r\n    .footer-list {\r\n      padding-left: 14px;\r\n      margin: 0;\r\n    }\r\n\r\n    .newsletter { margin-top: 10px; }\r\n\r\n    .newsletter label {\r\n      display: block;\r\n      font-size: 0.7rem;\r\n      margin-bottom: 8px;\r\n      color: #3f3f46;\r\n    }\r\n\r\n    .newsletter input {\r\n      width: 100%;\r\n      height: 40px;\r\n      border: 1px solid var(--line);\r\n      border-radius: 4px;\r\n      padding: 0 12px;\r\n      background: #fff;\r\n      outline: none;\r\n    }\r\n\r\n    .copyright {\r\n      text-align: center;\r\n      font-size: 0.62rem;\r\n      color: #808089;\r\n      padding: 18px 0 10px;\r\n    }\r\n\r\n    .screen-loader {\r\n      position: fixed;\r\n      inset: 0;\r\n      z-index: 120;\r\n      display: none;\r\n      align-items: center;\r\n      justify-content: center;\r\n      background: rgba(244,244,246,0.92);\r\n      pointer-events: none;\r\n    }\r\n\r\n    .screen-loader.is-visible { display: flex; }\r\n\r\n    .screen-loader__box {\r\n      width: 108px;\r\n      height: 108px;\r\n      border-radius: 22px;\r\n      background: rgba(255,255,255,0.98);\r\n      border: 1px solid var(--line);\r\n      box-shadow: 0 16px 38px rgba(19, 19, 24, 0.08);\r\n      display: grid;\r\n      place-items: center;\r\n      gap: 8px;\r\n      padding: 14px;\r\n    }\r\n\r\n    .screen-loader__spinner {\r\n      width: 34px;\r\n      height: 34px;\r\n      border-radius: 999px;\r\n      border: 3px solid rgba(139,44,255,0.16);\r\n      border-top-color: var(--purple);\r\n      animation: spinLoader .75s linear infinite;\r\n    }\r\n\r\n    .screen-loader__text {\r\n      font-size: 0.72rem;\r\n      font-weight: 700;\r\n      color: #5b5f68;\r\n      letter-spacing: -0.01em;\r\n      text-align: center;\r\n    }\r\n\r\n    @keyframes spinLoader {\r\n      to { transform: rotate(360deg); }\r\n    }\r\n\r\n    .toast {\r\n      position: fixed;\r\n      left: 50%;\r\n      bottom: 20px;\r\n      transform: translateX(-50%) translateY(12px);\r\n      z-index: 130;\r\n      min-width: 220px;\r\n      max-width: calc(100vw - 24px);\r\n      padding: 12px 14px;\r\n      border-radius: 14px;\r\n      background: rgba(35, 43, 55, 0.96);\r\n      color: #fff;\r\n      font-size: 0.78rem;\r\n      line-height: 1.35;\r\n      font-weight: 600;\r\n      box-shadow: 0 16px 34px rgba(0,0,0,0.16);\r\n      opacity: 0;\r\n      visibility: hidden;\r\n      transition: opacity .18s ease, transform .18s ease, visibility .18s ease;\r\n      text-align: center;\r\n    }\r\n\r\n    .toast.is-visible {\r\n      opacity: 1;\r\n      visibility: visible;\r\n      transform: translateX(-50%) translateY(0);\r\n    }\r\n\r\n    .review-modal {\r\n      position: fixed;\r\n      inset: 0;\r\n      z-index: 100;\r\n      display: none;\r\n      align-items: center;\r\n      justify-content: center;\r\n      padding: 0;\r\n      background: rgba(17, 17, 21, 0.18);\r\n    }\r\n\r\n    .review-modal.is-open { display: flex; }\r\n\r\n    .review-modal__sheet {\r\n      width: min(100%, 428px);\r\n      min-height: 540px;\r\n      background: #fff;\r\n      border-top: 3px solid #8c8c92;\r\n      box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);\r\n      padding: 22px 24px 24px;\r\n      position: relative;\r\n    }\r\n\r\n    .review-modal__close {\r\n      position: absolute;\r\n      top: 18px;\r\n      right: 18px;\r\n      width: 28px;\r\n      height: 28px;\r\n      border: 0;\r\n      background: transparent;\r\n      color: #666;\r\n      padding: 0;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .review-modal__title {\r\n      text-align: center;\r\n      font-size: 1rem;\r\n      line-height: 1.2;\r\n      font-weight: 700;\r\n      color: #5a5a5f;\r\n      margin: 6px 0 14px;\r\n    }\r\n\r\n    .review-modal__stars {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 6px;\r\n      color: var(--yellow);\r\n      margin-bottom: 18px;\r\n    }\r\n\r\n    .review-star-btn {\r\n      width: 28px;\r\n      height: 28px;\r\n      border: 0;\r\n      background: transparent;\r\n      color: #d6d6dc;\r\n      padding: 0;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .review-star-btn.is-active { color: var(--yellow); }\r\n\r\n    .review-input,\r\n    .review-textarea {\r\n      width: 100%;\r\n      border: 0;\r\n      background: #f0f1f4;\r\n      color: #6f7784;\r\n      outline: none;\r\n      border-radius: 6px;\r\n      padding: 0 16px;\r\n      font-size: 0.8rem;\r\n      margin-bottom: 16px;\r\n    }\r\n\r\n    .review-input { height: 46px; }\r\n\r\n    .review-textarea {\r\n      height: 128px;\r\n      padding-top: 14px;\r\n      resize: none;\r\n    }\r\n\r\n    .upload-box {\r\n      width: 116px;\r\n      height: 116px;\r\n      border: 2px dashed #a6a6a9;\r\n      border-radius: 10px;\r\n      background: #fff;\r\n      display: inline-flex;\r\n      flex-direction: column;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 10px;\r\n      color: #9b9b9f;\r\n      cursor: pointer;\r\n      margin: 6px 0 18px;\r\n      user-select: none;\r\n    }\r\n\r\n    .upload-count {\r\n      font-size: 0.74rem;\r\n      color: #8f8f94;\r\n    }\r\n\r\n    .upload-plus {\r\n      font-size: 3rem;\r\n      line-height: 1;\r\n      font-weight: 300;\r\n      margin-top: -4px;\r\n    }\r\n\r\n    .review-submit {\r\n      width: 100%;\r\n      height: 50px;\r\n      border: 0;\r\n      border-radius: 6px;\r\n      background: #c7c7ca;\r\n      color: #fff;\r\n      font-size: 0.84rem;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      transition: background .18s ease;\r\n    }\r\n\r\n    .review-submit.is-ready { background: var(--dark-btn); }\r\n\r\n    .visually-hidden {\r\n      position: absolute !important;\r\n      width: 1px !important;\r\n      height: 1px !important;\r\n      padding: 0 !important;\r\n      margin: -1px !important;\r\n      overflow: hidden !important;\r\n      clip: rect(0, 0, 0, 0) !important;\r\n      white-space: nowrap !important;\r\n      border: 0 !important;\r\n    }\r\n\r\n    @media (min-width: 768px) {\r\n      .topbar-inner { padding: 0 20px; }\r\n      .content { padding: 0 20px 40px; }\r\n      .home-hero { margin: 0 -20px 0; }\r\n      .home-shortcuts { margin: 0 20px; }\r\n      .cart-layout { grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.95fr); align-items: start; }\r\n      .cart-summary { position: sticky; top: 74px; }\r\n      .brand-logo { width: 132px; }\r\n    }\r\n\r\n    @media (max-width: 420px) {\r\n      .topbar-inner { grid-template-columns: 40px 1fr 84px; }\r\n      .home-card-title { min-height: 2.65em; }\r\n      .cart-item { grid-template-columns: 78px 1fr; }\r\n      .cart-item-media { width: 78px; height: 78px; }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"page\">\r\n    <div class=\"shell\">\r\n      <header class=\"topbar\">\r\n        <div class=\"topbar-inner\">\r\n          <button class=\"icon-btn\" aria-label=\"menu\">\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\">\r\n              <path d=\"M4 7h16M4 12h16M4 17h16\"\/>\r\n            <\/svg>\r\n          <\/button>\r\n\r\n          <a class=\"brand\" href=\"#home\" data-route-link aria-label=\"Ir al inicio\">\r\n            <img decoding=\"async\" class=\"brand-logo\" src=\"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/Fravega-Logo-Vector.svg-.png\" alt=\"Fr\u00e1vega\" loading=\"eager\" \/>\r\n          <\/a>\r\n\r\n          <div class=\"icon-group\">\r\n            <button class=\"icon-btn\" aria-label=\"buscar\">\r\n              <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\">\r\n                <circle cx=\"11\" cy=\"11\" r=\"6.5\"\/><path d=\"M16.2 16.2L21 21\"\/>\r\n              <\/svg>\r\n            <\/button>\r\n            <a class=\"icon-btn\" href=\"#carrito\" data-route-link aria-label=\"Abrir carrito\">\r\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <circle cx=\"9\" cy=\"20\" r=\"1.5\"\/><circle cx=\"18\" cy=\"20\" r=\"1.5\"\/><path d=\"M3 4h2l2.3 10.2a1 1 0 0 0 1 .8h9.7a1 1 0 0 0 1-.8L21 7H7.2\"\/>\r\n              <\/svg>\r\n              <span class=\"cart-count\" id=\"cartCount\">0<\/span>\r\n            <\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/header>\r\n\r\n      <main class=\"content\">\r\n        <section class=\"view home-view is-active\" id=\"homeView\">\r\n          <section class=\"home-hero\">\r\n            <div class=\"hero-banner\">\r\n              <div class=\"hero-slides\" id=\"heroSlides\"><\/div>\r\n              <div class=\"hero-dots\" id=\"heroDots\" aria-hidden=\"true\"><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"home-shortcuts\">\r\n              <div class=\"shortcut-item\">\r\n                <span class=\"shortcut-icon\" aria-hidden=\"true\">\r\n                  <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                    <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\"><\/rect>\r\n                    <path d=\"M7 12h4\"><\/path>\r\n                    <path d=\"M15 10h2\"><\/path>\r\n                  <\/svg>\r\n                <\/span>\r\n                <div class=\"shortcut-copy\">\r\n                  <strong>Medios de pago<\/strong>\r\n                  <span>Ver promociones<\/span>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"shortcut-item\">\r\n                <span class=\"shortcut-icon\" aria-hidden=\"true\">\r\n                  <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                    <circle cx=\"12\" cy=\"12\" r=\"8\"><\/circle>\r\n                    <path d=\"M12 8v8\"><\/path>\r\n                    <path d=\"M9.5 10.2C10 9.3 10.8 9 12 9c1.4 0 2.2.6 2.2 1.6 0 1-.6 1.5-2.2 1.8-1.4.3-2 .8-2 1.8 0 .4.1.7.3 1\"><\/path>\r\n                  <\/svg>\r\n                <\/span>\r\n                <div class=\"shortcut-copy\">\r\n                  <strong>Fr\u00e1vega Cr\u00e9ditos<\/strong>\r\n                  <span>Simul\u00e1 tu cr\u00e9dito<\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/section>\r\n\r\n          <section class=\"home-catalog\">\r\n            <h2 class=\"home-section-title\">Sale Fr\u00e1vega<\/h2>\r\n            <div class=\"home-products\" id=\"homeProducts\"><\/div>\r\n          <\/section>\r\n        <\/section>\r\n\r\n        <section class=\"view product-view\" id=\"productView\">\r\n          <div class=\"product-top-nav\">\r\n            <a class=\"product-back-link\" href=\"#home\" data-route-link>\r\n              <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <path d=\"M15 18l-6-6 6-6\"><\/path>\r\n              <\/svg>\r\n              <span>Volver a la tienda<\/span>\r\n            <\/a>\r\n\r\n            <a class=\"product-back-link\" href=\"#carrito\" data-route-link>\r\n              <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <circle cx=\"9\" cy=\"20\" r=\"1.5\"><\/circle><circle cx=\"18\" cy=\"20\" r=\"1.5\"><\/circle><path d=\"M3 4h2l2.3 10.2a1 1 0 0 0 1 .8h9.7a1 1 0 0 0 1-.8L21 7H7.2\"><\/path>\r\n              <\/svg>\r\n              <span>Ver carrito<\/span>\r\n            <\/a>\r\n          <\/div>\r\n\r\n          <div class=\"product-shell\">\r\n            <section class=\"gallery-wrap\">\r\n              <div class=\"gallery-main\">\r\n                <div class=\"main-image-frame\">\r\n                  <img id=\"mainImage\" class=\"main-image\" src=\"\" alt=\"\" loading=\"eager\" decoding=\"async\" \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"zoom-note\">\r\n                <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\">\r\n                  <circle cx=\"11\" cy=\"11\" r=\"6.5\"\/><path d=\"M16.2 16.2L21 21\"\/>\r\n                <\/svg>\r\n                <span>Clic en la imagen para aumentar<\/span>\r\n              <\/div>\r\n\r\n              <div class=\"thumbs\" id=\"productThumbs\" aria-label=\"miniaturas del producto\"><\/div>\r\n            <\/section>\r\n\r\n            <section class=\"main-copy\">\r\n              <h1 class=\"product-title\" id=\"productTitle\"><\/h1>\r\n\r\n              <div class=\"rating-row\">\r\n                <span class=\"stars partial\" id=\"productStars\">\u2605\u2605\u2605\u2605\u2605<\/span>\r\n                <strong id=\"productRating\" style=\"font-weight:600;color:#2f2f34;\"><\/strong>\r\n                <span id=\"productCount\"><\/span>\r\n              <\/div>\r\n\r\n              <div class=\"old-price\" id=\"productOldPrice\"><\/div>\r\n              <div class=\"price-line\">\r\n                <div class=\"price-main\" id=\"productPrice\"><\/div>\r\n                <div class=\"discount-pill\" id=\"productDiscount\"><\/div>\r\n              <\/div>\r\n\r\n              <div class=\"buy-actions\">\r\n                <button class=\"buy-btn\" id=\"addToCartBtn\">Agregar al carrito<\/button>\r\n                <button class=\"ghost-btn\" id=\"buyNowBtn\">Comprar ahora<\/button>\r\n              <\/div>\r\n\r\n              <div class=\"pay-strip\">\r\n                <strong>PAGO SEGURO Y R\u00c1PIDO<\/strong>\r\n                <div class=\"card-icons\">\r\n                  <span class=\"card-badge mc\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/2a\/Mastercard-logo.svg\" alt=\"Mastercard\" loading=\"lazy\" \/><\/span>\r\n                  <span class=\"card-badge visa\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/2c\/Visa_acceptance_logo_%282015_onwards%29.svg\" alt=\"Visa\" loading=\"lazy\" \/><\/span>\r\n                  <span class=\"card-badge amex\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/f\/fa\/American_Express_logo_%282018%29.svg\" alt=\"American Express\" loading=\"lazy\" \/><\/span>\r\n                  <span class=\"card-badge apple\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/b\/b0\/Apple_Pay_logo.svg\" alt=\"Apple Pay\" loading=\"lazy\" \/><\/span>\r\n                  <span class=\"card-badge gpay\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/f\/f2\/Google_Pay_Logo.svg\" alt=\"Google Pay\" loading=\"lazy\" \/><\/span>\r\n                  <span class=\"card-badge discover\" aria-label=\"Discover\">\r\n                    <svg viewBox=\"0 0 82 18\" role=\"img\" aria-hidden=\"true\">\r\n                      <text x=\"0\" y=\"12.8\" font-size=\"11.2\" font-weight=\"700\" font-family=\"Arial, Helvetica, sans-serif\" fill=\"#111111\" letter-spacing=\".15\">DISC<\/text>\r\n                      <circle cx=\"42.5\" cy=\"9\" r=\"3.2\" fill=\"#F58B1F\"><\/circle>\r\n                      <text x=\"48\" y=\"12.8\" font-size=\"11.2\" font-weight=\"700\" font-family=\"Arial, Helvetica, sans-serif\" fill=\"#111111\" letter-spacing=\".15\">VER<\/text>\r\n                    <\/svg>\r\n                  <\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/section>\r\n\r\n            <section class=\"after-gallery\">\r\n              <div class=\"support-card\">\r\n                <div class=\"support-icon-wrap fill\" aria-hidden=\"true\">\r\n                  <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                    <path d=\"M3 8h11v7H3z\"><\/path>\r\n                    <path d=\"M14 10h3.2l2.8 3.1v1.9H14z\"><\/path>\r\n                    <circle cx=\"7.2\" cy=\"17\" r=\"1.7\" fill=\"currentColor\" stroke=\"none\"><\/circle>\r\n                    <circle cx=\"17\" cy=\"17\" r=\"1.7\" fill=\"currentColor\" stroke=\"none\"><\/circle>\r\n                  <\/svg>\r\n                <\/div>\r\n                <div class=\"support-copy\">\r\n                  <div class=\"support-title\">Env\u00edo gratis <span class=\"light\">de 3 a 5 d\u00edas<\/span><\/div>\r\n                  <div class=\"support-highlight\">V\u00e1lido para todo el pa\u00eds hoy!<\/div>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"support-card\">\r\n                <div class=\"support-icon-wrap soft\" aria-hidden=\"true\">\r\n                  <svg width=\"21\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                    <path d=\"M12 3l7 3v5c0 4.6-3 8.3-7 10-4-1.7-7-5.4-7-10V6l7-3z\"><\/path>\r\n                    <path d=\"M9.3 11.8l1.7 1.7 3.8-4\"><\/path>\r\n                  <\/svg>\r\n                <\/div>\r\n                <div class=\"support-copy\">\r\n                  <div class=\"support-title\">Devoluciones gratis<\/div>\r\n                  <div class=\"support-text\">Reembolso del 100% de tu dinero.<br>7 d\u00edas despu\u00e9s de recibir la mercanc\u00eda.<\/div>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"section-copy\" id=\"productDescription\"><\/div>\r\n            <\/section>\r\n\r\n            <section class=\"reviews-summary\">\r\n              <div class=\"score\" id=\"summaryScore\"><\/div>\r\n              <div class=\"score-stars\" id=\"summaryStars\"><\/div>\r\n              <div class=\"score-meta\" id=\"summaryCount\"><\/div>\r\n\r\n              <div class=\"bars\" id=\"summaryBars\"><\/div>\r\n\r\n              <button class=\"review-btn\" id=\"openReviewModal\" type=\"button\">Escribir una rese\u00f1a<\/button>\r\n            <\/section>\r\n\r\n            <div class=\"sort-wrap\">\r\n              <select class=\"sort-select\" aria-label=\"ordenar comentarios\">\r\n                <option>Todas<\/option>\r\n                <option>M\u00e1s recientes<\/option>\r\n                <option>Mejor valoradas<\/option>\r\n              <\/select>\r\n            <\/div>\r\n\r\n            <section class=\"review-grid\" id=\"reviewGrid\"><\/section>\r\n            <div class=\"load-more\"><button type=\"button\">Cargar m\u00e1s<\/button><\/div>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"view cart-view\" id=\"cartView\">\r\n          <div class=\"product-top-nav\" style=\"max-width:var(--cart-max);\">\r\n            <a class=\"product-back-link\" href=\"#home\" data-route-link>\r\n              <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <path d=\"M15 18l-6-6 6-6\"><\/path>\r\n              <\/svg>\r\n              <span>Seguir comprando<\/span>\r\n            <\/a>\r\n          <\/div>\r\n\r\n          <div class=\"cart-shell\">\r\n            <div class=\"cart-header\">\r\n              <h1 class=\"cart-title\">Tu carrito<\/h1>\r\n              <p class=\"cart-subtitle\">Guardamos tus productos y cantidades localmente, como una tienda real. En el pr\u00f3ximo paso conectamos este resumen al checkout que elijas.<\/p>\r\n            <\/div>\r\n\r\n            <div class=\"cart-layout\">\r\n              <div class=\"cart-items\" id=\"cartItems\"><\/div>\r\n\r\n              <aside class=\"cart-summary\" id=\"cartSummary\">\r\n                <h2 class=\"cart-summary-title\">Resumen del pedido<\/h2>\r\n                <div class=\"summary-row\"><span>Productos<\/span><strong id=\"summaryItemsCount\">0<\/strong><\/div>\r\n                <div class=\"summary-row\"><span>Subtotal<\/span><strong id=\"summarySubtotal\">$0,00<\/strong><\/div>\r\n                <div class=\"summary-row\"><span>Env\u00edo<\/span><strong style=\"color:var(--success);\">Gratis<\/strong><\/div>\r\n                <div class=\"summary-row total\"><span>Total<\/span><strong id=\"summaryTotal\">$0,00<\/strong><\/div>\r\n                <button class=\"checkout-btn\" id=\"checkoutBtn\" type=\"button\">Continuar al pago<\/button>\r\n                <p class=\"checkout-note\">Tu carrito ya est\u00e1 listo y persistente. El siguiente paso ser\u00e1 conectar este total al checkout externo que prefieras.<\/p>\r\n              <\/aside>\r\n            <\/div>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <footer class=\"footer\">\r\n          <div class=\"footer-block\">\r\n            <div class=\"footer-title\">Atenci\u00f3n al cliente<\/div>\r\n            <div class=\"footer-text\">Lunes a viernes<br>9:00 a 18:00 hs<br>ventas@suatienda.com<\/div>\r\n          <\/div>\r\n\r\n          <div class=\"footer-block\">\r\n            <div class=\"footer-title\">Informaci\u00f3n<\/div>\r\n            <ul class=\"footer-list\">\r\n              <li>C\u00f3mo comprar<\/li>\r\n              <li>Env\u00edos<\/li>\r\n              <li>Garant\u00eda<\/li>\r\n              <li>Pagos<\/li>\r\n              <li>Devoluciones<\/li>\r\n            <\/ul>\r\n          <\/div>\r\n\r\n          <div class=\"footer-block\">\r\n            <div class=\"footer-title\">Mapa del sitio<\/div>\r\n            <ul class=\"footer-list\">\r\n              <li>Productos<\/li>\r\n              <li>Ofertas<\/li>\r\n              <li>Categor\u00edas<\/li>\r\n              <li>Ayuda<\/li>\r\n              <li>T\u00e9rminos y condiciones<\/li>\r\n            <\/ul>\r\n          <\/div>\r\n\r\n          <div class=\"newsletter\">\r\n            <label>Suscribite al newsletter<\/label>\r\n            <input type=\"email\" placeholder=\"E-mail\" \/>\r\n          <\/div>\r\n\r\n          <div class=\"copyright\">\u00a9 2026 SUA LOJA. Todos los derechos reservados.<\/div>\r\n        <\/footer>\r\n      <\/main>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"screen-loader\" id=\"screenLoader\" aria-hidden=\"true\" style=\"display:none;\">\r\n    <div class=\"screen-loader__box\">\r\n      <div class=\"screen-loader__spinner\"><\/div>\r\n      <div class=\"screen-loader__text\">Cargando...<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"toast\" id=\"toast\"><\/div>\r\n\r\n  <div class=\"review-modal\" id=\"reviewModal\" aria-hidden=\"true\">\r\n    <div class=\"review-modal__sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"reviewModalTitle\">\r\n      <button class=\"review-modal__close\" id=\"closeReviewModal\" aria-label=\"Cerrar\">\r\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n          <path d=\"M6 6l12 12M18 6L6 18\"><\/path>\r\n        <\/svg>\r\n      <\/button>\r\n\r\n      <h2 class=\"review-modal__title\" id=\"reviewModalTitle\">Escribir una rese\u00f1a<\/h2>\r\n\r\n      <div class=\"review-modal__stars\" id=\"starChooser\" aria-label=\"Calificaci\u00f3n\">\r\n        <button class=\"review-star-btn is-active\" type=\"button\" data-value=\"1\">\u2605<\/button>\r\n        <button class=\"review-star-btn is-active\" type=\"button\" data-value=\"2\">\u2605<\/button>\r\n        <button class=\"review-star-btn is-active\" type=\"button\" data-value=\"3\">\u2605<\/button>\r\n        <button class=\"review-star-btn is-active\" type=\"button\" data-value=\"4\">\u2605<\/button>\r\n        <button class=\"review-star-btn is-active\" type=\"button\" data-value=\"5\">\u2605<\/button>\r\n      <\/div>\r\n\r\n      <form id=\"reviewForm\">\r\n        <input class=\"review-input\" id=\"reviewName\" type=\"text\" placeholder=\"Tu nombre\" maxlength=\"60\" \/>\r\n        <textarea class=\"review-textarea\" id=\"reviewComment\" placeholder=\"Comentario\" maxlength=\"500\"><\/textarea>\r\n\r\n        <label class=\"upload-box\" for=\"reviewImages\">\r\n          <span class=\"upload-plus\">+<\/span>\r\n          <span class=\"upload-count\" id=\"uploadCount\">0\/4<\/span>\r\n        <\/label>\r\n        <input class=\"visually-hidden\" id=\"reviewImages\" type=\"file\" accept=\"image\/*\" multiple \/>\r\n\r\n        <button class=\"review-submit\" id=\"reviewSubmit\" type=\"submit\">Enviar rese\u00f1a<\/button>\r\n      <\/form>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    const PRODUCTS = {\"producto-suono\": {\"id\": \"producto-suono\", \"title\": \"Freidora de Aire digital Suono con ventana 6,2L \u2013 1800W\", \"homeTitle\": \"Freidora de Aire digital Suono con ventana 6,2L \u2013 1800W\", \"homeImage\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/CRIATIVO-CAPA-FRAVEGA-FEED2-0.6CAPA-2_800x.webp\", \"rating\": 4.7, \"count\": 445, \"oldPrice\": \"$86.399,00\", \"price\": \"$29.990,00\", \"discount\": \"65% OFF\", \"gallery\": [{\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/CRIATIVO-CAPA-FRAVEGA-FEED2-0.6CAPA-2_800x.webp\", \"alt\": \"Freidora de Aire digital Suono imagen principal\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_661591-MLA84159390581_800x.webp\", \"alt\": \"Freidora de Aire digital Suono vista 2\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_759598-MLA84159409945_800x.webp\", \"alt\": \"Freidora de Aire digital Suono vista 3\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_833351-MLA84159381027_800x.webp\", \"alt\": \"Freidora de Aire digital Suono vista 4\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_906767-MLA99962368747_800x.webp\", \"alt\": \"Freidora de Aire digital Suono vista 5\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_932859-MLA84159400807_800x.webp\", \"alt\": \"Freidora de Aire digital Suono vista 6\"}], \"bars\": {\"5\": 274, \"4\": 25, \"3\": 20, \"2\": 12, \"1\": 8}, \"description\": [{\"title\": \"Freidora de Aire digital Suono con ventana 6,2L \u2013 1800W\", \"icon\": \"check\", \"type\": \"bullets\", \"items\": [\"Ideal para frituras, carnes, pollo y vegetales, con cocci\u00f3n pr\u00e1ctica para el d\u00eda a d\u00eda.\", \"Cocci\u00f3n uniforme con menor uso de aceite y una textura m\u00e1s pareja en cada preparaci\u00f3n.\", \"Potencia estable de 1800W para un rendimiento \u00e1gil, confiable y consistente.\", \"Dise\u00f1o compacto y funcional que se integra con facilidad en cocinas modernas.\"]}, {\"title\": \"Caracter\u00edsticas destacadas\", \"icon\": \"doc\", \"type\": \"text_bullets\", \"text\": \"Pensada para entregar practicidad, lectura visual del proceso y una presencia m\u00e1s limpia sobre la mesada, gracias a su ventana frontal y a un dise\u00f1o sobrio de terminaci\u00f3n premium.\", \"items\": [\"Ventana transparente para seguimiento r\u00e1pido sin perder la est\u00e9tica del equipo.\", \"Temperatura precisa y potencia estable para un cocinado m\u00e1s controlado.\", \"Lenguaje visual moderno, limpio y f\u00e1cil de mantener en el uso cotidiano.\", \"Terminaci\u00f3n robusta y formato premium para una sensaci\u00f3n de mayor calidad.\"]}, {\"title\": \"Especificaciones t\u00e9cnicas\", \"icon\": \"box\", \"type\": \"specs\", \"specs\": [[\"Capacidad\", \"6,2L\"], [\"Potencia\", \"1800W\"], [\"Voltaje\", \"220V\"], [\"Color\", \"Negro y plata\"], [\"Uso recomendado\", \"Dom\u00e9stico\"]]}, {\"title\": \"Garant\u00eda y confianza\", \"icon\": \"shield\", \"type\": \"trust\", \"text\": \"Producto original con soporte del vendedor y despacho acompa\u00f1ado, pensado para una experiencia de compra m\u00e1s segura y transparente.\", \"ean\": \"7891234567788\"}], \"reviews\": [{\"name\": \"Bonifacio Figueroa\", \"text\": \"Esta freidora cambi\u00f3 mis almuerzos: la ventana permite ver c\u00f3mo se cocina todo sin abrir y perder calor.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/50548f9b-28f2-4b11-be7c-3974ee4b2c59.webp\"}, {\"name\": \"Xavier Cruz\", \"text\": \"Me encanta que tenga 6,2 L, as\u00ed hago papas, nuggets y empanadas para toda la familia de una sola vez.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/8190f73f-0b8a-4f41-9aa7-e0912e91205b.webp\"}, {\"name\": \"Valent\u00edn Flores\", \"text\": \"El panel digital es f\u00e1cil de usar, incluso mi hermana mayor la maneja sin mirar el manual.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/8a3510fb-235b-44d7-aac9-aa73ae4f85a0.webp\"}, {\"name\": \"V\u00edctor Vidal\", \"text\": \"Prob\u00e9 con pollo y qued\u00f3 crocante por fuera y jugoso por dentro \u2014 sin aceite, \u00a1fant\u00e1stico!\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/a5d2b29f-cb56-4fa4-9082-4ae530afad0d.webp\"}, {\"name\": \"Demetrio Rojas\", \"text\": \"Tener luz en la ventana es un lujo: ves c\u00f3mo queda tu comida sin adivinar.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/fbd3aed0-6640-4eae-af4c-e3572021b0f6.webp\"}, {\"name\": \"Andr\u00e9s Luna\", \"text\": \"No sab\u00eda si val\u00eda la pena comprar una grande, pero con 6,2 L ya no falta espacio para nada.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/c35c91c6-887c-4b5e-b703-445a89430019.webp\"}, {\"name\": \"Francisco Ram\u00edrez\", \"text\": \"La potencia de 1800 W se nota: precalienta r\u00e1pido y no se queda corta ni con comidas densas.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/7bd55614-a726-42e3-a68d-ed0d34ae753f.webp\"}, {\"name\": \"Constantino Acosta\", \"text\": \"Me gusta que el cesto sea amplio \u2014 as\u00ed no hay que cocinar por tandas eternas.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/7c158671-8189-4af1-8e7d-d7998ee6cd37.webp\"}, {\"name\": \"Emiliano C\u00e1ceres\", \"text\": \"Antes usaba horno y tardaba much\u00edsimo; con esta freidora ahorr\u00e9 tiempo y gas.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/3add4551-411a-491d-ad48-f4360a1790b6.webp\"}, {\"name\": \"Ignacio Ramos\", \"text\": \"El sonido de aviso no es molesto y marca cada etapa, lo que me mantiene tranquilo en la cocina.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/4075168c-ad0e-4128-a34c-0f5e36d15691.webp\"}]}, \"producto-taladro\": {\"id\": \"producto-taladro\", \"title\": \"Taladro Percutor + 2 Baterias 20v Kommberg 13mm Maletin 2 Baterias, Cargador Y Accesorios Kb-tpb1020-2\", \"homeTitle\": \"Taladro Percutor 20 V KOMMBERG KB-TPB1020-2 con 2 bater\u00edas, cargador y malet\u00edn\", \"homeImage\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/CRIATIVO-CAPA-FRAVEGA-FEED2-0.2CAPA-3_400x.webp\", \"rating\": 4.7, \"count\": 388, \"oldPrice\": \"$139.890,00\", \"price\": \"$27.990,00\", \"discount\": \"80% OFF\", \"gallery\": [{\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/CRIATIVO-CAPA-FRAVEGA-FEED2-0.2CAPA-3_400x.webp\", \"alt\": \"Taladro Percutor Kommberg imagen principal\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_938293-MLA89514944412_082025-F_b9ea546f-0cea-4863-9458-1c0ac260dfc7_500x.webp\", \"alt\": \"Taladro Percutor Kommberg vista 2\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_609089-MLA88842201801_072025-F_afa57183-12f1-4e7a-aa48-ebf492ec1423_500x.webp\", \"alt\": \"Taladro Percutor Kommberg vista 3\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_934046-MLA88494399110_072025-F_184ba0ab-75d5-4f1e-96ed-ed1254016dc4_500x.webp\", \"alt\": \"Taladro Percutor Kommberg vista 4\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_783104-MLA88842241507_072025-F_6d0d71aa-a69b-4d86-9eed-67fdf8b4b92c_500x.webp\", \"alt\": \"Taladro Percutor Kommberg vista 5\"}, {\"src\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/D_NQ_NP_2X_740341-MLA88494144088_072025-F_d7d6f2de-90a0-4f8c-a69f-4721423daacc_500x.webp\", \"alt\": \"Taladro Percutor Kommberg vista 6\"}], \"bars\": {\"5\": 325, \"4\": 28, \"3\": 21, \"2\": 10, \"1\": 4}, \"description\": [{\"title\": \"Taladro Percutor 20 V KOMMBERG KB-TPB1020-2 (con 2 bater\u00edas, cargador, malet\u00edn y accesorios)\", \"icon\": \"check\", \"type\": \"paragraphs\", \"paragraphs\": [\"Compacto, potente y listo para trabajar donde sea. Este taladro percutor\/atornillador inal\u00e1mbrico de 20 V trae 2 bater\u00edas de 2,0 Ah, cargador y malet\u00edn organizador para uso inmediato en madera, metal y mamposter\u00eda.\", \"Incorpora portabrocas de 13 mm, torque m\u00e1x. de 29 N\u00b7m, embrague 18+1 posiciones y dos rangos de velocidad: 0\u2013400 RPM (m\u00e1ximo torque) y 0\u20131350 RPM (m\u00e1xima rapidez). Ideal para profesionales y aficionados que buscan autonom\u00eda, versatilidad y buen control de la fuerza en tareas de perforaci\u00f3n y atornillado.\"]}, {\"title\": \"En resumen (lo esencial)\", \"icon\": \"doc\", \"type\": \"bullets\", \"items\": [\"Tipo: Taladro percutor\/atornillador inal\u00e1mbrico 20 V.\", \"Incluye: 2\u00d7 bater\u00edas 2,0 Ah, cargador, malet\u00edn y accesorios.\", \"Capacidades: 13 mm de mandril; 29 N\u00b7m; 18+1 posiciones de torque.\", \"Velocidades: 0\u2013400 \/ 0\u20131350 RPM (selector de 2 marchas).\", \"Usos recomendados: tareas en madera, metal y mamposter\u00eda; obra ligera, mantenimiento y bricolaje.\"]}], \"reviews\": [{\"name\": \"El\u00edas N\u00fa\u00f1ez\", \"text\": \"Al principio dud\u00e9 si iba a tener potencia, pero con 20 V perfora f\u00e1cil hormig\u00f3n y madera sin trabarse. Muy completo el kit.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/32a6e264-51a2-40a8-8e20-fa1cd4e41401.webp\"}, {\"name\": \"C\u00e1ndido Mart\u00ednez\", \"text\": \"Me gust\u00f3 que trae 2 bater\u00edas y malet\u00edn \u2014 pens\u00e9 que ser\u00eda b\u00e1sico, pero viene con accesorios que realmente uso.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/856687e7-aac7-484b-b4af-6423e7be6cf9.webp\"}, {\"name\": \"Pablo Aguilar\", \"text\": \"Ten\u00eda miedo que fuera liviano y d\u00e9bil, pero se siente s\u00f3lido en la mano y no vibra tanto como otros baratos.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/2829bde6-829f-4f4a-9501-0805e87854e9.webp\"}, {\"name\": \"Braulio Duarte\", \"text\": \"Lo mejor es la funci\u00f3n percutor: clava agujeros bien profundos sin esfuerzo, ideal para paredes duras.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/15e2e7d2-0223-4ef5-9d45-8f76e38b5ead.webp\"}, {\"name\": \"Mario Duarte\", \"text\": \"Dudaba si la bater\u00eda iba a durar, pero con las dos puedo alternar y nunca me qued\u00e9 a mitad de tarea.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/8999e8ab-6a76-4b34-8aba-86641350ec05.webp\"}, {\"name\": \"Ignacio Moreno\", \"text\": \"El portabrocas de 13 mm es pr\u00e1ctico y agarra las brocas sin que se aflojen cuando perforo.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/64bd9f99-fa20-475c-9414-5c664b334115.webp\"}, {\"name\": \"Eduardo Montes\", \"text\": \"Me sorprendi\u00f3 lo f\u00e1cil que es cambiar de velocidad y ajustar potencia para distintos materiales.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/852cb6a1-8058-439d-9f42-2ef6a448c29b.webp\"}, {\"name\": \"Arturo C\u00e1ceres\", \"text\": \"Ten\u00eda miedo que fuera ruidoso, pero comparado con otros percutores es bastante aceptable.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/9651c261-166f-4b85-82c3-64d2d2ce95ed.webp\"}, {\"name\": \"Dami\u00e1n Chavez\", \"text\": \"Al principio cre\u00ed que iba a ser pesado, pero el equilibrio es bueno y el agarre c\u00f3modo.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/f14ece8b-0230-4bbc-a0d9-0f09bda5e8b4.webp\"}, {\"name\": \"Alejandro D\u00edaz\", \"text\": \"Perfecto para proyectos en casa; perfor\u00e9 cer\u00e1mica y madera sin que se caliente demasiado.\", \"image\": \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/a8ffc855-9695-47fd-9037-c0a6a09437d4.webp\"}]}};\r\n    const BANNERS = [\"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/4d7626f7d82a3643e843924162bc74ea_767x_9ebaae33-1b68-4e25-a0db-b60808a1082f_767x.webp\", \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/67c35d647cd220897b3e9fc2b9bc33ba_767x_aacb2cc3-0f57-4a62-8b39-438dee57159f_767x.webp\", \"https:\/\/newsmegamillions.com\/wp-content\/uploads\/2026\/04\/398839265e8cf374411f6e0e35a1c585_png_375ab7e2-5294-45f9-b1f3-e045b1e28c35_737x.webp\"];\r\n    const CART_KEY = 'fravega_store_cart_v1';\r\n\r\n    const homeView = document.getElementById('homeView');\r\n    const productView = document.getElementById('productView');\r\n    const cartView = document.getElementById('cartView');\r\n    const homeProducts = document.getElementById('homeProducts');\r\n    const heroSlides = document.getElementById('heroSlides');\r\n    const heroDots = document.getElementById('heroDots');\r\n    const screenLoader = document.getElementById('screenLoader');\r\n    const cartCount = document.getElementById('cartCount');\r\n    const toast = document.getElementById('toast');\r\n\r\n    const mainImage = document.getElementById('mainImage');\r\n    const productThumbs = document.getElementById('productThumbs');\r\n    const productTitle = document.getElementById('productTitle');\r\n    const productRating = document.getElementById('productRating');\r\n    const productCount = document.getElementById('productCount');\r\n    const productOldPrice = document.getElementById('productOldPrice');\r\n    const productPrice = document.getElementById('productPrice');\r\n    const productDiscount = document.getElementById('productDiscount');\r\n    const productDescription = document.getElementById('productDescription');\r\n    const summaryScore = document.getElementById('summaryScore');\r\n    const summaryStars = document.getElementById('summaryStars');\r\n    const summaryCount = document.getElementById('summaryCount');\r\n    const summaryBars = document.getElementById('summaryBars');\r\n    const reviewGrid = document.getElementById('reviewGrid');\r\n    const addToCartBtn = document.getElementById('addToCartBtn');\r\n    const buyNowBtn = document.getElementById('buyNowBtn');\r\n\r\n    const cartItems = document.getElementById('cartItems');\r\n    const summaryItemsCount = document.getElementById('summaryItemsCount');\r\n    const summarySubtotal = document.getElementById('summarySubtotal');\r\n    const summaryTotal = document.getElementById('summaryTotal');\r\n    const checkoutBtn = document.getElementById('checkoutBtn');\r\n\r\n    const reviewModal = document.getElementById('reviewModal');\r\n    const openReviewModal = document.getElementById('openReviewModal');\r\n    const closeReviewModal = document.getElementById('closeReviewModal');\r\n    const reviewForm = document.getElementById('reviewForm');\r\n    const reviewName = document.getElementById('reviewName');\r\n    const reviewComment = document.getElementById('reviewComment');\r\n    const reviewImages = document.getElementById('reviewImages');\r\n    const uploadCount = document.getElementById('uploadCount');\r\n    const reviewSubmit = document.getElementById('reviewSubmit');\r\n    const starButtons = Array.from(document.querySelectorAll('.review-star-btn'));\r\n\r\n    let currentProductId = 'producto-suono';\r\n    let selectedRating = 5;\r\n    let selectedFiles = [];\r\n    let currentBanner = 0;\r\n    let toastTimer = null;\r\n\r\n    function escapeHtml(value) {\r\n      return String(value)\r\n        .replace(\/&\/g, '&amp;')\r\n        .replace(\/<\/g, '&lt;')\r\n        .replace(\/>\/g, '&gt;')\r\n        .replace(\/\"\/g, '&quot;')\r\n        .replace(\/'\/g, '&#039;');\r\n    }\r\n\r\n    function parseMoney(value) {\r\n      const normalized = String(value).replace(\/[^\\d,]\/g, '').replace(\/\\.\/g, '').replace(',', '.');\r\n      return Number(normalized || 0);\r\n    }\r\n\r\n    function formatMoney(value) {\r\n      return new Intl.NumberFormat('es-AR', { style: 'currency', currency: 'ARS', minimumFractionDigits: 2 }).format(value);\r\n    }\r\n\r\n    function setLoader(visible) {\r\n      if (!screenLoader) return;\r\n      screenLoader.classList.toggle('is-visible', visible);\r\n      screenLoader.style.display = visible ? 'flex' : 'none';\r\n      screenLoader.setAttribute('aria-hidden', visible ? 'false' : 'true');\r\n    }\r\n\r\n    function showToast(message) {\r\n      if (!toast) return;\r\n      toast.textContent = message;\r\n      toast.classList.add('is-visible');\r\n      clearTimeout(toastTimer);\r\n      toastTimer = setTimeout(() => toast.classList.remove('is-visible'), 1800);\r\n    }\r\n\r\n    function renderBanner() {\r\n      heroSlides.innerHTML = BANNERS.map((src, index) => `\r\n        <div class=\"hero-slide ${index === 0 ? 'is-active' : ''}\">\r\n          <img src=\"${src}\" alt=\"Banner promocional ${index + 1}\" loading=\"${index === 0 ? 'eager' : 'lazy'}\" decoding=\"async\" \/>\r\n        <\/div>\r\n      `).join('');\r\n\r\n      heroDots.innerHTML = BANNERS.map((_, index) => `\r\n        <span class=\"${index === 0 ? 'active' : ''}\"><\/span>\r\n      `).join('');\r\n\r\n      const slides = Array.from(document.querySelectorAll('.hero-slide'));\r\n      const dots = Array.from(document.querySelectorAll('.hero-dots span'));\r\n\r\n      function showBanner(index) {\r\n        slides.forEach((slide, i) => slide.classList.toggle('is-active', i === index));\r\n        dots.forEach((dot, i) => dot.classList.toggle('active', i === index));\r\n      }\r\n\r\n      if (slides.length > 1) {\r\n        setInterval(() => {\r\n          currentBanner = (currentBanner + 1) % slides.length;\r\n          showBanner(currentBanner);\r\n        }, 3200);\r\n      }\r\n    }\r\n\r\n    function readCart() {\r\n      try {\r\n        const raw = localStorage.getItem(CART_KEY);\r\n        const parsed = raw ? JSON.parse(raw) : [];\r\n        return Array.isArray(parsed) ? parsed : [];\r\n      } catch (e) {\r\n        return [];\r\n      }\r\n    }\r\n\r\n    function writeCart(cart) {\r\n      localStorage.setItem(CART_KEY, JSON.stringify(cart));\r\n    }\r\n\r\n    function cartCountTotal() {\r\n      return readCart().reduce((sum, item) => sum + Number(item.qty || 0), 0);\r\n    }\r\n\r\n    function syncCartBadge() {\r\n      const total = cartCountTotal();\r\n      cartCount.textContent = total;\r\n      cartCount.classList.toggle('is-visible', total > 0);\r\n    }\r\n\r\n    function addToCart(productId, qty = 1) {\r\n      const cart = readCart();\r\n      const existing = cart.find((item) => item.productId === productId);\r\n      if (existing) {\r\n        existing.qty += qty;\r\n      } else {\r\n        cart.push({ productId, qty });\r\n      }\r\n      writeCart(cart);\r\n      syncCartBadge();\r\n    }\r\n\r\n    function updateCartQuantity(productId, nextQty) {\r\n      const cart = readCart()\r\n        .map((item) => item.productId === productId ? { ...item, qty: nextQty } : item)\r\n        .filter((item) => Number(item.qty) > 0);\r\n      writeCart(cart);\r\n      syncCartBadge();\r\n      renderCartPage();\r\n    }\r\n\r\n    function removeFromCart(productId) {\r\n      const cart = readCart().filter((item) => item.productId !== productId);\r\n      writeCart(cart);\r\n      syncCartBadge();\r\n      renderCartPage();\r\n    }\r\n\r\n    function renderHome() {\r\n      const ids = Object.keys(PRODUCTS);\r\n      homeProducts.innerHTML = ids.map((id) => {\r\n        const product = PRODUCTS[id];\r\n        return `\r\n          <a class=\"home-card\" href=\"#${id}\" data-route-link aria-label=\"Abrir ${escapeHtml(product.homeTitle)}\">\r\n            <div class=\"home-card-media\">\r\n              <img decoding=\"async\" src=\"${product.homeImage}\" alt=\"${escapeHtml(product.homeTitle)}\" loading=\"lazy\" \/>\r\n            <\/div>\r\n            <div class=\"home-card-body\">\r\n              <h3 class=\"home-card-title\">${escapeHtml(product.homeTitle)}<\/h3>\r\n              <div class=\"home-card-rating\">\r\n                <span class=\"home-card-stars\">\u2605\u2605\u2605\u2605\u2605<\/span>\r\n                <span>(${product.count})<\/span>\r\n              <\/div>\r\n              <div class=\"home-card-old\">${escapeHtml(product.oldPrice)}<\/div>\r\n              <div class=\"home-card-price\">${escapeHtml(product.price)}<\/div>\r\n            <\/div>\r\n          <\/a>\r\n        `;\r\n      }).join('');\r\n    }\r\n\r\n    function iconSvg(name) {\r\n      const map = {\r\n        check: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 7L9 18l-5-5\"><\/path><\/svg>`,\r\n        doc: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"7\" y=\"3\" width=\"10\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6M9 11h6M9 15h4\"><\/path><\/svg>`,\r\n        box: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l8 4.5-8 4.5-8-4.5L12 3z\"><\/path><path d=\"M4 7.5V16.5L12 21\"><\/path><path d=\"M20 7.5V16.5L12 21\"><\/path><\/svg>`,\r\n        shield: `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l7 3v5c0 4.6-3 8.3-7 10-4-1.7-7-5.4-7-10V6l7-3z\"><\/path><\/svg>`,\r\n      };\r\n      return map[name] || map.check;\r\n    }\r\n\r\n    function featureMark(index) {\r\n      const classes = ['gold', '', 'charcoal', ''];\r\n      const cls = classes[index % classes.length];\r\n      const svgs = [\r\n        `<svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2l2.5 5.3 5.8.8-4.2 4.1 1 5.8L12 15.8 6.9 18l1-5.8L3.7 8.1l5.8-.8L12 2z\"\/><\/svg>`,\r\n        `<svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 7L9 18l-5-5\"><\/path><\/svg>`,\r\n        `<svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 2L6 14h5l-1 8 8-12h-5l0-8z\"><\/path><\/svg>`,\r\n        `<svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"><\/path><\/svg>`,\r\n      ];\r\n      return `<span class=\"feature-mark ${cls}\" aria-hidden=\"true\">${svgs[index % svgs.length]}<\/span>`;\r\n    }\r\n\r\n    function renderDescription(product) {\r\n      productDescription.innerHTML = product.description.map((section) => {\r\n        let body = '';\r\n\r\n        if (section.type === 'bullets') {\r\n          body = `<ul class=\"feature-list\">${section.items.map((item, i) => `<li class=\"feature-item\">${featureMark(i)}<span>${escapeHtml(item)}<\/span><\/li>`).join('')}<\/ul>`;\r\n        } else if (section.type === 'text_bullets') {\r\n          body = `<p class=\"desc-text\">${escapeHtml(section.text)}<\/p><ul class=\"feature-list\">${section.items.map((item, i) => `<li class=\"feature-item\">${featureMark(i)}<span>${escapeHtml(item)}<\/span><\/li>`).join('')}<\/ul>`;\r\n        } else if (section.type === 'paragraphs') {\r\n          body = section.paragraphs.map((p) => `<p class=\"desc-text\">${escapeHtml(p)}<\/p>`).join('');\r\n        } else if (section.type === 'specs') {\r\n          body = `<div class=\"spec-list\">${section.specs.map((row) => `<div class=\"spec-row\"><span>${escapeHtml(row[0])}<\/span><strong>${escapeHtml(row[1])}<\/strong><\/div>`).join('')}<\/div>`;\r\n        } else if (section.type === 'trust') {\r\n          body = `<p class=\"desc-text\">${escapeHtml(section.text)}<\/p><div class=\"ean-line\"><strong>EAN:<\/strong><span>${escapeHtml(section.ean)}<\/span><\/div>`;\r\n        }\r\n\r\n        return `\r\n          <div class=\"desc-section\">\r\n            <div class=\"desc-head\">\r\n              <span class=\"desc-icon ${section.icon === 'doc' || section.icon === 'box' || section.icon === 'shield' ? 'neutral' : ''}\" aria-hidden=\"true\">${iconSvg(section.icon)}<\/span>\r\n              <h3 class=\"desc-title\">${escapeHtml(section.title)}<\/h3>\r\n            <\/div>\r\n            ${body}\r\n          <\/div>\r\n        `;\r\n      }).join('');\r\n    }\r\n\r\n    function renderBars(product) {\r\n      const max = Math.max(...Object.values(product.bars));\r\n      summaryBars.innerHTML = ['5', '4', '3', '2', '1'].map((key) => {\r\n        const val = product.bars[key] || 0;\r\n        const width = max ? (val \/ max) * 100 : 0;\r\n        return `\r\n          <div class=\"bar-row\">\r\n            <span>${key}<\/span>\r\n            <span class=\"bar-stars\">\u2605<\/span>\r\n            <div class=\"track\"><div class=\"fill\" style=\"width:${width}%\"><\/div><\/div>\r\n            <span>${val}<\/span>\r\n          <\/div>\r\n        `;\r\n      }).join('');\r\n    }\r\n\r\n    function readStoredReviews(productId) {\r\n      try {\r\n        const raw = localStorage.getItem(`store_reviews_${productId}`);\r\n        const parsed = raw ? JSON.parse(raw) : [];\r\n        return Array.isArray(parsed) ? parsed : [];\r\n      } catch (e) {\r\n        return [];\r\n      }\r\n    }\r\n\r\n    function writeStoredReviews(productId, items) {\r\n      localStorage.setItem(`store_reviews_${productId}`, JSON.stringify(items));\r\n    }\r\n\r\n    function verifiedIcon() {\r\n      return `\r\n        <span class=\"verified-icon\" aria-hidden=\"true\">\r\n          <svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\">\r\n            <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"#3f495a\"><\/circle>\r\n            <path d=\"M5.2 8.2l1.5 1.6 3.6-3.8\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\r\n          <\/svg>\r\n        <\/span>\r\n      `;\r\n    }\r\n\r\n    function renderReviews(product) {\r\n      const allReviews = [...readStoredReviews(product.id), ...product.reviews];\r\n      reviewGrid.innerHTML = allReviews.map((item) => {\r\n        const safeName = escapeHtml(item.name || 'Cliente');\r\n        const safeText = escapeHtml(item.text || '');\r\n        const image = item.image || (Array.isArray(item.images) && item.images[0]) || '';\r\n        return `\r\n          <article class=\"review-card\">\r\n            <div class=\"review-media\">\r\n              ${image ? `<img src=\"${image}\" alt=\"Rese\u00f1a de ${safeName}\" loading=\"lazy\" decoding=\"async\" \/>` : ``}\r\n            <\/div>\r\n            <div class=\"review-body\">\r\n              <div class=\"review-stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\r\n              <div class=\"review-title\">\r\n                <span>${safeName}<\/span>\r\n                ${verifiedIcon()}\r\n              <\/div>\r\n              <div>${safeText}<\/div>\r\n            <\/div>\r\n          <\/article>\r\n        `;\r\n      }).join('');\r\n    }\r\n\r\n    function renderGallery(product) {\r\n      const first = product.gallery[0];\r\n      mainImage.src = first.src;\r\n      mainImage.alt = first.alt;\r\n      productThumbs.innerHTML = product.gallery.map((item, index) => `\r\n        <button class=\"thumb ${index === 0 ? 'active' : ''}\" data-image=\"${item.src}\" data-alt=\"${escapeHtml(item.alt)}\" aria-label=\"Imagen ${index + 1}\">\r\n          <img src=\"${item.src}\" alt=\"Miniatura ${index + 1}\" loading=\"lazy\" decoding=\"async\" \/>\r\n        <\/button>\r\n      `).join('');\r\n\r\n      let isSwitching = false;\r\n      productThumbs.querySelectorAll('.thumb').forEach((button) => {\r\n        button.addEventListener('click', () => {\r\n          if (isSwitching) return;\r\n          const nextSrc = button.dataset.image;\r\n          const nextAlt = button.dataset.alt || 'Imagen del producto';\r\n          const allButtons = Array.from(productThumbs.querySelectorAll('.thumb'));\r\n          allButtons.forEach((b) => b.classList.remove('active'));\r\n          button.classList.add('active');\r\n\r\n          if (mainImage.getAttribute('src') === nextSrc) return;\r\n\r\n          isSwitching = true;\r\n          mainImage.classList.add('is-loading');\r\n\r\n          const preloader = new Image();\r\n          preloader.onload = () => {\r\n            mainImage.src = nextSrc;\r\n            mainImage.alt = nextAlt;\r\n            requestAnimationFrame(() => {\r\n              mainImage.classList.remove('is-loading');\r\n              isSwitching = false;\r\n            });\r\n          };\r\n          preloader.onerror = () => {\r\n            mainImage.src = nextSrc;\r\n            mainImage.alt = nextAlt;\r\n            mainImage.classList.remove('is-loading');\r\n            isSwitching = false;\r\n          };\r\n          preloader.src = nextSrc;\r\n        });\r\n      });\r\n    }\r\n\r\n    function renderProduct(productId) {\r\n      const product = PRODUCTS[productId] || PRODUCTS['producto-suono'];\r\n      currentProductId = product.id;\r\n\r\n      renderGallery(product);\r\n      productTitle.textContent = product.title;\r\n      productRating.textContent = product.rating.toFixed(1);\r\n      productCount.textContent = `(${product.count} Rese\u00f1as)`;\r\n      productOldPrice.textContent = product.oldPrice;\r\n      productPrice.textContent = product.price;\r\n      productDiscount.textContent = product.discount;\r\n\r\n      const starMarkup = product.rating >= 4.75 ? '\u2605\u2605\u2605\u2605\u2605' : '\u2605\u2605\u2605\u2605<span class=\"dim\">\u2605<\/span>';\r\n      document.getElementById('productStars').innerHTML = starMarkup;\r\n      summaryScore.textContent = product.rating.toFixed(1);\r\n      summaryStars.innerHTML = starMarkup;\r\n      summaryCount.textContent = `${product.count} rese\u00f1as`;\r\n\r\n      renderDescription(product);\r\n      renderBars(product);\r\n      renderReviews(product);\r\n    }\r\n\r\n    function renderCartPage() {\r\n      const cart = readCart();\r\n      const hydrated = cart\r\n        .map((item) => {\r\n          const product = PRODUCTS[item.productId];\r\n          return product ? { ...item, product, unitPrice: parseMoney(product.price) } : null;\r\n        })\r\n        .filter(Boolean);\r\n\r\n      if (!hydrated.length) {\r\n        cartItems.innerHTML = `\r\n          <div class=\"cart-empty\">\r\n            <span class=\"cart-empty-icon\" aria-hidden=\"true\">\r\n              <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <circle cx=\"9\" cy=\"20\" r=\"1.5\"><\/circle>\r\n                <circle cx=\"18\" cy=\"20\" r=\"1.5\"><\/circle>\r\n                <path d=\"M3 4h2l2.3 10.2a1 1 0 0 0 1 .8h9.7a1 1 0 0 0 1-.8L21 7H7.2\"><\/path>\r\n              <\/svg>\r\n            <\/span>\r\n            <h2 class=\"cart-empty-title\">Tu carrito est\u00e1 vac\u00edo<\/h2>\r\n            <p class=\"cart-empty-text\">Agreg\u00e1 productos desde la home o desde la p\u00e1gina de producto. Todo quedar\u00e1 guardado localmente.<\/p>\r\n            <button class=\"cart-empty-btn\" type=\"button\" data-route-hash=\"#home\">Ir a la tienda<\/button>\r\n          <\/div>\r\n        `;\r\n        summaryItemsCount.textContent = '0';\r\n        summarySubtotal.textContent = formatMoney(0);\r\n        summaryTotal.textContent = formatMoney(0);\r\n        checkoutBtn.disabled = true;\r\n        checkoutBtn.style.opacity = '0.55';\r\n        return;\r\n      }\r\n\r\n      checkoutBtn.disabled = false;\r\n      checkoutBtn.style.opacity = '1';\r\n\r\n      cartItems.innerHTML = hydrated.map((item) => {\r\n        const lineTotal = item.unitPrice * Number(item.qty || 0);\r\n        return `\r\n          <article class=\"cart-item\">\r\n            <a class=\"cart-item-media\" href=\"#${item.product.id}\" data-route-link>\r\n              <img decoding=\"async\" src=\"${item.product.homeImage}\" alt=\"${escapeHtml(item.product.homeTitle)}\" loading=\"lazy\" \/>\r\n            <\/a>\r\n\r\n            <div class=\"cart-item-main\">\r\n              <div class=\"cart-item-top\">\r\n                <div>\r\n                  <h3 class=\"cart-item-title\">${escapeHtml(item.product.homeTitle)}<\/h3>\r\n                  <a class=\"cart-item-route\" href=\"#${item.product.id}\" data-route-link>Ver producto<\/a>\r\n                <\/div>\r\n                <button class=\"cart-remove\" type=\"button\" data-remove-id=\"${item.product.id}\">Quitar<\/button>\r\n              <\/div>\r\n\r\n              <div class=\"cart-item-prices\">\r\n                <span class=\"cart-old\">${escapeHtml(item.product.oldPrice)}<\/span>\r\n                <strong class=\"cart-current\">${escapeHtml(item.product.price)}<\/strong>\r\n              <\/div>\r\n\r\n              <div class=\"cart-row-bottom\">\r\n                <div class=\"qty-control\">\r\n                  <button class=\"qty-btn\" type=\"button\" data-qty-change=\"-1\" data-product-id=\"${item.product.id}\">\u2212<\/button>\r\n                  <span class=\"qty-value\">${item.qty}<\/span>\r\n                  <button class=\"qty-btn\" type=\"button\" data-qty-change=\"1\" data-product-id=\"${item.product.id}\">+<\/button>\r\n                <\/div>\r\n                <div class=\"cart-line-total\">${formatMoney(lineTotal)}<\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/article>\r\n        `;\r\n      }).join('');\r\n\r\n      const totalItems = hydrated.reduce((sum, item) => sum + Number(item.qty || 0), 0);\r\n      const subtotal = hydrated.reduce((sum, item) => sum + (item.unitPrice * Number(item.qty || 0)), 0);\r\n\r\n      summaryItemsCount.textContent = String(totalItems);\r\n      summarySubtotal.textContent = formatMoney(subtotal);\r\n      summaryTotal.textContent = formatMoney(subtotal);\r\n    }\r\n\r\n    function getRoute() {\r\n      const hash = (window.location.hash || '#home').replace('#', '').toLowerCase();\r\n      if (hash === 'carrito') return { type: 'cart' };\r\n      if (hash && PRODUCTS[hash]) return { type: 'product', id: hash };\r\n      return { type: 'home' };\r\n    }\r\n\r\n    function applyRoute(scrollTop = true) {\r\n      const route = getRoute();\r\n      homeView.classList.toggle('is-active', route.type === 'home');\r\n      productView.classList.toggle('is-active', route.type === 'product');\r\n      cartView.classList.toggle('is-active', route.type === 'cart');\r\n\r\n      if (route.type === 'product') {\r\n        renderProduct(route.id);\r\n      } else if (route.type === 'cart') {\r\n        renderCartPage();\r\n      }\r\n\r\n      if (scrollTop) window.scrollTo(0, 0);\r\n    }\r\n\r\n    function goToRoute(hash) {\r\n      setLoader(true);\r\n      setTimeout(() => {\r\n        if (window.location.hash !== hash) {\r\n          window.location.hash = hash;\r\n        } else {\r\n          applyRoute();\r\n        }\r\n        setTimeout(() => setLoader(false), 220);\r\n      }, 340);\r\n    }\r\n\r\n    function openModal() {\r\n      reviewModal.classList.add('is-open');\r\n      reviewModal.setAttribute('aria-hidden', 'false');\r\n      document.body.style.overflow = 'hidden';\r\n    }\r\n\r\n    function closeModal() {\r\n      reviewModal.classList.remove('is-open');\r\n      reviewModal.setAttribute('aria-hidden', 'true');\r\n      document.body.style.overflow = '';\r\n    }\r\n\r\n    function resetForm() {\r\n      reviewForm.reset();\r\n      selectedFiles = [];\r\n      uploadCount.textContent = '0\/4';\r\n      selectedRating = 5;\r\n      starButtons.forEach((btn) => btn.classList.add('is-active'));\r\n      reviewSubmit.classList.remove('is-ready');\r\n    }\r\n\r\n    function refreshSubmitState() {\r\n      const ready = reviewName.value.trim().length > 0 && reviewComment.value.trim().length > 0;\r\n      reviewSubmit.classList.toggle('is-ready', ready);\r\n    }\r\n\r\n    function updateStars(value) {\r\n      selectedRating = value;\r\n      starButtons.forEach((btn, index) => btn.classList.toggle('is-active', index < value));\r\n    }\r\n\r\n    function fileToDataURL(file) {\r\n      return new Promise((resolve, reject) => {\r\n        const reader = new FileReader();\r\n        reader.onload = () => resolve(reader.result);\r\n        reader.onerror = reject;\r\n        reader.readAsDataURL(file);\r\n      });\r\n    }\r\n\r\n    document.addEventListener('click', (event) => {\r\n      const link = event.target.closest('[data-route-link]');\r\n      if (link) {\r\n        event.preventDefault();\r\n        const targetHash = link.getAttribute('href') || '#home';\r\n        goToRoute(targetHash);\r\n        return;\r\n      }\r\n\r\n      const emptyBtn = event.target.closest('[data-route-hash]');\r\n      if (emptyBtn) {\r\n        event.preventDefault();\r\n        goToRoute(emptyBtn.getAttribute('data-route-hash') || '#home');\r\n        return;\r\n      }\r\n\r\n      const qtyBtn = event.target.closest('[data-qty-change]');\r\n      if (qtyBtn) {\r\n        const productId = qtyBtn.getAttribute('data-product-id');\r\n        const delta = Number(qtyBtn.getAttribute('data-qty-change') || 0);\r\n        const item = readCart().find((entry) => entry.productId === productId);\r\n        const current = item ? Number(item.qty || 0) : 0;\r\n        updateCartQuantity(productId, current + delta);\r\n        return;\r\n      }\r\n\r\n      const removeBtn = event.target.closest('[data-remove-id]');\r\n      if (removeBtn) {\r\n        removeFromCart(removeBtn.getAttribute('data-remove-id'));\r\n        showToast('Producto eliminado del carrito');\r\n      }\r\n    });\r\n\r\n    window.addEventListener('hashchange', () => applyRoute());\r\n\r\n    addToCartBtn.addEventListener('click', () => {\r\n      addToCart(currentProductId, 1);\r\n      showToast('Producto agregado al carrito');\r\n    });\r\n\r\n    buyNowBtn.addEventListener('click', () => {\r\n      addToCart(currentProductId, 1);\r\n      showToast('Producto agregado al carrito');\r\n      goToRoute('#carrito');\r\n    });\r\n\r\n    checkoutBtn.addEventListener('click', () => {\r\n      if (!readCart().length) return;\r\n      showToast('El checkout externo se conecta en el pr\u00f3ximo paso');\r\n    });\r\n\r\n    openReviewModal.addEventListener('click', openModal);\r\n    closeReviewModal.addEventListener('click', closeModal);\r\n\r\n    reviewModal.addEventListener('click', (event) => {\r\n      if (event.target === reviewModal) closeModal();\r\n    });\r\n\r\n    document.addEventListener('keydown', (event) => {\r\n      if (event.key === 'Escape' && reviewModal.classList.contains('is-open')) closeModal();\r\n    });\r\n\r\n    starButtons.forEach((button) => {\r\n      button.addEventListener('click', () => updateStars(Number(button.dataset.value || 5)));\r\n    });\r\n\r\n    reviewName.addEventListener('input', refreshSubmitState);\r\n    reviewComment.addEventListener('input', refreshSubmitState);\r\n\r\n    reviewImages.addEventListener('change', (event) => {\r\n      selectedFiles = Array.from(event.target.files || []).slice(0, 4);\r\n      uploadCount.textContent = `${selectedFiles.length}\/4`;\r\n    });\r\n\r\n    reviewForm.addEventListener('submit', async (event) => {\r\n      event.preventDefault();\r\n      const name = reviewName.value.trim();\r\n      const text = reviewComment.value.trim();\r\n      if (!name || !text) return;\r\n\r\n      const imageData = [];\r\n      for (const file of selectedFiles) {\r\n        try { imageData.push(await fileToDataURL(file)); } catch (e) {}\r\n      }\r\n\r\n      const newReview = {\r\n        name,\r\n        text,\r\n        image: imageData[0] || '',\r\n        images: imageData,\r\n        rating: selectedRating,\r\n        createdAt: Date.now()\r\n      };\r\n\r\n      const stored = readStoredReviews(currentProductId);\r\n      stored.unshift(newReview);\r\n      writeStoredReviews(currentProductId, stored.slice(0, 8));\r\n      renderReviews(PRODUCTS[currentProductId]);\r\n      closeModal();\r\n      resetForm();\r\n      showToast('Tu rese\u00f1a fue guardada en este dispositivo');\r\n    });\r\n\r\n    renderBanner();\r\n    renderHome();\r\n    syncCartBadge();\r\n    applyRoute(false);\r\n    refreshSubmitState();\r\n  <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tienda Fr\u00e1vega &#8211; Demo 0 Medios de pago Ver promociones Fr\u00e1vega Cr\u00e9ditos Simul\u00e1 tu cr\u00e9dito Sale Fr\u00e1vega Volver a la tienda Ver carrito Clic en la imagen para aumentar \u2605\u2605\u2605\u2605\u2605 Agregar al carrito Comprar ahora PAGO SEGURO Y R\u00c1PIDO DISC VER Env\u00edo gratis de 3 a 5 d\u00edas V\u00e1lido para todo el pa\u00eds hoy! Devoluciones [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/newsfinance.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12"}],"version-history":[{"count":4,"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":17,"href":"https:\/\/newsfinance.online\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions\/17"}],"wp:attachment":[{"href":"https:\/\/newsfinance.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}