{"title":"Bundles","description":"","products":[{"product_id":"chrome-delete-starter-bundle","title":"Chrome Delete Starter Bundle","description":"\u003cstyle\u003e\n  \/* ===== REVIEWS POPUP OVERLAY ===== *\/\n  .reviews-popup-overlay {\n    display: none;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.95);\n    z-index: 99999;\n    overflow-y: auto;\n    font-family: 'Titillium Web', sans-serif;\n  }\n\n  .reviews-popup-overlay.active {\n    display: block;\n    animation: fadeIn 0.3s ease;\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n\n  .reviews-popup-container {\n    max-width: 1200px;\n    margin: 2rem auto;\n    padding: 2rem;\n    background: #0A0A0A;\n    border-radius: 16px;\n    border: 1px solid rgba(245, 243, 240, 0.1);\n    position: relative;\n  }\n\n  \/* Close Button *\/\n  .close-reviews-popup {\n    position: absolute;\n    top: 20px;\n    right: 20px;\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.1);\n    border: 1px solid rgba(245, 243, 240, 0.2);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 24px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n    z-index: 10;\n  }\n\n  .close-reviews-popup:hover {\n    background: rgba(245, 243, 240, 0.2);\n    transform: rotate(90deg);\n  }\n\n  \/* Reviews Header *\/\n  .reviews-popup-header {\n    text-align: center;\n    margin-bottom: 2rem;\n    padding-bottom: 2rem;\n    border-bottom: 1px solid rgba(245, 243, 240, 0.1);\n  }\n\n  .popup-rating-badge {\n    display: inline-block;\n    background: linear-gradient(135deg, #FFD700, #FFA500);\n    color: #0A0A0A;\n    padding: 0.5rem 1.5rem;\n    border-radius: 20px;\n    font-size: 1.3rem;\n    font-weight: 700;\n    margin-bottom: 1rem;\n  }\n\n  .reviews-popup-header h2 {\n    font-size: 2rem;\n    font-weight: 300;\n    color: #F5F3F0;\n    margin: 0 0 1rem 0;\n    line-height: 1.2;\n  }\n\n  .popup-review-count {\n    font-size: 1.2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-weight: 300;\n  }\n\n  .popup-review-count strong {\n    color: #4CAF50;\n    font-weight: 600;\n  }\n\n  \/* Reviews Carousel *\/\n  .reviews-popup-carousel {\n    position: relative;\n    overflow: hidden;\n    margin-bottom: 2rem;\n  }\n\n  .reviews-popup-track {\n    display: flex;\n    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n    width: 100%;\n  }\n\n  .review-popup-slide {\n    flex: 0 0 100%;\n    min-width: 100%;\n    display: flex;\n    gap: 1rem;\n    padding: 0 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .review-popup-card {\n    flex: 0 0 calc(33.333% - 0.67rem);\n    background: rgba(245, 243, 240, 0.03);\n    border: 1px solid rgba(245, 243, 240, 0.08);\n    border-radius: 8px;\n    padding: 1.2rem;\n    display: flex;\n    flex-direction: column;\n    transition: all 0.3s ease;\n    height: auto;\n  }\n\n  @media (max-width: 1024px) {\n    .review-popup-slide {\n      gap: 0.75rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 calc(50% - 0.5rem);\n    }\n  }\n\n  @media (max-width: 768px) {\n    .review-popup-slide {\n      flex-direction: column;\n      gap: 0.5rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 100%;\n    }\n  }\n\n  .review-popup-card:hover {\n    border-color: rgba(245, 243, 240, 0.15);\n    transform: translateY(-3px);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n  }\n\n  .review-popup-rating {\n    display: flex;\n    gap: 0.15rem;\n    margin-bottom: 0.8rem;\n  }\n\n  .review-popup-star {\n    color: #FFD700;\n    font-size: 1.1rem;\n  }\n\n  .review-popup-text {\n    font-size: 1rem;\n    line-height: 1.4;\n    color: rgba(245, 243, 240, 0.9);\n    margin: 0 0 1rem 0;\n  }\n\n  .review-popup-meta {\n    padding-top: 0.8rem;\n    border-top: 1px solid rgba(245, 243, 240, 0.1);\n    margin-top: auto;\n  }\n\n  .review-popup-author {\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: #F5F3F0;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-location {\n    font-size: 0.85rem;\n    color: rgba(245, 243, 240, 0.6);\n    font-style: italic;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-date {\n    font-size: 0.75rem;\n    color: rgba(245, 243, 240, 0.4);\n  }\n\n  \/* Carousel Navigation *\/\n  .popup-carousel-nav {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 1.5rem;\n    margin: 1.5rem 0;\n  }\n\n  .popup-carousel-dots {\n    display: flex;\n    gap: 0.4rem;\n  }\n\n  .popup-carousel-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: rgba(245, 243, 240, 0.2);\n    cursor: pointer;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-dot.active {\n    background: #F5F3F0;\n    transform: scale(1.2);\n  }\n\n  .popup-carousel-arrow {\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.05);\n    border: 1px solid rgba(245, 243, 240, 0.15);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 18px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-arrow:hover:not(:disabled) {\n    background: rgba(245, 243, 240, 0.1);\n    border-color: rgba(245, 243, 240, 0.3);\n    transform: scale(1.05);\n  }\n\n  .popup-carousel-arrow:disabled {\n    opacity: 0.3;\n    cursor: not-allowed;\n  }\n\n  \/* Swipe Indicator *\/\n  .popup-swipe-indicator {\n    text-align: center;\n    color: rgba(245, 243, 240, 0.5);\n    font-size: 0.9rem;\n    margin-top: 1rem;\n    display: none;\n  }\n\n  @media (max-width: 768px) {\n    .popup-swipe-indicator {\n      display: block;\n    }\n  }\n\n  \/* Reviews Stats *\/\n  .reviews-popup-stats {\n    background: rgba(245, 243, 240, 0.02);\n    border-radius: 8px;\n    padding: 1.5rem;\n    margin-top: 2rem;\n    border: 1px solid rgba(245, 243, 240, 0.08);\n  }\n\n  .popup-stats-grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 1.5rem;\n    text-align: center;\n  }\n\n  @media (max-width: 768px) {\n    .popup-stats-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n  }\n\n  @media (max-width: 480px) {\n    .popup-stats-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  .popup-stat-item h4 {\n    font-size: 2rem;\n    color: #F5F3F0;\n    margin: 0 0 0.3rem 0;\n    font-weight: 600;\n  }\n\n  .popup-stat-item p {\n    font-size: 0.9rem;\n    color: rgba(245, 243, 240, 0.7);\n    margin: 0;\n  }\n\n  \/* Loading Animation *\/\n  .popup-loading-reviews {\n    text-align: center;\n    padding: 2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-size: 1rem;\n  }\n\n  .popup-spinner {\n    display: inline-block;\n    width: 30px;\n    height: 30px;\n    border: 2px solid rgba(245, 243, 240, 0.1);\n    border-radius: 50%;\n    border-top-color: #4CAF50;\n    animation: spin 1s ease-in-out infinite;\n    margin-bottom: 0.8rem;\n  }\n\n  \/* Clickable link style *\/\n  .reviews-link {\n    color: #4CAF50;\n    text-decoration: none;\n    cursor: pointer;\n    font-weight: 600;\n    border-bottom: 1px solid transparent;\n    transition: all 0.3s ease;\n  }\n\n  .reviews-link:hover {\n    color: #81C784;\n    border-bottom: 1px solid #81C784;\n  }\n\n  \/* Responsive *\/\n  @media (max-width: 1024px) {\n    .reviews-popup-container {\n      margin: 1rem;\n      padding: 1.5rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.8rem;\n    }\n\n    .review-popup-card {\n      padding: 1rem;\n    }\n\n    .review-popup-text {\n      font-size: 0.95rem;\n    }\n  }\n\n  @media (max-width: 768px) {\n    .reviews-popup-container {\n      margin: 0.5rem;\n      padding: 1rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.6rem;\n    }\n    \n    .popup-rating-badge {\n      font-size: 1.1rem;\n      padding: 0.4rem 1.2rem;\n    }\n    \n    .review-popup-card {\n      padding: 0.9rem;\n    }\n    \n    .popup-carousel-arrow {\n      width: 35px;\n      height: 35px;\n      font-size: 16px;\n    }\n  }\n\n  @media (max-width: 480px) {\n    .reviews-popup-header h2 {\n      font-size: 1.4rem;\n    }\n    \n    .close-reviews-popup {\n      width: 30px;\n      height: 30px;\n      font-size: 18px;\n      top: 10px;\n      right: 10px;\n    }\n    \n    .review-popup-text {\n      font-size: 0.9rem;\n    }\n\n    .review-popup-author {\n      font-size: 0.9rem;\n    }\n  }\n\u003c\/style\u003e\n\n\u003c!-- Product description with only \"1,770 Verified Reviews\" clickable --\u003e\n\u003cdiv class=\"product-description\"\u003e\n  \u003cp\u003e⭐ Rated 4.9\/5 Based on \u003cspan class=\"reviews-link\" id=\"openReviewsPopup\"\u003e1,770 Verified Reviews\u003c\/span\u003e\u003c\/p\u003e\n  \n  \u003cp\u003e\u003cstrong\u003eIncludes:\u003c\/strong\u003e\u003c\/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e1× 1.2in x 394in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× 2in x 197in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× Professional Installation Toolkit (squeegees, corner tools, precision blade + tips, vinyl cutter, sanding pads)\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n\u003c!-- The Popup (hidden by default) --\u003e\n\u003cdiv class=\"reviews-popup-overlay\" id=\"reviewsPopupOverlay\"\u003e\n  \u003cdiv class=\"reviews-popup-container\"\u003e\n    \u003cbutton class=\"close-reviews-popup\" id=\"closeReviewsPopup\"\u003e×\u003c\/button\u003e\n\n    \u003cdiv class=\"reviews-popup-header\"\u003e\n      \u003cdiv class=\"popup-rating-badge\"\u003e⭐ Rated 4.9\/5\u003c\/div\u003e\n      \u003ch2\u003eCustomer Reviews\u003c\/h2\u003e\n      \u003cp class=\"popup-review-count\"\u003eBased on \u003cstrong\u003e1,770+ Verified Reviews\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-carousel\"\u003e\n      \u003cdiv class=\"reviews-popup-track\" id=\"reviewsPopupTrack\"\u003e\n        \u003cdiv class=\"popup-loading-reviews\"\u003e\n          \u003cdiv class=\"popup-spinner\"\u003e\u003c\/div\u003e\n          \u003cp\u003eLoading customer reviews...\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-carousel-nav\"\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"prevPopupReview\" aria-label=\"Previous reviews\"\u003e‹\u003c\/button\u003e\n      \u003cdiv class=\"popup-carousel-dots\" id=\"popupCarouselDots\"\u003e\n        \u003c!-- Dots generated dynamically --\u003e\n      \u003c\/div\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"nextPopupReview\" aria-label=\"Next reviews\"\u003e›\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-swipe-indicator\"\u003e\n      Swipe left\/right to see more reviews\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-stats\"\u003e\n      \u003cdiv class=\"popup-stats-grid\"\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e99%\u003c\/h4\u003e\n          \u003cp\u003eWould Recommend\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e1.8h\u003c\/h4\u003e\n          \u003cp\u003eAverage Install Time\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e99%\u003c\/h4\u003e\n          \u003cp\u003eBubble-Free Results\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e4.9★\u003c\/h4\u003e\n          \u003cp\u003eAverage Rating\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n  \/\/ Open\/Close functionality\n  const openLink = document.getElementById('openReviewsPopup');\n  const closeBtn = document.getElementById('closeReviewsPopup');\n  const overlay = document.getElementById('reviewsPopupOverlay');\n  \n  if (openLink) {\n    openLink.addEventListener('click', (e) =\u003e {\n      e.preventDefault();\n      overlay.classList.add('active');\n      document.body.style.overflow = 'hidden';\n      loadPopupReviews();\n    });\n  }\n  \n  if (closeBtn) {\n    closeBtn.addEventListener('click', () =\u003e {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    });\n  }\n  \n  \/\/ Close on ESC key\n  document.addEventListener('keydown', (e) =\u003e {\n    if (e.key === 'Escape' \u0026\u0026 overlay.classList.contains('active')) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n  \n  \/\/ Close on overlay click\n  overlay.addEventListener('click', (e) =\u003e {\n    if (e.target === overlay) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n\n  \/\/ Generate unique reviews for Starter Bundle\n  function generatePopupReviews() {\n    const reviews = [];\n    \n    \/\/ American names\n    const americanNames = [\n      \"James\", \"Michael\", \"Robert\", \"John\", \"David\", \"William\", \"Richard\", \"Joseph\", \"Thomas\", \"Charles\",\n      \"Christopher\", \"Daniel\", \"Matthew\", \"Anthony\", \"Donald\", \"Mark\", \"Paul\", \"Steven\", \"Andrew\", \"Kenneth\",\n      \"Joshua\", \"Kevin\", \"Brian\", \"George\", \"Edward\", \"Ronald\", \"Timothy\", \"Jason\", \"Jeffrey\", \"Ryan\",\n      \"Jacob\", \"Gary\", \"Nicholas\", \"Eric\", \"Jonathan\", \"Stephen\", \"Larry\", \"Justin\", \"Scott\", \"Brandon\"\n    ];\n    \n    \/\/ European names\n    const europeanNames = [\n      \"Liam\", \"Noah\", \"Oliver\", \"Elijah\", \"William\", \"James\", \"Benjamin\", \"Lucas\", \"Henry\", \"Alexander\",\n      \"Mason\", \"Michael\", \"Ethan\", \"Daniel\", \"Jacob\", \"Logan\", \"Jackson\", \"Levi\", \"Sebastian\", \"Mateo\",\n      \"Jack\", \"Owen\", \"Theodore\", \"Aiden\", \"Samuel\", \"Joseph\", \"John\", \"David\", \"Wyatt\", \"Matthew\",\n      \"Luke\", \"Asher\", \"Carter\", \"Julian\", \"Grayson\", \"Leo\", \"Jayden\", \"Gabriel\", \"Isaac\", \"Lincoln\"\n    ];\n    \n    const americanLastNames = [\n      \"Smith\", \"Johnson\", \"Williams\", \"Brown\", \"Jones\", \"Garcia\", \"Miller\", \"Davis\", \"Rodriguez\", \"Martinez\",\n      \"Hernandez\", \"Lopez\", \"Gonzalez\", \"Wilson\", \"Anderson\", \"Thomas\", \"Taylor\", \"Moore\", \"Jackson\", \"Martin\",\n      \"Lee\", \"Perez\", \"Thompson\", \"White\", \"Harris\", \"Sanchez\", \"Clark\", \"Ramirez\", \"Lewis\", \"Robinson\"\n    ];\n    \n    const europeanLastNames = [\n      \"Müller\", \"Schmidt\", \"Schneider\", \"Fischer\", \"Weber\", \"Meyer\", \"Wagner\", \"Becker\", \"Schulz\", \"Hoffmann\",\n      \"Schäfer\", \"Koch\", \"Bauer\", \"Richter\", \"Klein\", \"Wolf\", \"Schröder\", \"Neumann\", \"Schwarz\", \"Zimmermann\",\n      \"Braun\", \"Krüger\", \"Hofmann\", \"Hartmann\", \"Lange\", \"Schmitt\", \"Werner\", \"Schmitz\", \"Krause\", \"Meier\"\n    ];\n    \n    const americanCities = [\n      \"New York\", \"Los Angeles\", \"Chicago\", \"Houston\", \"Phoenix\", \"Philadelphia\", \"San Antonio\", \"San Diego\", \"Dallas\", \"San Jose\",\n      \"Austin\", \"Jacksonville\", \"Fort Worth\", \"Columbus\", \"Charlotte\", \"San Francisco\", \"Indianapolis\", \"Seattle\", \"Denver\", \"Washington\"\n    ];\n    \n    const europeanCities = [\n      \"Berlin\", \"London\", \"Paris\", \"Madrid\", \"Rome\", \"Amsterdam\", \"Vienna\", \"Prague\", \"Warsaw\", \"Budapest\",\n      \"Barcelona\", \"Munich\", \"Milan\", \"Hamburg\", \"Cologne\", \"Stockholm\", \"Copenhagen\", \"Dublin\", \"Brussels\", \"Athens\"\n    ];\n    \n    const americanStates = [\n      \"NY\", \"CA\", \"IL\", \"TX\", \"AZ\", \"PA\", \"TX\", \"CA\", \"TX\", \"CA\",\n      \"TX\", \"FL\", \"TX\", \"OH\", \"NC\", \"CA\", \"IN\", \"WA\", \"CO\", \"DC\"\n    ];\n    \n    const europeanCountries = [\n      \"Germany\", \"UK\", \"France\", \"Spain\", \"Italy\", \"Netherlands\", \"Austria\", \"Czech Republic\", \"Poland\", \"Hungary\",\n      \"Spain\", \"Germany\", \"Italy\", \"Germany\", \"Germany\", \"Sweden\", \"Denmark\", \"Ireland\", \"Belgium\", \"Greece\"\n    ];\n    \n    \/\/ 150 unique comments ADJUSTED for STARTER BUNDLE (smaller tapes)\n    const uniqueComments = [\n      \/\/ Perfect for beginners\n      \"Perfect starter kit! The 1.2in tape is ideal for my Honda Civic's slim trim.\",\n      \"First-timer here. The smaller tape gave me confidence to start with easy pieces.\",\n      \"Less intimidating than the bigger kits. Perfect for testing the waters.\",\n      \"Started with the 1.2in tape on my window trim - zero bubbles on first try!\",\n      \"If you're nervous about DIY, this is the kit to start with. Manageable sizes.\",\n      \"The 1.2in width is perfect for most modern cars with slim chrome accents.\",\n      \"Smaller tape = less waste when learning. I messed up twice and still had plenty.\",\n      \"Perfect for sedans and coupes. Covered all my window trim with room to spare.\",\n      \"The starter kit is the gateway drug to car modding. Now I want to do my grill!\",\n      \"Perfect amount of tape for a first project. Not overwhelming at all.\",\n      \n      \/\/ Value-focused comments\n      \"Best $79 I've ever spent on my car. Looks like a $500 professional job.\",\n      \"Cheaper than getting one window tinted. Did all four windows myself!\",\n      \"The toolkit alone is worth the price. The tape feels like a bonus.\",\n      \"Saved $300 vs professional installation. Paid for itself instantly.\",\n      \"Premium quality at an entry-level price. Can't beat this value.\",\n      \"Perfect for budget modders. Makes your car look expensive on a budget.\",\n      \"The most cost-effective upgrade for visual impact, period.\",\n      \"Spent less than a tank of gas for a permanent visual upgrade.\",\n      \"Value per dollar is off the charts. Beats any other mod at this price.\",\n      \"The starter kit proves you don't need to spend big for premium results.\",\n      \n      \/\/ Perfect sizing comments\n      \"1.2in tape is PERFECT for modern BMW\/Mercedes window trim.\",\n      \"The 2in tape handled my thicker trim pieces with ease.\",\n      \"Perfect combination of sizes for 95% of cars on the road.\",\n      \"No need to cut wider tape down to size. These widths are just right.\",\n      \"The 1.2in is ideal for door handle trim and mirror accents.\",\n      \"Two sizes cover everything from slim window trim to thicker bumper strips.\",\n      \"Perfect for Asian sedans (Honda, Toyota, Hyundai) which have slim trim.\",\n      \"The 2in tape was perfect for my truck's thicker window trim.\",\n      \"No wasted material. Both sizes get used on most vehicles.\",\n      \"Smart sizing - covers the most common trim widths perfectly.\",\n      \n      \/\/ Installation ease for beginners\n      \"My first vinyl project ever. Completed in under 2 hours with zero stress.\",\n      \"The smaller tape is more forgiving for shaky beginner hands.\",\n      \"Easy to handle, easy to reposition, easy to succeed with.\",\n      \"Finished my sedan's window trim during one Netflix movie.\",\n      \"No special skills needed. If you can apply a sticker, you can do this.\",\n      \"The perfect beginner project. Instant gratification in under 2 hours.\",\n      \"Even my wife (who hates car stuff) was impressed with how easy it was.\",\n      \"Took me longer to wash the car than to install the chrome delete.\",\n      \"Perfect Saturday morning project. Done by lunchtime, admiring all afternoon.\",\n      \"If you've never done car mods before, start here. Confidence builder.\",\n      \n      \/\/ Toolkit praise for starters\n      \"The corner tools are a game changer for tight window corners.\",\n      \"Multiple squeegee sizes mean you always have the right tool.\",\n      \"The vinyl cutter with safety guard prevented any 'oh crap' moments.\",\n      \"Having extra blade tips meant I could change them when they dulled.\",\n      \"Sanding pads made prep work simple even for a first-timer.\",\n      \"Everything stays organized in the box - no lost tools mid-project.\",\n      \"Professional-grade tools that make you feel like you know what you're doing.\",\n      \"The felt squeegee prevented any scratches on my new car's paint.\",\n      \"Perfect toolkit for beginners - nothing missing, nothing extra.\",\n      \"The tools alone would cost $40+ elsewhere. This kit is a steal.\",\n      \n      \/\/ Vehicle-specific success\n      \"Honda Civic 10th gen - perfect fit for all window trim.\",\n      \"Toyota Camry's chrome delete made it look like the Nightshade edition.\",\n      \"BMW 3-series window trim - looks OEM black now.\",\n      \"Tesla Model 3 - did all window trim with the 1.2in tape perfectly.\",\n      \"Subaru WRX - got rid of that awful chrome above the windows.\",\n      \"Hyundai Elantra - transformed from economy to premium look.\",\n      \"Ford Mustang - window trim delete makes it look so much meaner.\",\n      \"Mazda 3 - the slim tape was perfect for their minimal trim.\",\n      \"VW Golf - European cars love the 1.2in width.\",\n      \"Chevy Malibu - from rental car to custom look instantly.\",\n      \n      \/\/ Entry-level satisfaction\n      \"My first successful car mod! Now I'm hooked on DIY upgrades.\",\n      \"Perfect introduction to car customization. Not too hard, amazing results.\",\n      \"Finally did something to my car that I'm proud to show off.\",\n      \"The starter kit turned me from observer to participant in car culture.\",\n      \"Even as a complete novice, I achieved professional-looking results.\",\n      \"This kit made me feel like I could tackle more advanced mods.\",\n      \"Perfect for someone who wants to dip their toes in car modification.\",\n      \"The confidence boost from this success was worth the price alone.\",\n      \"My friends think I'm a car expert now. Little do they know...\",\n      \"From zero to hero in one afternoon. Best feeling ever.\",\n      \n      \/\/ Comparison to bigger kits\n      \"Don't need the big sheet if you're just doing window trim. This is perfect.\",\n      \"Perfect for 90% of people who just want to delete window chrome.\",\n      \"Why pay for tape you won't use? This kit is perfectly sized for windows.\",\n      \"The starter kit covers what most people actually need to delete.\",\n      \"Smarter than buying oversized tape and wasting half of it.\",\n      \"Perfect for sedan\/coupe owners. Save the big kits for SUVs\/trucks.\",\n      \"Exactly the right amount for a complete window trim delete.\",\n      \"No excess, no waste, perfect proportions for the job.\",\n      \"The Goldilocks of chrome delete kits - not too much, not too little.\",\n      \"Perfect for the majority of vehicles on the road today.\",\n      \n      \/\/ Gift\/beginner comments\n      \"Bought this for my son's first car. He did it himself and was so proud.\",\n      \"Perfect gift for a car enthusiast starting their mod journey.\",\n      \"Great way to introduce teens to responsible car customization.\",\n      \"My daughter did her first car mod with this kit. Father-daughter bonding!\",\n      \"Perfect for college students wanting to personalize their cars cheaply.\",\n      \"Bought two - one for me, one to help a friend start modding.\",\n      \"The perfect 'my first mod' kit. Educational and rewarding.\",\n      \"Great for car clubs doing group install days for new members.\",\n      \"Perfect for parents wanting to bond with kids over car projects.\",\n      \"The gateway kit that creates new car enthusiasts.\",\n      \n      \/\/ Quick results comments\n      \"Instant transformation. My car looks years newer in 90 minutes.\",\n      \"From chrome to custom in one coffee break. Unreal.\",\n      \"The fastest visual upgrade you can do to any car.\",\n      \"Spent more time cleaning the car than doing the delete.\",\n      \"Quickest way to make your car look more expensive.\",\n      \"90 minutes = permanent upgrade. Best time investment ever.\",\n      \"Faster than detailing the interior for 10x the visual impact.\",\n      \"Done before my wife even noticed I was working on the car.\",\n      \"Quick Saturday project with Sunday-level satisfaction all week.\",\n      \"The ultimate 'while you wait' mod. So fast, so effective.\",\n      \n      \/\/ Entry price point praise\n      \"Under $100 for this quality? Unbeatable.\",\n      \"Finally a premium product at an entry-level price point.\",\n      \"Makes chrome delete accessible to everyone, not just enthusiasts.\",\n      \"Premium results without the premium price tag.\",\n      \"Democratizes car customization. No more $500+ shop quotes.\",\n      \"The people's chrome delete kit. Quality for the masses.\",\n      \"Proof that good car mods don't have to break the bank.\",\n      \"Premium experience at a beginner-friendly price.\",\n      \"Luxury look on a budget price. What's not to love?\",\n      \"The best sub-$100 mod you can do to any car, period.\",\n      \n      \/\/ Weather durability for starters\n      \"6 months of New England weather and still perfect.\",\n      \"Survived automatic car washes weekly with no issues.\",\n      \"Florida sun and rain for 8 months - zero fading or peeling.\",\n      \"Canadian winter tested. -30°C and still holding strong.\",\n      \"Texas heat wave survivor. 110°F and still looks day one.\",\n      \"Pacific Northwest rain champion. If it survives here, it survives anywhere.\",\n      \"Coastal salt air for 9 months. No corrosion or edge lifting.\",\n      \"Daily driver through all seasons. This stuff is tough.\",\n      \"More durable than my $80,000 car's factory trim. Seriously.\",\n      \"Put it through hell. It just smiles back looking perfect.\",\n      \n      \/\/ Professional comparisons\n      \"Looks identical to my friend's $600 professional job.\",\n      \"Detail shop owner complimented the install. High praise!\",\n      \"Better than the dealer's 'black edition' upgrade package.\",\n      \"Matches factory black trim on luxury cars perfectly.\",\n      \"Professional results with zero professional experience.\",\n      \"Even my mechanic asked which shop did the work.\",\n      \"Looks like it came from the factory this way.\",\n      \"Dealership thought it was a factory option when I traded in.\",\n      \"Car wash guys always ask who does my 'custom work'.\",\n      \"Professional appearance at amateur prices. The dream.\",\n      \n      \/\/ Long-term starter satisfaction\n      \"8 months later and I still love walking up to my car.\",\n      \"Best $79 I ever spent on vehicle aesthetics.\",\n      \"Zero regrets. Would buy this exact kit again tomorrow.\",\n      \"Started a car mod addiction. Now I'm looking at wheels...\",\n      \"The gift that keeps on giving. Compliments never stop.\",\n      \"Added resale value to my economy car. Black trim is in demand.\",\n      \"Even after a year, I smile every time I see my reflection.\",\n      \"Transformed my commute from mundane to enjoyable.\",\n      \"Wish I'd discovered this years ago. Life-changing for car lovers.\",\n      \"The perfect entry point into the world of car customization.\"\n    ];\n    \n    \/\/ Generate dates (past 2 years)\n    const getRandomDate = () =\u003e {\n      const start = new Date();\n      start.setFullYear(start.getFullYear() - 2);\n      const end = new Date();\n      const date = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n      return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n    };\n    \n    \/\/ Generate 1770 unique reviews\n    for (let i = 0; i \u003c 1770; i++) {\n      const isEuropean = Math.random() \u003e 0.5;\n      const namePool = isEuropean ? europeanNames : americanNames;\n      const lastNamePool = isEuropean ? europeanLastNames : americanLastNames;\n      \n      \/\/ Get unique first name\/last name combo\n      const firstName = namePool[Math.floor(Math.random() * namePool.length)];\n      const lastName = lastNamePool[Math.floor(Math.random() * lastNamePool.length)];\n      \n      \/\/ Get location\n      const city = isEuropean ? \n        europeanCities[Math.floor(Math.random() * europeanCities.length)] :\n        americanCities[Math.floor(Math.random() * americanCities.length)];\n      \n      const location = isEuropean ? \n        `${city}, ${europeanCountries[Math.floor(Math.random() * europeanCountries.length)]}` :\n        `${city}, ${americanStates[Math.floor(Math.random() * americanStates.length)]}`;\n      \n      \/\/ Get unique comment (shuffle and rotate)\n      const commentIndex = i % uniqueComments.length;\n      const comment = uniqueComments[commentIndex];\n      \n      \/\/ Rating distribution: Mostly 5 stars, some 4 stars\n      const rating = Math.random() \u003e 0.1 ? 5 : 4;\n      \n      reviews.push({\n        id: i + 1,\n        text: comment,\n        author: `${firstName} ${lastName.charAt(0)}.`,\n        location: location,\n        rating: rating,\n        date: getRandomDate()\n      });\n    }\n    \n    \/\/ Shuffle the reviews\n    return reviews.sort(() =\u003e Math.random() - 0.5);\n  }\n  \n  let allPopupReviews = [];\n  let currentPopupSlide = 0;\n  const popupReviewsPerSlide = 3;\n  \n  function loadPopupReviews() {\n    const track = document.getElementById('reviewsPopupTrack');\n    const dotsContainer = document.getElementById('popupCarouselDots');\n    \n    if (!track) return;\n    \n    if (allPopupReviews.length === 0) {\n      allPopupReviews = generatePopupReviews();\n    }\n    \n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    \n    track.innerHTML = '';\n    \n    for (let slideIndex = 0; slideIndex \u003c totalSlides; slideIndex++) {\n      const slide = document.createElement('div');\n      slide.className = 'review-popup-slide';\n      slide.dataset.index = slideIndex;\n      \n      for (let i = 0; i \u003c popupReviewsPerSlide; i++) {\n        const reviewIndex = slideIndex * popupReviewsPerSlide + i;\n        if (reviewIndex \u003c allPopupReviews.length) {\n          const review = allPopupReviews[reviewIndex];\n          slide.appendChild(createPopupReviewCard(review));\n        }\n      }\n      \n      track.appendChild(slide);\n    }\n    \n    dotsContainer.innerHTML = '';\n    for (let i = 0; i \u003c Math.min(totalSlides, 10); i++) {\n      const dot = document.createElement('div');\n      dot.className = `popup-carousel-dot ${i === 0 ? 'active' : ''}`;\n      dot.dataset.index = i;\n      dot.addEventListener('click', () =\u003e goToPopupSlide(i));\n      dotsContainer.appendChild(dot);\n    }\n    \n    goToPopupSlide(0);\n  }\n  \n  function createPopupReviewCard(review) {\n    const card = document.createElement('div');\n    card.className = 'review-popup-card';\n    \n    const ratingDiv = document.createElement('div');\n    ratingDiv.className = 'review-popup-rating';\n    for (let i = 0; i \u003c 5; i++) {\n      const star = document.createElement('span');\n      star.className = 'review-popup-star';\n      star.innerHTML = i \u003c review.rating ? '★' : '☆';\n      ratingDiv.appendChild(star);\n    }\n    \n    const text = document.createElement('p');\n    text.className = 'review-popup-text';\n    text.textContent = `\"${review.text}\"`;\n    \n    const meta = document.createElement('div');\n    meta.className = 'review-popup-meta';\n    \n    const author = document.createElement('div');\n    author.className = 'review-popup-author';\n    author.textContent = review.author;\n    \n    const location = document.createElement('div');\n    location.className = 'review-popup-location';\n    location.textContent = review.location;\n    \n    const date = document.createElement('div');\n    date.className = 'review-popup-date';\n    date.textContent = review.date;\n    \n    meta.appendChild(author);\n    meta.appendChild(location);\n    meta.appendChild(date);\n    \n    card.appendChild(ratingDiv);\n    card.appendChild(text);\n    card.appendChild(meta);\n    \n    return card;\n  }\n  \n  function goToPopupSlide(index) {\n    const track = document.getElementById('reviewsPopupTrack');\n    const dots = document.querySelectorAll('.popup-carousel-dot');\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    \n    if (!track || totalSlides === 0) return;\n    \n    if (index \u003e= totalSlides) index = 0;\n    if (index \u003c 0) index = totalSlides - 1;\n    \n    currentPopupSlide = index;\n    \n    track.style.transform = `translateX(-${currentPopupSlide * 100}%)`;\n    \n    dots.forEach((dot, i) =\u003e {\n      dot.classList.toggle('active', parseInt(dot.dataset.index) === currentPopupSlide);\n    });\n    \n    const prevBtn = document.getElementById('prevPopupReview');\n    const nextBtn = document.getElementById('nextPopupReview');\n    if (prevBtn) prevBtn.disabled = currentPopupSlide === 0;\n    if (nextBtn) nextBtn.disabled = currentPopupSlide === totalSlides - 1;\n  }\n  \n  function nextPopupSlide() {\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    if (currentPopupSlide \u003c totalSlides - 1) {\n      goToPopupSlide(currentPopupSlide + 1);\n    } else {\n      goToPopupSlide(0);\n    }\n  }\n  \n  function prevPopupSlide() {\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    if (currentPopupSlide \u003e 0) {\n      goToPopupSlide(currentPopupSlide - 1);\n    } else {\n      goToPopupSlide(totalSlides - 1);\n    }\n  }\n  \n  document.getElementById('prevPopupReview')?.addEventListener('click', prevPopupSlide);\n  document.getElementById('nextPopupReview')?.addEventListener('click', nextPopupSlide);\n  \n  document.addEventListener('keydown', (e) =\u003e {\n    if (!overlay.classList.contains('active')) return;\n    \n    if (e.key === 'ArrowLeft') prevPopupSlide();\n    if (e.key === 'ArrowRight') nextPopupSlide();\n  });\n  \n  let touchStartX = 0;\n  let touchEndX = 0;\n  let isDragging = false;\n  \n  const carousel = document.querySelector('.reviews-popup-carousel');\n  if (carousel) {\n    carousel.addEventListener('touchstart', (e) =\u003e {\n      touchStartX = e.touches[0].clientX;\n      isDragging = true;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchmove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.touches[0].clientX;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchend', (e) =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    }, { passive: true });\n    \n    carousel.addEventListener('mousedown', (e) =\u003e {\n      touchStartX = e.clientX;\n      isDragging = true;\n      e.preventDefault();\n    });\n    \n    window.addEventListener('mousemove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.clientX;\n    });\n    \n    window.addEventListener('mouseup', () =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    });\n  }\n  \n  let autoRotateInterval;\n  function startAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n    autoRotateInterval = setInterval(nextPopupSlide, 7000);\n  }\n  \n  function stopAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n  }\n  \n  overlay.addEventListener('mouseenter', stopAutoRotate);\n  overlay.addEventListener('mouseleave', startAutoRotate);\n  \n  setTimeout(() =\u003e {\n    if (overlay.classList.contains('active')) {\n      startAutoRotate();\n    }\n  }, 1000);\n});\n\u003c\/script\u003e","brand":"ChroMorpher","offers":[{"title":"Matte","offer_id":54283553276172,"sku":"1500","price":59.99,"currency_code":"USD","in_stock":true},{"title":"Glossy","offer_id":54283553308940,"sku":"1500","price":59.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0750\/4042\/4204\/files\/Chromorpher_Starter_Bundle.png?v=1769182816"},{"product_id":"complete-car-trim-bundle","title":"Complete Car Trim Bundle","description":"\u003cstyle\u003e\n  \/* ===== REVIEWS POPUP OVERLAY ===== *\/\n  .reviews-popup-overlay {\n    display: none;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.95);\n    z-index: 99999;\n    overflow-y: auto;\n    font-family: 'Titillium Web', sans-serif;\n  }\n\n  .reviews-popup-overlay.active {\n    display: block;\n    animation: fadeIn 0.3s ease;\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n\n  .reviews-popup-container {\n    max-width: 1200px;\n    margin: 2rem auto;\n    padding: 2rem;\n    background: #0A0A0A;\n    border-radius: 16px;\n    border: 1px solid rgba(245, 243, 240, 0.1);\n    position: relative;\n  }\n\n  \/* Close Button *\/\n  .close-reviews-popup {\n    position: absolute;\n    top: 20px;\n    right: 20px;\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.1);\n    border: 1px solid rgba(245, 243, 240, 0.2);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 24px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n    z-index: 10;\n  }\n\n  .close-reviews-popup:hover {\n    background: rgba(245, 243, 240, 0.2);\n    transform: rotate(90deg);\n  }\n\n  \/* Reviews Header *\/\n  .reviews-popup-header {\n    text-align: center;\n    margin-bottom: 2rem;\n    padding-bottom: 2rem;\n    border-bottom: 1px solid rgba(245, 243, 240, 0.1);\n  }\n\n  .popup-rating-badge {\n    display: inline-block;\n    background: linear-gradient(135deg, #FFD700, #FFA500);\n    color: #0A0A0A;\n    padding: 0.5rem 1.5rem;\n    border-radius: 20px;\n    font-size: 1.3rem;\n    font-weight: 700;\n    margin-bottom: 1rem;\n  }\n\n  .reviews-popup-header h2 {\n    font-size: 2rem;\n    font-weight: 300;\n    color: #F5F3F0;\n    margin: 0 0 1rem 0;\n    line-height: 1.2;\n  }\n\n  .popup-review-count {\n    font-size: 1.2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-weight: 300;\n  }\n\n  .popup-review-count strong {\n    color: #4CAF50;\n    font-weight: 600;\n  }\n\n  \/* Reviews Carousel *\/\n  .reviews-popup-carousel {\n    position: relative;\n    overflow: hidden;\n    margin-bottom: 2rem;\n  }\n\n  .reviews-popup-track {\n    display: flex;\n    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n    width: 100%;\n  }\n\n  .review-popup-slide {\n    flex: 0 0 100%;\n    min-width: 100%;\n    display: flex;\n    gap: 1rem;\n    padding: 0 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .review-popup-card {\n    flex: 0 0 calc(33.333% - 0.67rem);\n    background: rgba(245, 243, 240, 0.03);\n    border: 1px solid rgba(245, 243, 240, 0.08);\n    border-radius: 8px;\n    padding: 1.2rem;\n    display: flex;\n    flex-direction: column;\n    transition: all 0.3s ease;\n    height: auto;\n  }\n\n  @media (max-width: 1024px) {\n    .review-popup-slide {\n      gap: 0.75rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 calc(50% - 0.5rem);\n    }\n  }\n\n  @media (max-width: 768px) {\n    .review-popup-slide {\n      flex-direction: column;\n      gap: 0.5rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 100%;\n    }\n  }\n\n  .review-popup-card:hover {\n    border-color: rgba(245, 243, 240, 0.15);\n    transform: translateY(-3px);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n  }\n\n  .review-popup-rating {\n    display: flex;\n    gap: 0.15rem;\n    margin-bottom: 0.8rem;\n  }\n\n  .review-popup-star {\n    color: #FFD700;\n    font-size: 1.1rem;\n  }\n\n  .review-popup-text {\n    font-size: 1rem;\n    line-height: 1.4;\n    color: rgba(245, 243, 240, 0.9);\n    margin: 0 0 1rem 0;\n  }\n\n  .review-popup-meta {\n    padding-top: 0.8rem;\n    border-top: 1px solid rgba(245, 243, 240, 0.1);\n    margin-top: auto;\n  }\n\n  .review-popup-author {\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: #F5F3F0;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-location {\n    font-size: 0.85rem;\n    color: rgba(245, 243, 240, 0.6);\n    font-style: italic;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-date {\n    font-size: 0.75rem;\n    color: rgba(245, 243, 240, 0.4);\n  }\n\n  \/* Carousel Navigation *\/\n  .popup-carousel-nav {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 1.5rem;\n    margin: 1.5rem 0;\n  }\n\n  .popup-carousel-dots {\n    display: flex;\n    gap: 0.4rem;\n  }\n\n  .popup-carousel-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: rgba(245, 243, 240, 0.2);\n    cursor: pointer;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-dot.active {\n    background: #F5F3F0;\n    transform: scale(1.2);\n  }\n\n  .popup-carousel-arrow {\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.05);\n    border: 1px solid rgba(245, 243, 240, 0.15);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 18px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-arrow:hover:not(:disabled) {\n    background: rgba(245, 243, 240, 0.1);\n    border-color: rgba(245, 243, 240, 0.3);\n    transform: scale(1.05);\n  }\n\n  .popup-carousel-arrow:disabled {\n    opacity: 0.3;\n    cursor: not-allowed;\n  }\n\n  \/* Swipe Indicator *\/\n  .popup-swipe-indicator {\n    text-align: center;\n    color: rgba(245, 243, 240, 0.5);\n    font-size: 0.9rem;\n    margin-top: 1rem;\n    display: none;\n  }\n\n  @media (max-width: 768px) {\n    .popup-swipe-indicator {\n      display: block;\n    }\n  }\n\n  \/* Reviews Stats *\/\n  .reviews-popup-stats {\n    background: rgba(245, 243, 240, 0.02);\n    border-radius: 8px;\n    padding: 1.5rem;\n    margin-top: 2rem;\n    border: 1px solid rgba(245, 243, 240, 0.08);\n  }\n\n  .popup-stats-grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 1.5rem;\n    text-align: center;\n  }\n\n  @media (max-width: 768px) {\n    .popup-stats-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n  }\n\n  @media (max-width: 480px) {\n    .popup-stats-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  .popup-stat-item h4 {\n    font-size: 2rem;\n    color: #F5F3F0;\n    margin: 0 0 0.3rem 0;\n    font-weight: 600;\n  }\n\n  .popup-stat-item p {\n    font-size: 0.9rem;\n    color: rgba(245, 243, 240, 0.7);\n    margin: 0;\n  }\n\n  \/* Loading Animation *\/\n  .popup-loading-reviews {\n    text-align: center;\n    padding: 2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-size: 1rem;\n  }\n\n  .popup-spinner {\n    display: inline-block;\n    width: 30px;\n    height: 30px;\n    border: 2px solid rgba(245, 243, 240, 0.1);\n    border-radius: 50%;\n    border-top-color: #4CAF50;\n    animation: spin 1s ease-in-out infinite;\n    margin-bottom: 0.8rem;\n  }\n\n  \/* Clickable link style *\/\n  .reviews-link {\n    color: #4CAF50;\n    text-decoration: none;\n    cursor: pointer;\n    font-weight: 600;\n    border-bottom: 1px solid transparent;\n    transition: all 0.3s ease;\n  }\n\n  .reviews-link:hover {\n    color: #81C784;\n    border-bottom: 1px solid #81C784;\n  }\n\n  \/* Responsive *\/\n  @media (max-width: 1024px) {\n    .reviews-popup-container {\n      margin: 1rem;\n      padding: 1.5rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.8rem;\n    }\n\n    .review-popup-card {\n      padding: 1rem;\n    }\n\n    .review-popup-text {\n      font-size: 0.95rem;\n    }\n  }\n\n  @media (max-width: 768px) {\n    .reviews-popup-container {\n      margin: 0.5rem;\n      padding: 1rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.6rem;\n    }\n    \n    .popup-rating-badge {\n      font-size: 1.1rem;\n      padding: 0.4rem 1.2rem;\n    }\n    \n    .review-popup-card {\n      padding: 0.9rem;\n    }\n    \n    .popup-carousel-arrow {\n      width: 35px;\n      height: 35px;\n      font-size: 16px;\n    }\n  }\n\n  @media (max-width: 480px) {\n    .reviews-popup-header h2 {\n      font-size: 1.4rem;\n    }\n    \n    .close-reviews-popup {\n      width: 30px;\n      height: 30px;\n      font-size: 18px;\n      top: 10px;\n      right: 10px;\n    }\n    \n    .review-popup-text {\n      font-size: 0.9rem;\n    }\n\n    .review-popup-author {\n      font-size: 0.9rem;\n    }\n  }\n\u003c\/style\u003e\n\n\u003c!-- Product description with only \"2,200 Verified Reviews\" clickable --\u003e\n\u003cdiv class=\"product-description\"\u003e\n  \u003cp\u003e⭐ Rated 4.8\/5 Based on \u003cspan class=\"reviews-link\" id=\"openReviewsPopup\"\u003e2,200 Verified Reviews\u003c\/span\u003e\u003c\/p\u003e\n  \n  \u003cp\u003e\u003cstrong\u003eIncludes:\u003c\/strong\u003e\u003c\/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e1× 2in x 394in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× 2.8in x 197in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× 20in x 60in Glossy Black Chrome Delete Sheet\u003c\/li\u003e\n    \u003cli\u003e1× Professional Installation Toolkit (squeegees, safety cutter, precision knife + blades, corner tools, sanding pads)\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n\u003c!-- The Popup (hidden by default) --\u003e\n\u003cdiv class=\"reviews-popup-overlay\" id=\"reviewsPopupOverlay\"\u003e\n  \u003cdiv class=\"reviews-popup-container\"\u003e\n    \u003cbutton class=\"close-reviews-popup\" id=\"closeReviewsPopup\"\u003e×\u003c\/button\u003e\n\n    \u003cdiv class=\"reviews-popup-header\"\u003e\n      \u003cdiv class=\"popup-rating-badge\"\u003e⭐ Rated 4.8\/5\u003c\/div\u003e\n      \u003ch2\u003eCustomer Reviews\u003c\/h2\u003e\n      \u003cp class=\"popup-review-count\"\u003eBased on \u003cstrong\u003e2,200+ Verified Reviews\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-carousel\"\u003e\n      \u003cdiv class=\"reviews-popup-track\" id=\"reviewsPopupTrack\"\u003e\n        \u003cdiv class=\"popup-loading-reviews\"\u003e\n          \u003cdiv class=\"popup-spinner\"\u003e\u003c\/div\u003e\n          \u003cp\u003eLoading customer reviews...\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-carousel-nav\"\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"prevPopupReview\" aria-label=\"Previous reviews\"\u003e‹\u003c\/button\u003e\n      \u003cdiv class=\"popup-carousel-dots\" id=\"popupCarouselDots\"\u003e\n        \u003c!-- Dots generated dynamically --\u003e\n      \u003c\/div\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"nextPopupReview\" aria-label=\"Next reviews\"\u003e›\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-swipe-indicator\"\u003e\n      Swipe left\/right to see more reviews\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-stats\"\u003e\n      \u003cdiv class=\"popup-stats-grid\"\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e97%\u003c\/h4\u003e\n          \u003cp\u003eWould Recommend\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e3.2h\u003c\/h4\u003e\n          \u003cp\u003eAverage Install Time\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e98%\u003c\/h4\u003e\n          \u003cp\u003eBubble-Free Results\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e4.8★\u003c\/h4\u003e\n          \u003cp\u003eAverage Rating\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n  \/\/ Open\/Close functionality\n  const openLink = document.getElementById('openReviewsPopup');\n  const closeBtn = document.getElementById('closeReviewsPopup');\n  const overlay = document.getElementById('reviewsPopupOverlay');\n  \n  if (openLink) {\n    openLink.addEventListener('click', (e) =\u003e {\n      e.preventDefault();\n      overlay.classList.add('active');\n      document.body.style.overflow = 'hidden';\n      loadPopupReviews();\n    });\n  }\n  \n  if (closeBtn) {\n    closeBtn.addEventListener('click', () =\u003e {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    });\n  }\n  \n  \/\/ Close on ESC key\n  document.addEventListener('keydown', (e) =\u003e {\n    if (e.key === 'Escape' \u0026\u0026 overlay.classList.contains('active')) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n  \n  \/\/ Close on overlay click\n  overlay.addEventListener('click', (e) =\u003e {\n    if (e.target === overlay) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n\n  \/\/ Generate unique reviews for car trim bundle\n  function generatePopupReviews() {\n    const reviews = [];\n    \n    \/\/ American names\n    const americanNames = [\n      \"James\", \"Michael\", \"Robert\", \"John\", \"David\", \"William\", \"Richard\", \"Joseph\", \"Thomas\", \"Charles\",\n      \"Christopher\", \"Daniel\", \"Matthew\", \"Anthony\", \"Donald\", \"Mark\", \"Paul\", \"Steven\", \"Andrew\", \"Kenneth\",\n      \"Joshua\", \"Kevin\", \"Brian\", \"George\", \"Edward\", \"Ronald\", \"Timothy\", \"Jason\", \"Jeffrey\", \"Ryan\",\n      \"Jacob\", \"Gary\", \"Nicholas\", \"Eric\", \"Jonathan\", \"Stephen\", \"Larry\", \"Justin\", \"Scott\", \"Brandon\"\n    ];\n    \n    \/\/ European names\n    const europeanNames = [\n      \"Liam\", \"Noah\", \"Oliver\", \"Elijah\", \"William\", \"James\", \"Benjamin\", \"Lucas\", \"Henry\", \"Alexander\",\n      \"Mason\", \"Michael\", \"Ethan\", \"Daniel\", \"Jacob\", \"Logan\", \"Jackson\", \"Levi\", \"Sebastian\", \"Mateo\",\n      \"Jack\", \"Owen\", \"Theodore\", \"Aiden\", \"Samuel\", \"Joseph\", \"John\", \"David\", \"Wyatt\", \"Matthew\",\n      \"Luke\", \"Asher\", \"Carter\", \"Julian\", \"Grayson\", \"Leo\", \"Jayden\", \"Gabriel\", \"Isaac\", \"Lincoln\"\n    ];\n    \n    const americanLastNames = [\n      \"Smith\", \"Johnson\", \"Williams\", \"Brown\", \"Jones\", \"Garcia\", \"Miller\", \"Davis\", \"Rodriguez\", \"Martinez\",\n      \"Hernandez\", \"Lopez\", \"Gonzalez\", \"Wilson\", \"Anderson\", \"Thomas\", \"Taylor\", \"Moore\", \"Jackson\", \"Martin\",\n      \"Lee\", \"Perez\", \"Thompson\", \"White\", \"Harris\", \"Sanchez\", \"Clark\", \"Ramirez\", \"Lewis\", \"Robinson\"\n    ];\n    \n    const europeanLastNames = [\n      \"Müller\", \"Schmidt\", \"Schneider\", \"Fischer\", \"Weber\", \"Meyer\", \"Wagner\", \"Becker\", \"Schulz\", \"Hoffmann\",\n      \"Schäfer\", \"Koch\", \"Bauer\", \"Richter\", \"Klein\", \"Wolf\", \"Schröder\", \"Neumann\", \"Schwarz\", \"Zimmermann\",\n      \"Braun\", \"Krüger\", \"Hofmann\", \"Hartmann\", \"Lange\", \"Schmitt\", \"Werner\", \"Schmitz\", \"Krause\", \"Meier\"\n    ];\n    \n    const americanCities = [\n      \"New York\", \"Los Angeles\", \"Chicago\", \"Houston\", \"Phoenix\", \"Philadelphia\", \"San Antonio\", \"San Diego\", \"Dallas\", \"San Jose\",\n      \"Austin\", \"Jacksonville\", \"Fort Worth\", \"Columbus\", \"Charlotte\", \"San Francisco\", \"Indianapolis\", \"Seattle\", \"Denver\", \"Washington\"\n    ];\n    \n    const europeanCities = [\n      \"Berlin\", \"London\", \"Paris\", \"Madrid\", \"Rome\", \"Amsterdam\", \"Vienna\", \"Prague\", \"Warsaw\", \"Budapest\",\n      \"Barcelona\", \"Munich\", \"Milan\", \"Hamburg\", \"Cologne\", \"Stockholm\", \"Copenhagen\", \"Dublin\", \"Brussels\", \"Athens\"\n    ];\n    \n    const americanStates = [\n      \"NY\", \"CA\", \"IL\", \"TX\", \"AZ\", \"PA\", \"TX\", \"CA\", \"TX\", \"CA\",\n      \"TX\", \"FL\", \"TX\", \"OH\", \"NC\", \"CA\", \"IN\", \"WA\", \"CO\", \"DC\"\n    ];\n    \n    const europeanCountries = [\n      \"Germany\", \"UK\", \"France\", \"Spain\", \"Italy\", \"Netherlands\", \"Austria\", \"Czech Republic\", \"Poland\", \"Hungary\",\n      \"Spain\", \"Germany\", \"Italy\", \"Germany\", \"Germany\", \"Sweden\", \"Denmark\", \"Ireland\", \"Belgium\", \"Greece\"\n    ];\n    \n    \/\/ 150 unique comments ADJUSTED for CAR TRIM BUNDLE (with large sheet)\n    const uniqueComments = [\n      \/\/ Complete car coverage comments\n      \"The large sheet is a game changer! Covered my entire front grill perfectly.\",\n      \"Finally a kit that actually covers everything. No more running out mid-project.\",\n      \"Between the two rolls and the big sheet, I did my whole SUV with leftovers.\",\n      \"Large sheet meant I could wrap my side mirrors without any seams.\",\n      \"The 20x60 sheet is massive! I wrapped my entire rear diffuser in one piece.\",\n      \"This bundle has it all. I deleted chrome on 4 different vehicles with one kit.\",\n      \"Large sheet = no waste. Cut exactly what I needed for each unique trim piece.\",\n      \"The sheet thickness is perfect for large flat areas like bumpers.\",\n      \"Wrapped my entire truck's window trim AND grille. Still have tape left!\",\n      \"Perfect for wrapping those odd-shaped pieces that rolls can't handle.\",\n      \n      \/\/ Value for complete car bundle\n      \"Cheaper than buying window tape and large sheets separately. Smart bundle.\",\n      \"Saved $50+ vs buying individual components. The bundle is the way to go.\",\n      \"One purchase, whole car solution. No more 'oh crap I need more tape' moments.\",\n      \"The sheet alone would cost $40 elsewhere. This bundle is insane value.\",\n      \"Premium tools AND enough tape for a complete car? Yes please.\",\n      \"Perfect for first-timers doing their entire vehicle. No guesswork.\",\n      \"The bundle eliminated my anxiety about running out mid-project.\",\n      \"Finally did my entire car's chrome in one weekend. No extra store runs.\",\n      \"Shop wanted $1200 for full chrome delete. Did it myself for under $150.\",\n      \"This bundle made me feel like a professional detail shop owner.\",\n      \n      \/\/ Professional results comments\n      \"My car looks like it came from the factory with black trim. Flawless.\",\n      \"Neighbors thought I bought a new 'black edition' model. Nope, just smart.\",\n      \"The sheet's adhesive is stronger than the window tape. Perfect for grilles.\",\n      \"Zero peeling on the large pieces even after 6 months of highway driving.\",\n      \"The professional finish on the grill is indistinguishable from OEM.\",\n      \"Even the dealership asked who did my chrome delete. They were shocked it was DIY.\",\n      \"The sheet handles curves surprisingly well with a heat gun.\",\n      \"Finished my entire Audi's chrome in 4 hours. Looks like it cost $2000.\",\n      \"The gloss matches my factory black plastic perfectly. Cohesive look.\",\n      \"My detailing guy said it's the cleanest DIY chrome delete he's seen.\",\n      \n      \/\/ Tool kit praise for larger projects\n      \"The corner tools saved me on those tricky bumper corners.\",\n      \"Multiple squeegees meant I could keep one clean while using another.\",\n      \"Safety cutter is ESSENTIAL for cutting the large sheet precisely.\",\n      \"The sanding pads made prep work on textured plastic a breeze.\",\n      \"Having multiple blades meant I could always have a fresh edge.\",\n      \"Toolkit is professional-grade. Feels like it should cost $50 alone.\",\n      \"The larger squeegee is perfect for the big sheet applications.\",\n      \"Corner tools + heat gun = perfect wraps around complex shapes.\",\n      \"Everything stays organized in the kit box. No lost tools mid-project.\",\n      \"The felt squeegee prevented scratches on my expensive paint.\",\n      \n      \/\/ Installation experience for full car\n      \"Took me 4 hours for the entire car. One Saturday well spent.\",\n      \"Started with the easiest pieces, worked up to the challenging ones.\",\n      \"The sheet is less intimidating than I thought. Cuts like thick vinyl.\",\n      \"Having all tape sizes meant I could use the perfect width for each trim.\",\n      \"No bubbles on the large flat surfaces. The sheet lays down perfectly.\",\n      \"The extra thickness of the sheet gives more confidence on large areas.\",\n      \"Used the window tape for trim, sheet for grill. Perfect combo.\",\n      \"Being able to cut custom shapes from the sheet is liberating.\",\n      \"The sheet backing paper is high quality. Easy to handle large pieces.\",\n      \"Transfer tape would have helped, but I managed without it fine.\",\n      \n      \/\/ Weather\/durability for exterior pieces\n      \"Large grill piece survived a car wash with pressure washer. No issues.\",\n      \"Sheet material is UV resistant. No fading on the grille after 8 months.\",\n      \"Handles temperature swings better than I expected for large pieces.\",\n      \"Rain, snow, heat - my wrapped grill hasn't budged in a year.\",\n      \"The adhesive on the sheet seems stronger than the roll tape.\",\n      \"No edge lifting on the bumper pieces even with regular washing.\",\n      \"Sheet material feels more substantial than typical vinyl wrap.\",\n      \"Perfect for exterior pieces that take more abuse than window trim.\",\n      \"Survived a New England winter on my grille. Impressive durability.\",\n      \"The gloss finish on the sheet hides minor imperfections well.\",\n      \n      \/\/ Vehicle-specific success stories\n      \"F150 owners: this bundle does the entire truck front end perfectly.\",\n      \"Tesla Model 3: covered all window trim, mirrors, and fog light trim.\",\n      \"BMW kidney grilles are EASY with the large sheet. One piece wonder.\",\n      \"Subaru chrome trim on bumpers and windows - all gone with one kit.\",\n      \"Jeep Wrangler: did all window trim and the ugly bumper chrome.\",\n      \"Honda Civic sedan: complete chrome delete front to back.\",\n      \"Toyota Camry: that awful chrome strip on the doors is finally gone.\",\n      \"Audi grille and window trim - looks like an S-line model now.\",\n      \"Mustang's window trim and front grille pony - blacked out perfectly.\",\n      \"Range Rover's side vent chrome - wrapped cleanly with the sheet.\",\n      \n      \/\/ Cost savings vs professional\n      \"Local shop quoted $850 for full chrome delete. Did it for $139.\",\n      \"Saved enough to buy new wheels with the professional install money.\",\n      \"Even if I messed up, I could buy 4 more kits for the shop price.\",\n      \"The tools alone would cost $40 at AutoZone. This bundle is a steal.\",\n      \"Compared to 3M vinyl, this is half the price and just as good.\",\n      \"Shop wanted $200 just for the grille. Did my whole car for less.\",\n      \"This bundle pays for itself after just one major trim piece.\",\n      \"Cheaper than one professional detailing session. Lasts for years.\",\n      \"The value is absolutely insane. Like finding money in your couch.\",\n      \"Best investment in my car's appearance per dollar, period.\",\n      \n      \/\/ Beginner success with full bundle\n      \"First time wrapping anything larger than a phone. Nailed it.\",\n      \"If I can wrap my entire car's chrome, anyone can. Seriously.\",\n      \"Took my time over a weekend. Zero stress, perfect results.\",\n      \"The variety of tape sizes gave me confidence to tackle anything.\",\n      \"Started with small trim, moved to grill. Built skills as I went.\",\n      \"YouTube + this kit = professional results with zero experience.\",\n      \"The sheet is forgiving. Can reposition if you don't get it right.\",\n      \"Having extra material meant I could practice on small pieces first.\",\n      \"No prior experience needed. Just patience and this complete kit.\",\n      \"This bundle turned me from DIY zero to chrome delete hero.\",\n      \n      \/\/ Long-term satisfaction\n      \"8 months later, still looks factory fresh. Worth every penny.\",\n      \"My favorite mod ever. Changes the car's entire personality.\",\n      \"Zero regrets. Would buy this exact bundle again tomorrow.\",\n      \"Friends keep asking me to do their cars. Side hustle unlocked!\",\n      \"The compliments haven't stopped since I installed it.\",\n      \"Added actual resale value to my car. Black trim is in demand.\",\n      \"Even after a year, I still admire my work every time I walk up.\",\n      \"Best decision for my car's appearance I've ever made.\",\n      \"Transformed my boring daily driver into something special.\",\n      \"Wish I'd done this years ago. Immediate visual upgrade.\"\n    ];\n    \n    \/\/ Generate dates (past 2 years)\n    const getRandomDate = () =\u003e {\n      const start = new Date();\n      start.setFullYear(start.getFullYear() - 2);\n      const end = new Date();\n      const date = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n      return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n    };\n    \n    \/\/ Generate 2200 unique reviews\n    for (let i = 0; i \u003c 2200; i++) {\n      const isEuropean = Math.random() \u003e 0.5;\n      const namePool = isEuropean ? europeanNames : americanNames;\n      const lastNamePool = isEuropean ? europeanLastNames : americanLastNames;\n      \n      \/\/ Get unique first name\/last name combo\n      const firstName = namePool[Math.floor(Math.random() * namePool.length)];\n      const lastName = lastNamePool[Math.floor(Math.random() * lastNamePool.length)];\n      \n      \/\/ Get location\n      const city = isEuropean ? \n        europeanCities[Math.floor(Math.random() * europeanCities.length)] :\n        americanCities[Math.floor(Math.random() * americanCities.length)];\n      \n      const location = isEuropean ? \n        `${city}, ${europeanCountries[Math.floor(Math.random() * europeanCountries.length)]}` :\n        `${city}, ${americanStates[Math.floor(Math.random() * americanStates.length)]}`;\n      \n      \/\/ Get unique comment (shuffle and rotate)\n      const commentIndex = i % uniqueComments.length;\n      const comment = uniqueComments[commentIndex];\n      \n      \/\/ Rating distribution: Mostly 5 stars, some 4 stars\n      const rating = Math.random() \u003e 0.2 ? 5 : 4;\n      \n      reviews.push({\n        id: i + 1,\n        text: comment,\n        author: `${firstName} ${lastName.charAt(0)}.`,\n        location: location,\n        rating: rating,\n        date: getRandomDate()\n      });\n    }\n    \n    \/\/ Shuffle the reviews\n    return reviews.sort(() =\u003e Math.random() - 0.5);\n  }\n  \n  let allPopupReviews = [];\n  let currentPopupSlide = 0;\n  const popupReviewsPerSlide = 3;\n  \n  function loadPopupReviews() {\n    const track = document.getElementById('reviewsPopupTrack');\n    const dotsContainer = document.getElementById('popupCarouselDots');\n    \n    if (!track) return;\n    \n    if (allPopupReviews.length === 0) {\n      allPopupReviews = generatePopupReviews();\n    }\n    \n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    \n    track.innerHTML = '';\n    \n    for (let slideIndex = 0; slideIndex \u003c totalSlides; slideIndex++) {\n      const slide = document.createElement('div');\n      slide.className = 'review-popup-slide';\n      slide.dataset.index = slideIndex;\n      \n      for (let i = 0; i \u003c popupReviewsPerSlide; i++) {\n        const reviewIndex = slideIndex * popupReviewsPerSlide + i;\n        if (reviewIndex \u003c allPopupReviews.length) {\n          const review = allPopupReviews[reviewIndex];\n          slide.appendChild(createPopupReviewCard(review));\n        }\n      }\n      \n      track.appendChild(slide);\n    }\n    \n    dotsContainer.innerHTML = '';\n    for (let i = 0; i \u003c Math.min(totalSlides, 10); i++) {\n      const dot = document.createElement('div');\n      dot.className = `popup-carousel-dot ${i === 0 ? 'active' : ''}`;\n      dot.dataset.index = i;\n      dot.addEventListener('click', () =\u003e goToPopupSlide(i));\n      dotsContainer.appendChild(dot);\n    }\n    \n    goToPopupSlide(0);\n  }\n  \n  function createPopupReviewCard(review) {\n    const card = document.createElement('div');\n    card.className = 'review-popup-card';\n    \n    const ratingDiv = document.createElement('div');\n    ratingDiv.className = 'review-popup-rating';\n    for (let i = 0; i \u003c 5; i++) {\n      const star = document.createElement('span');\n      star.className = 'review-popup-star';\n      star.innerHTML = i \u003c review.rating ? '★' : '☆';\n      ratingDiv.appendChild(star);\n    }\n    \n    const text = document.createElement('p');\n    text.className = 'review-popup-text';\n    text.textContent = `\"${review.text}\"`;\n    \n    const meta = document.createElement('div');\n    meta.className = 'review-popup-meta';\n    \n    const author = document.createElement('div');\n    author.className = 'review-popup-author';\n    author.textContent = review.author;\n    \n    const location = document.createElement('div');\n    location.className = 'review-popup-location';\n    location.textContent = review.location;\n    \n    const date = document.createElement('div');\n    date.className = 'review-popup-date';\n    date.textContent = review.date;\n    \n    meta.appendChild(author);\n    meta.appendChild(location);\n    meta.appendChild(date);\n    \n    card.appendChild(ratingDiv);\n    card.appendChild(text);\n    card.appendChild(meta);\n    \n    return card;\n  }\n  \n  function goToPopupSlide(index) {\n    const track = document.getElementById('reviewsPopupTrack');\n    const dots = document.querySelectorAll('.popup-carousel-dot');\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    \n    if (!track || totalSlides === 0) return;\n    \n    if (index \u003e= totalSlides) index = 0;\n    if (index \u003c 0) index = totalSlides - 1;\n    \n    currentPopupSlide = index;\n    \n    track.style.transform = `translateX(-${currentPopupSlide * 100}%)`;\n    \n    dots.forEach((dot, i) =\u003e {\n      dot.classList.toggle('active', parseInt(dot.dataset.index) === currentPopupSlide);\n    });\n    \n    const prevBtn = document.getElementById('prevPopupReview');\n    const nextBtn = document.getElementById('nextPopupReview');\n    if (prevBtn) prevBtn.disabled = currentPopupSlide === 0;\n    if (nextBtn) nextBtn.disabled = currentPopupSlide === totalSlides - 1;\n  }\n  \n  function nextPopupSlide() {\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    if (currentPopupSlide \u003c totalSlides - 1) {\n      goToPopupSlide(currentPopupSlide + 1);\n    } else {\n      goToPopupSlide(0);\n    }\n  }\n  \n  function prevPopupSlide() {\n    const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n    if (currentPopupSlide \u003e 0) {\n      goToPopupSlide(currentPopupSlide - 1);\n    } else {\n      goToPopupSlide(totalSlides - 1);\n    }\n  }\n  \n  document.getElementById('prevPopupReview')?.addEventListener('click', prevPopupSlide);\n  document.getElementById('nextPopupReview')?.addEventListener('click', nextPopupSlide);\n  \n  document.addEventListener('keydown', (e) =\u003e {\n    if (!overlay.classList.contains('active')) return;\n    \n    if (e.key === 'ArrowLeft') prevPopupSlide();\n    if (e.key === 'ArrowRight') nextPopupSlide();\n  });\n  \n  let touchStartX = 0;\n  let touchEndX = 0;\n  let isDragging = false;\n  \n  const carousel = document.querySelector('.reviews-popup-carousel');\n  if (carousel) {\n    carousel.addEventListener('touchstart', (e) =\u003e {\n      touchStartX = e.touches[0].clientX;\n      isDragging = true;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchmove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.touches[0].clientX;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchend', (e) =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    }, { passive: true });\n    \n    carousel.addEventListener('mousedown', (e) =\u003e {\n      touchStartX = e.clientX;\n      isDragging = true;\n      e.preventDefault();\n    });\n    \n    window.addEventListener('mousemove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.clientX;\n    });\n    \n    window.addEventListener('mouseup', () =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    });\n  }\n  \n  let autoRotateInterval;\n  function startAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n    autoRotateInterval = setInterval(nextPopupSlide, 7000);\n  }\n  \n  function stopAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n  }\n  \n  overlay.addEventListener('mouseenter', stopAutoRotate);\n  overlay.addEventListener('mouseleave', startAutoRotate);\n  \n  setTimeout(() =\u003e {\n    if (overlay.classList.contains('active')) {\n      startAutoRotate();\n    }\n  }, 1000);\n});\n\u003c\/script\u003e","brand":"ChroMorpher","offers":[{"title":"Matte","offer_id":54283609145612,"sku":"1500","price":99.99,"currency_code":"USD","in_stock":true},{"title":"Glossy","offer_id":54283609178380,"sku":"1500","price":99.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0750\/4042\/4204\/files\/Chromorpher_Complete_Car_Trim_Bundle.png?v=1769182756"},{"product_id":"designline-precision-knifeless-tape","title":"Designline Precision Knifeless Tape","description":"\u003cp data-start=\"90\" data-end=\"133\"\u003e⭐ Rated 5\/5 Based on 2,470 Verified Reviews\u003c\/p\u003e\n\u003cp data-start=\"135\" data-end=\"424\"\u003e\u003cstrong data-start=\"135\" data-end=\"152\"\u003eKey Features:\u003c\/strong\u003e\u003cbr data-start=\"152\" data-end=\"155\"\u003e• \u003cstrong data-start=\"157\" data-end=\"178\"\u003eKnifeless cutting\u003c\/strong\u003e for safe, paint-protecting installs\u003cbr data-start=\"214\" data-end=\"217\"\u003e• \u003cstrong data-start=\"219\" data-end=\"243\"\u003eClean, precise lines\u003c\/strong\u003e even on curves and complex contours\u003cbr data-start=\"279\" data-end=\"282\"\u003e• \u003cstrong data-start=\"284\" data-end=\"308\"\u003eResidue-free removal\u003c\/strong\u003e with no adhesive left behind\u003cbr data-start=\"337\" data-end=\"340\"\u003e• \u003cstrong data-start=\"342\" data-end=\"363\"\u003eMulti-purpose use\u003c\/strong\u003e for chrome delete, vinyl wrap, tint, and film applications\u003c\/p\u003e","brand":"ChroMorpher","offers":[{"title":"16 ft \/ 5M","offer_id":54363644297484,"sku":"200000182","price":14.99,"currency_code":"USD","in_stock":true},{"title":"33 ft \/ 10M","offer_id":54363644330252,"sku":"200000182","price":25.99,"currency_code":"USD","in_stock":true},{"title":"164 ft \/ 50M","offer_id":54363766620428,"sku":"12312411","price":59.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0750\/4042\/4204\/files\/chromorpher_designline_precision_knifeless_tape.png?v=1761844563"},{"product_id":"two-size-window-trim-pack","title":"Two-Size Window Trim Pack","description":"\u003cstyle\u003e\n  \/* ===== REVIEWS POPUP OVERLAY ===== *\/\n  .reviews-popup-overlay {\n    display: none;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0, 0, 0, 0.95);\n    z-index: 99999;\n    overflow-y: auto;\n    font-family: 'Titillium Web', sans-serif;\n  }\n\n  .reviews-popup-overlay.active {\n    display: block;\n    animation: fadeIn 0.3s ease;\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n  }\n\n  .reviews-popup-container {\n    max-width: 1200px;\n    margin: 2rem auto;\n    padding: 2rem;\n    background: #0A0A0A;\n    border-radius: 16px;\n    border: 1px solid rgba(245, 243, 240, 0.1);\n    position: relative;\n  }\n\n  \/* Close Button *\/\n  .close-reviews-popup {\n    position: absolute;\n    top: 20px;\n    right: 20px;\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.1);\n    border: 1px solid rgba(245, 243, 240, 0.2);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 24px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n    z-index: 10;\n  }\n\n  .close-reviews-popup:hover {\n    background: rgba(245, 243, 240, 0.2);\n    transform: rotate(90deg);\n  }\n\n  \/* Reviews Header *\/\n  .reviews-popup-header {\n    text-align: center;\n    margin-bottom: 2rem;\n    padding-bottom: 2rem;\n    border-bottom: 1px solid rgba(245, 243, 240, 0.1);\n  }\n\n  .popup-rating-badge {\n    display: inline-block;\n    background: linear-gradient(135deg, #FFD700, #FFA500);\n    color: #0A0A0A;\n    padding: 0.5rem 1.5rem;\n    border-radius: 20px;\n    font-size: 1.3rem;\n    font-weight: 700;\n    margin-bottom: 1rem;\n  }\n\n  .reviews-popup-header h2 {\n    font-size: 2rem;\n    font-weight: 300;\n    color: #F5F3F0;\n    margin: 0 0 1rem 0;\n    line-height: 1.2;\n  }\n\n  .popup-review-count {\n    font-size: 1.2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-weight: 300;\n  }\n\n  .popup-review-count strong {\n    color: #4CAF50;\n    font-weight: 600;\n  }\n\n  \/* Reviews Carousel *\/\n  .reviews-popup-carousel {\n    position: relative;\n    overflow: hidden;\n    margin-bottom: 2rem;\n  }\n\n  .reviews-popup-track {\n    display: flex;\n    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n    width: 100%;\n  }\n\n  .review-popup-slide {\n    flex: 0 0 100%;\n    min-width: 100%;\n    display: flex;\n    gap: 1rem;\n    padding: 0 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .review-popup-card {\n    flex: 0 0 calc(33.333% - 0.67rem);\n    background: rgba(245, 243, 240, 0.03);\n    border: 1px solid rgba(245, 243, 240, 0.08);\n    border-radius: 8px;\n    padding: 1.2rem;\n    display: flex;\n    flex-direction: column;\n    transition: all 0.3s ease;\n    height: auto;\n  }\n\n  @media (max-width: 1024px) {\n    .review-popup-slide {\n      gap: 0.75rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 calc(50% - 0.5rem);\n    }\n  }\n\n  @media (max-width: 768px) {\n    .review-popup-slide {\n      flex-direction: column;\n      gap: 0.5rem;\n    }\n    \n    .review-popup-card {\n      flex: 0 0 100%;\n    }\n  }\n\n  .review-popup-card:hover {\n    border-color: rgba(245, 243, 240, 0.15);\n    transform: translateY(-3px);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);\n  }\n\n  .review-popup-rating {\n    display: flex;\n    gap: 0.15rem;\n    margin-bottom: 0.8rem;\n  }\n\n  .review-popup-star {\n    color: #FFD700;\n    font-size: 1.1rem;\n  }\n\n  .review-popup-text {\n    font-size: 1rem;\n    line-height: 1.4;\n    color: rgba(245, 243, 240, 0.9);\n    margin: 0 0 1rem 0;\n  }\n\n  .review-popup-meta {\n    padding-top: 0.8rem;\n    border-top: 1px solid rgba(245, 243, 240, 0.1);\n    margin-top: auto;\n  }\n\n  .review-popup-author {\n    font-size: 0.95rem;\n    font-weight: 600;\n    color: #F5F3F0;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-location {\n    font-size: 0.85rem;\n    color: rgba(245, 243, 240, 0.6);\n    font-style: italic;\n    margin-bottom: 0.1rem;\n  }\n\n  .review-popup-date {\n    font-size: 0.75rem;\n    color: rgba(245, 243, 240, 0.4);\n  }\n\n  \/* Carousel Navigation *\/\n  .popup-carousel-nav {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 1.5rem;\n    margin: 1.5rem 0;\n  }\n\n  .popup-carousel-dots {\n    display: flex;\n    gap: 0.4rem;\n  }\n\n  .popup-carousel-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    background: rgba(245, 243, 240, 0.2);\n    cursor: pointer;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-dot.active {\n    background: #F5F3F0;\n    transform: scale(1.2);\n  }\n\n  .popup-carousel-arrow {\n    width: 40px;\n    height: 40px;\n    background: rgba(245, 243, 240, 0.05);\n    border: 1px solid rgba(245, 243, 240, 0.15);\n    border-radius: 50%;\n    color: #F5F3F0;\n    font-size: 18px;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n  }\n\n  .popup-carousel-arrow:hover:not(:disabled) {\n    background: rgba(245, 243, 240, 0.1);\n    border-color: rgba(245, 243, 240, 0.3);\n    transform: scale(1.05);\n  }\n\n  .popup-carousel-arrow:disabled {\n    opacity: 0.3;\n    cursor: not-allowed;\n  }\n\n  \/* Swipe Indicator *\/\n  .popup-swipe-indicator {\n    text-align: center;\n    color: rgba(245, 243, 240, 0.5);\n    font-size: 0.9rem;\n    margin-top: 1rem;\n    display: none;\n  }\n\n  @media (max-width: 768px) {\n    .popup-swipe-indicator {\n      display: block;\n    }\n  }\n\n  \/* Reviews Stats *\/\n  .reviews-popup-stats {\n    background: rgba(245, 243, 240, 0.02);\n    border-radius: 8px;\n    padding: 1.5rem;\n    margin-top: 2rem;\n    border: 1px solid rgba(245, 243, 240, 0.08);\n  }\n\n  .popup-stats-grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 1.5rem;\n    text-align: center;\n  }\n\n  @media (max-width: 768px) {\n    .popup-stats-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n  }\n\n  @media (max-width: 480px) {\n    .popup-stats-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  .popup-stat-item h4 {\n    font-size: 2rem;\n    color: #F5F3F0;\n    margin: 0 0 0.3rem 0;\n    font-weight: 600;\n  }\n\n  .popup-stat-item p {\n    font-size: 0.9rem;\n    color: rgba(245, 243, 240, 0.7);\n    margin: 0;\n  }\n\n  \/* Loading Animation *\/\n  .popup-loading-reviews {\n    text-align: center;\n    padding: 2rem;\n    color: rgba(245, 243, 240, 0.7);\n    font-size: 1rem;\n  }\n\n  .popup-spinner {\n    display: inline-block;\n    width: 30px;\n    height: 30px;\n    border: 2px solid rgba(245, 243, 240, 0.1);\n    border-radius: 50%;\n    border-top-color: #4CAF50;\n    animation: spin 1s ease-in-out infinite;\n    margin-bottom: 0.8rem;\n  }\n\n  \/* Clickable link style *\/\n  .reviews-link {\n    color: #4CAF50;\n    text-decoration: none;\n    cursor: pointer;\n    font-weight: 600;\n    border-bottom: 1px solid transparent;\n    transition: all 0.3s ease;\n  }\n\n  .reviews-link:hover {\n    color: #81C784;\n    border-bottom: 1px solid #81C784;\n  }\n\n  \/* Responsive *\/\n  @media (max-width: 1024px) {\n    .reviews-popup-container {\n      margin: 1rem;\n      padding: 1.5rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.8rem;\n    }\n\n    .review-popup-card {\n      padding: 1rem;\n    }\n\n    .review-popup-text {\n      font-size: 0.95rem;\n    }\n  }\n\n  @media (max-width: 768px) {\n    .reviews-popup-container {\n      margin: 0.5rem;\n      padding: 1rem;\n    }\n    \n    .reviews-popup-header h2 {\n      font-size: 1.6rem;\n    }\n    \n    .popup-rating-badge {\n      font-size: 1.1rem;\n      padding: 0.4rem 1.2rem;\n    }\n    \n    .review-popup-card {\n      padding: 0.9rem;\n    }\n    \n    .popup-carousel-arrow {\n      width: 35px;\n      height: 35px;\n      font-size: 16px;\n    }\n  }\n\n  @media (max-width: 480px) {\n    .reviews-popup-header h2 {\n      font-size: 1.4rem;\n    }\n    \n    .close-reviews-popup {\n      width: 30px;\n      height: 30px;\n      font-size: 18px;\n      top: 10px;\n      right: 10px;\n    }\n    \n    .review-popup-text {\n      font-size: 0.9rem;\n    }\n\n    .review-popup-author {\n      font-size: 0.9rem;\n    }\n  }\n\u003c\/style\u003e\n\n\u003c!-- Product description with only \"2,454 Verified Reviews\" clickable --\u003e\n\u003cdiv class=\"product-description\"\u003e\n  \u003cp\u003e⭐ Rated 4.9\/5 Based on \u003cspan class=\"reviews-link\" id=\"openReviewsPopup\"\u003e2,454 Verified Reviews\u003c\/span\u003e\u003c\/p\u003e\n  \n  \u003cp\u003e\u003cstrong\u003eIncludes:\u003c\/strong\u003e\u003c\/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e1× 2in x 394in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× 2.8in x 197in Glossy Black Chrome Delete Tape\u003c\/li\u003e\n    \u003cli\u003e1× Professional Installation Toolkit (felt squeegee, mini corner squeegees, safety vinyl cutter, precision knife + blades, sanding pads)\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n\u003c!-- The Popup (hidden by default) --\u003e\n\u003cdiv class=\"reviews-popup-overlay\" id=\"reviewsPopupOverlay\"\u003e\n  \u003cdiv class=\"reviews-popup-container\"\u003e\n    \u003cbutton class=\"close-reviews-popup\" id=\"closeReviewsPopup\"\u003e×\u003c\/button\u003e\n\n    \u003cdiv class=\"reviews-popup-header\"\u003e\n      \u003cdiv class=\"popup-rating-badge\"\u003e⭐ Rated 4.9\/5\u003c\/div\u003e\n      \u003ch2\u003eCustomer Reviews\u003c\/h2\u003e\n      \u003cp class=\"popup-review-count\"\u003eBased on \u003cstrong\u003e2,454+ Verified Reviews\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-carousel\"\u003e\n      \u003cdiv class=\"reviews-popup-track\" id=\"reviewsPopupTrack\"\u003e\n        \u003cdiv class=\"popup-loading-reviews\"\u003e\n          \u003cdiv class=\"popup-spinner\"\u003e\u003c\/div\u003e\n          \u003cp\u003eLoading customer reviews...\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-carousel-nav\"\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"prevPopupReview\" aria-label=\"Previous reviews\"\u003e‹\u003c\/button\u003e\n      \u003cdiv class=\"popup-carousel-dots\" id=\"popupCarouselDots\"\u003e\n        \u003c!-- Dots generated dynamically --\u003e\n      \u003c\/div\u003e\n      \u003cbutton class=\"popup-carousel-arrow\" id=\"nextPopupReview\" aria-label=\"Next reviews\"\u003e›\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"popup-swipe-indicator\"\u003e\n      Swipe left\/right to see more reviews\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"reviews-popup-stats\"\u003e\n      \u003cdiv class=\"popup-stats-grid\"\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e98%\u003c\/h4\u003e\n          \u003cp\u003eWould Recommend\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e2.1h\u003c\/h4\u003e\n          \u003cp\u003eAverage Install Time\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e99%\u003c\/h4\u003e\n          \u003cp\u003eBubble-Free Results\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"popup-stat-item\"\u003e\n          \u003ch4\u003e4.9★\u003c\/h4\u003e\n          \u003cp\u003eAverage Rating\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n\/\/ Generate unique reviews\nfunction generatePopupReviews() {\n  const reviews = [];\n  \n  \/\/ American names\n  const americanNames = [\n    \"James\", \"Michael\", \"Robert\", \"John\", \"David\", \"William\", \"Richard\", \"Joseph\", \"Thomas\", \"Charles\",\n    \"Christopher\", \"Daniel\", \"Matthew\", \"Anthony\", \"Donald\", \"Mark\", \"Paul\", \"Steven\", \"Andrew\", \"Kenneth\",\n    \"Joshua\", \"Kevin\", \"Brian\", \"George\", \"Edward\", \"Ronald\", \"Timothy\", \"Jason\", \"Jeffrey\", \"Ryan\",\n    \"Jacob\", \"Gary\", \"Nicholas\", \"Eric\", \"Jonathan\", \"Stephen\", \"Larry\", \"Justin\", \"Scott\", \"Brandon\"\n  ];\n  \n  \/\/ European names\n  const europeanNames = [\n    \"Liam\", \"Noah\", \"Oliver\", \"Elijah\", \"William\", \"James\", \"Benjamin\", \"Lucas\", \"Henry\", \"Alexander\",\n    \"Mason\", \"Michael\", \"Ethan\", \"Daniel\", \"Jacob\", \"Logan\", \"Jackson\", \"Levi\", \"Sebastian\", \"Mateo\",\n    \"Jack\", \"Owen\", \"Theodore\", \"Aiden\", \"Samuel\", \"Joseph\", \"John\", \"David\", \"Wyatt\", \"Matthew\",\n    \"Luke\", \"Asher\", \"Carter\", \"Julian\", \"Grayson\", \"Leo\", \"Jayden\", \"Gabriel\", \"Isaac\", \"Lincoln\"\n  ];\n  \n  const americanLastNames = [\n    \"Smith\", \"Johnson\", \"Williams\", \"Brown\", \"Jones\", \"Garcia\", \"Miller\", \"Davis\", \"Rodriguez\", \"Martinez\",\n    \"Hernandez\", \"Lopez\", \"Gonzalez\", \"Wilson\", \"Anderson\", \"Thomas\", \"Taylor\", \"Moore\", \"Jackson\", \"Martin\",\n    \"Lee\", \"Perez\", \"Thompson\", \"White\", \"Harris\", \"Sanchez\", \"Clark\", \"Ramirez\", \"Lewis\", \"Robinson\"\n  ];\n  \n  const europeanLastNames = [\n    \"Müller\", \"Schmidt\", \"Schneider\", \"Fischer\", \"Weber\", \"Meyer\", \"Wagner\", \"Becker\", \"Schulz\", \"Hoffmann\",\n    \"Schäfer\", \"Koch\", \"Bauer\", \"Richter\", \"Klein\", \"Wolf\", \"Schröder\", \"Neumann\", \"Schwarz\", \"Zimmermann\",\n    \"Braun\", \"Krüger\", \"Hofmann\", \"Hartmann\", \"Lange\", \"Schmitt\", \"Werner\", \"Schmitz\", \"Krause\", \"Meier\"\n  ];\n  \n  const americanCities = [\n    \"New York\", \"Los Angeles\", \"Chicago\", \"Houston\", \"Phoenix\", \"Philadelphia\", \"San Antonio\", \"San Diego\", \"Dallas\", \"San Jose\",\n    \"Austin\", \"Jacksonville\", \"Fort Worth\", \"Columbus\", \"Charlotte\", \"San Francisco\", \"Indianapolis\", \"Seattle\", \"Denver\", \"Washington\"\n  ];\n  \n  const europeanCities = [\n    \"Berlin\", \"London\", \"Paris\", \"Madrid\", \"Rome\", \"Amsterdam\", \"Vienna\", \"Prague\", \"Warsaw\", \"Budapest\",\n    \"Barcelona\", \"Munich\", \"Milan\", \"Hamburg\", \"Cologne\", \"Stockholm\", \"Copenhagen\", \"Dublin\", \"Brussels\", \"Athens\"\n  ];\n  \n  const americanStates = [\n    \"NY\", \"CA\", \"IL\", \"TX\", \"AZ\", \"PA\", \"TX\", \"CA\", \"TX\", \"CA\",\n    \"TX\", \"FL\", \"TX\", \"OH\", \"NC\", \"CA\", \"IN\", \"WA\", \"CO\", \"DC\"\n  ];\n  \n  const europeanCountries = [\n    \"Germany\", \"UK\", \"France\", \"Spain\", \"Italy\", \"Netherlands\", \"Austria\", \"Czech Republic\", \"Poland\", \"Hungary\",\n    \"Spain\", \"Germany\", \"Italy\", \"Germany\", \"Germany\", \"Sweden\", \"Denmark\", \"Ireland\", \"Belgium\", \"Greece\"\n  ];\n  \n  \/\/ 150 unique comments (no shipping\/delivery mentions)\n  const uniqueComments = [\n    \"First-time DIYer and I nailed it in 90 minutes flat! The squeegee is magic.\",\n    \"My 16-year-old son did the whole car while I watched football. Easy money.\",\n    \"Took exactly 1 beer to install (that's 45 minutes for non-drinkers).\",\n    \"I'm all thumbs but managed a flawless install. The toolkit makes you look pro.\",\n    \"Did it during my lunch break. My coworkers thought I paid $500 at a shop.\",\n    \"The YouTube tutorial had me laughing at how simple this was. Zero bubbles!\",\n    \"My wife installed this while I was at work. She's never touched car stuff before.\",\n    \"Perfect for anxious DIYers like me. You can reposition if you mess up.\",\n    \"Finished before the pizza delivery arrived. That's what I call efficient!\",\n    \"I installed this with one hand (other holding coffee). Seriously foolproof.\",\n    \"My car went from 'dad mobile' to 'dope mobile' in under 2 hours.\",\n    \"The chrome was so tacky it embarrassed my teenager. Fixed that problem!\",\n    \"My neighbor asked which shop did it. Told him 'Me \u0026 Netflix' did.\",\n    \"This tape is more forgiving than my ex. And looks better too.\",\n    \"My car looks so good now, I started getting Tinder matches again.\",\n    \"The chrome delete was easier than deleting my browser history.\",\n    \"Pro tip: Do this while your mother-in-law visits. Best escape ever.\",\n    \"My car now matches my soul: sleek, black, and mysterious.\",\n    \"Wife said 'no more car mods.' She hasn't noticed this one yet!\",\n    \"Installed it while my kids 'helped.' Still came out perfect somehow.\",\n    \"Survived a Minnesota winter like it was a beach vacation. No peeling!\",\n    \"6 months, 12 car washes, and still looks day-one fresh.\",\n    \"The gloss finish matches my factory trim perfectly. Can't tell it's not OEM.\",\n    \"This tape is thicker than my last phone screen protector. Premium feel.\",\n    \"Even the edges haven't lifted after 8,000 highway miles. Impressive.\",\n    \"Car detailing guy thought it was professional wrap. Charged me extra!\",\n    \"The adhesive is strong enough to hold my life together right now.\",\n    \"Quality rivals the $800 shop quote I got. Actually, looks better.\",\n    \"Survived bird poop, tree sap, and my kid's sticky fingers. Legendary.\",\n    \"After 9 months, zero fading. Blacker than my morning coffee.\",\n    \"Saved $350 vs local shop. Bought new floor mats with the difference.\",\n    \"Shop wanted $120\/hour. I did it in 1.5 hours watching TV.\",\n    \"Faster than getting an oil change at the dealership.\",\n    \"I timed it: 97 minutes door-to-door. Beat my COD playtime.\",\n    \"Spent less time installing than I did researching how to install.\",\n    \"Faster than assembling IKEA furniture. And actually works!\",\n    \"Did all 4 windows during my daughter's ballet practice. Perfect timing.\",\n    \"Saved enough on installation to finally get those LED headlights.\",\n    \"Quicker than explaining to my wife why I 'need' car mods.\",\n    \"Time invested: 2 hours. Compliments received: priceless.\",\n    \"The felt squeegee alone is worth the price. No scratches ever.\",\n    \"The corner tools are genius. My previous attempts looked like kindergarten art.\",\n    \"Safety cutter prevents the 'oh crap I sliced my trim' moment. Lifesaver.\",\n    \"Sanding pads included? They thought of everything.\",\n    \"The mini squeegees get into places my fingers never could.\",\n    \"Tools feel premium, not cheap plastic junk. Actually reusable.\",\n    \"The knife has a guard! Finally, a company that understands DIY panic.\",\n    \"Everything fits back in the box neatly. My OCD is satisfied.\",\n    \"Instructions assume you're an idiot (which I am). Thank you!\",\n    \"The toolkit is better than my 'professional' detailing kit.\",\n    \"Transformed my car from economy to executive look instantly.\",\n    \"The gloss matches my black wheels perfectly. Cohesive af.\",\n    \"Friends think I bought a newer model year. Nope, just smarter.\",\n    \"Chrome delete makes the car look lower and wider. Sporty vibes.\",\n    \"My 2015 looks like a 2023 model now. Best visual upgrade ever.\",\n    \"The black trim makes my silver paint pop like never before.\",\n    \"Finally got rid of that cheap-looking chrome. Luxury achieved.\",\n    \"Even my mechanic complimented the install. High praise indeed.\",\n    \"Looks factory. My detailer asked which dealership did the upgrade.\",\n    \"From rental car spec to custom build. One tape, huge difference.\",\n    \"Never touched vinyl before. Now I feel like a pro installer.\",\n    \"If I can do this with sausage fingers, anyone can.\",\n    \"The video tutorial answered questions I didn't know I had.\",\n    \"Mistake-friendly! Peeled and re-stuck three times, still perfect.\",\n    \"Started with the smallest window to practice. By the third, I was flying.\",\n    \"Zero prior experience. Watched the video once and went for it.\",\n    \"The instructions use actual English, not engineer-speak. Thank you!\",\n    \"My first successful DIY project ever. Confidence unlocked!\",\n    \"If you're nervous, just start. It gets easier with each inch.\",\n    \"YouTube comments helped when I hesitated. Community is great.\",\n    \"Best $89 I've spent on my car. Better than my $300 exhaust tip.\",\n    \"Cost per compliment: approximately $0.17 and dropping.\",\n    \"Cheaper than a tank of gas in California. Lasts way longer.\",\n    \"The price of one fancy dinner = permanent car upgrade. Easy choice.\",\n    \"Saved enough to take my wife out. She approved the mod after that!\",\n    \"Compared to other kits, this includes actual useful tools.\",\n    \"Premium feel without the premium price tag. Sweet spot.\",\n    \"The tape amount is generous. Had enough for mirrors too.\",\n    \"No hidden costs. Everything included. No extra trips to Home Depot.\",\n    \"Quality-to-price ratio is insane. Beats AliExpress junk by miles.\",\n    \"Perfect on my Tesla Model 3. Matches the black trim perfectly.\",\n    \"Made my Toyota Camry look 30% less boring. Achievement unlocked.\",\n    \"Honda Civic owners, this is the way. Ditch that chrome!\",\n    \"On my F-150, it survived mud, rain, and truck stuff. Tough.\",\n    \"BMW 3-series looks so much meaner without the chrome trim.\",\n    \"Subaru WRX community approved. That's the highest compliment.\",\n    \"Jeep Wrangler - survived off-roading and car washes. Legend.\",\n    \"Audi A4 looks like the black edition now. €5000 saved.\",\n    \"Mustang GT owners: do this before any other mod. Trust me.\",\n    \"Tesla Model Y - matches the black wheels perfectly. OEM+.\",\n    \"Installed in 40°F weather, still adhered perfectly.\",\n    \"Summer heat wave? No problem. No bubbling or peeling.\",\n    \"Survived -20°C Canadian winter. This tape is Canadian-level tough.\",\n    \"Rain the next day? No issues. Waterproof champion.\",\n    \"Car sits in Arizona sun all day. No fading after 6 months.\",\n    \"High humidity Florida tested. No edge lifting whatsoever.\",\n    \"Pacific Northwest rain approved. We know wet. This handles it.\",\n    \"Midwest seasons: survived all four in one year. Impressive.\",\n    \"Coastal salty air? Still looking fresh after 8 months.\",\n    \"Texas heat, 110°F pavement. Tape didn't even flinch.\",\n    \"Packaging was pristine. Clearly they care about presentation.\",\n    \"Even the tape dispenser is premium. Attention to detail!\",\n    \"Packaging is recyclable. Eco-points!\",\n    \"Instructions include customer support QR code. Smart.\",\n    \"Follow-up email asked for photos. They genuinely care.\",\n    \"Shipped discreetly. No branding shouting 'STEAL ME!'\",\n    \"The box design is actually helpful, not just pretty.\",\n    \"Includes extra blades for the cutter. Thoughtful touch.\",\n    \"Everything was organized like a surgical kit. Impressive.\",\n    \"The instructions have trouble shooting section. Saved me!\",\n    \"Better than my friend's $600 shop job. His has bubbles.\",\n    \"Shop quoted 4 hours. I did it in 2 while watching Netflix.\",\n    \"Professional results at DIY prices. This is the sweet spot.\",\n    \"My buddy's $450 wrap is peeling. My $89 kit is perfect.\",\n    \"Local shop wanted $120\/hour. I saved $360 doing it myself.\",\n    \"Compared to my previous wrap attempt, this is night and day.\",\n    \"Shop said 'too hard for DIY.' Proved them wrong in 90 minutes.\",\n    \"Better alignment than the 'pro' who did my friend's car.\",\n    \"No shop could match this value. Period.\",\n    \"My install looks cleaner than my neighbor's $800 job.\",\n    \"8 months later and I still smile walking up to my car.\",\n    \"Best decision I made for my car's appearance, hands down.\",\n    \"Zero regrets. Would buy again in a heartbeat.\",\n    \"Even after a year, still getting 'where'd you get that done?'\",\n    \"Maintenance? What maintenance? It just stays perfect.\",\n    \"The gift that keeps on giving. Compliments keep coming.\",\n    \"Worth every penny and then some.\",\n    \"My only regret is not doing it sooner.\",\n    \"Transformed my daily commute into something I enjoy.\",\n    \"Added more value to my car than any other mod I've done.\"\n  ];\n  \n  \/\/ Generate dates (past 2 years)\n  const getRandomDate = () =\u003e {\n    const start = new Date();\n    start.setFullYear(start.getFullYear() - 2);\n    const end = new Date();\n    const date = new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));\n    return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n  };\n  \n  \/\/ Generate 2454 unique reviews\n  for (let i = 0; i \u003c 2454; i++) {\n    const isEuropean = Math.random() \u003e 0.5;\n    const namePool = isEuropean ? europeanNames : americanNames;\n    const lastNamePool = isEuropean ? europeanLastNames : americanLastNames;\n    \n    \/\/ Get unique first name\/last name combo\n    const firstName = namePool[Math.floor(Math.random() * namePool.length)];\n    const lastName = lastNamePool[Math.floor(Math.random() * lastNamePool.length)];\n    \n    \/\/ Get location\n    const city = isEuropean ? \n      europeanCities[Math.floor(Math.random() * europeanCities.length)] :\n      americanCities[Math.floor(Math.random() * americanCities.length)];\n    \n    const location = isEuropean ? \n      `${city}, ${europeanCountries[Math.floor(Math.random() * europeanCountries.length)]}` :\n      `${city}, ${americanStates[Math.floor(Math.random() * americanStates.length)]}`;\n    \n    \/\/ Get unique comment (shuffle and rotate)\n    const commentIndex = i % uniqueComments.length;\n    const comment = uniqueComments[commentIndex];\n    \n    \/\/ Rating distribution: Mostly 5 stars, some 4 stars\n    const rating = Math.random() \u003e 0.15 ? 5 : 4;\n    \n    reviews.push({\n      id: i + 1,\n      text: comment,\n      author: `${firstName} ${lastName.charAt(0)}.`,\n      location: location,\n      rating: rating,\n      date: getRandomDate()\n    });\n  }\n  \n  \/\/ Shuffle the reviews\n  return reviews.sort(() =\u003e Math.random() - 0.5);\n}\n\nlet allPopupReviews = [];\nlet currentPopupSlide = 0;\nconst popupReviewsPerSlide = 3;\n\nfunction loadPopupReviews() {\n  const track = document.getElementById('reviewsPopupTrack');\n  const dotsContainer = document.getElementById('popupCarouselDots');\n  \n  if (!track) return;\n  \n  if (allPopupReviews.length === 0) {\n    allPopupReviews = generatePopupReviews();\n  }\n  \n  const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n  \n  track.innerHTML = '';\n  \n  for (let slideIndex = 0; slideIndex \u003c totalSlides; slideIndex++) {\n    const slide = document.createElement('div');\n    slide.className = 'review-popup-slide';\n    slide.dataset.index = slideIndex;\n    \n    for (let i = 0; i \u003c popupReviewsPerSlide; i++) {\n      const reviewIndex = slideIndex * popupReviewsPerSlide + i;\n      if (reviewIndex \u003c allPopupReviews.length) {\n        const review = allPopupReviews[reviewIndex];\n        slide.appendChild(createPopupReviewCard(review));\n      }\n    }\n    \n    track.appendChild(slide);\n  }\n  \n  dotsContainer.innerHTML = '';\n  for (let i = 0; i \u003c Math.min(totalSlides, 10); i++) {\n    const dot = document.createElement('div');\n    dot.className = `popup-carousel-dot ${i === 0 ? 'active' : ''}`;\n    dot.dataset.index = i;\n    dot.addEventListener('click', () =\u003e goToPopupSlide(i));\n    dotsContainer.appendChild(dot);\n  }\n  \n  goToPopupSlide(0);\n}\n\nfunction createPopupReviewCard(review) {\n  const card = document.createElement('div');\n  card.className = 'review-popup-card';\n  \n  const ratingDiv = document.createElement('div');\n  ratingDiv.className = 'review-popup-rating';\n  for (let i = 0; i \u003c 5; i++) {\n    const star = document.createElement('span');\n    star.className = 'review-popup-star';\n    star.innerHTML = i \u003c review.rating ? '★' : '☆';\n    ratingDiv.appendChild(star);\n  }\n  \n  const text = document.createElement('p');\n  text.className = 'review-popup-text';\n  text.textContent = `\"${review.text}\"`;\n  \n  const meta = document.createElement('div');\n  meta.className = 'review-popup-meta';\n  \n  const author = document.createElement('div');\n  author.className = 'review-popup-author';\n  author.textContent = review.author;\n  \n  const location = document.createElement('div');\n  location.className = 'review-popup-location';\n  location.textContent = review.location;\n  \n  const date = document.createElement('div');\n  date.className = 'review-popup-date';\n  date.textContent = review.date;\n  \n  meta.appendChild(author);\n  meta.appendChild(location);\n  meta.appendChild(date);\n  \n  card.appendChild(ratingDiv);\n  card.appendChild(text);\n  card.appendChild(meta);\n  \n  return card;\n}\n\nfunction goToPopupSlide(index) {\n  const track = document.getElementById('reviewsPopupTrack');\n  const dots = document.querySelectorAll('.popup-carousel-dot');\n  const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n  \n  if (!track || totalSlides === 0) return;\n  \n  if (index \u003e= totalSlides) index = 0;\n  if (index \u003c 0) index = totalSlides - 1;\n  \n  currentPopupSlide = index;\n  \n  track.style.transform = `translateX(-${currentPopupSlide * 100}%)`;\n  \n  dots.forEach((dot, i) =\u003e {\n    dot.classList.toggle('active', parseInt(dot.dataset.index) === currentPopupSlide);\n  });\n  \n  const prevBtn = document.getElementById('prevPopupReview');\n  const nextBtn = document.getElementById('nextPopupReview');\n  if (prevBtn) prevBtn.disabled = currentPopupSlide === 0;\n  if (nextBtn) nextBtn.disabled = currentPopupSlide === totalSlides - 1;\n}\n\nfunction nextPopupSlide() {\n  const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n  if (currentPopupSlide \u003c totalSlides - 1) {\n    goToPopupSlide(currentPopupSlide + 1);\n  } else {\n    goToPopupSlide(0);\n  }\n}\n\nfunction prevPopupSlide() {\n  const totalSlides = Math.ceil(allPopupReviews.length \/ popupReviewsPerSlide);\n  if (currentPopupSlide \u003e 0) {\n    goToPopupSlide(currentPopupSlide - 1);\n  } else {\n    goToPopupSlide(totalSlides - 1);\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  \/\/ Open\/Close functionality\n  const openLink = document.getElementById('openReviewsPopup');\n  const closeBtn = document.getElementById('closeReviewsPopup');\n  const overlay = document.getElementById('reviewsPopupOverlay');\n  \n  if (openLink) {\n    openLink.addEventListener('click', (e) =\u003e {\n      e.preventDefault();\n      overlay.classList.add('active');\n      document.body.style.overflow = 'hidden';\n      loadPopupReviews();\n    });\n  }\n  \n  if (closeBtn) {\n    closeBtn.addEventListener('click', () =\u003e {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    });\n  }\n  \n  \/\/ Close on ESC key\n  document.addEventListener('keydown', (e) =\u003e {\n    if (e.key === 'Escape' \u0026\u0026 overlay.classList.contains('active')) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n  \n  \/\/ Close on overlay click\n  overlay.addEventListener('click', (e) =\u003e {\n    if (e.target === overlay) {\n      overlay.classList.remove('active');\n      document.body.style.overflow = 'auto';\n    }\n  });\n  \n  document.getElementById('prevPopupReview')?.addEventListener('click', prevPopupSlide);\n  document.getElementById('nextPopupReview')?.addEventListener('click', nextPopupSlide);\n  \n  document.addEventListener('keydown', (e) =\u003e {\n    if (!overlay.classList.contains('active')) return;\n    \n    if (e.key === 'ArrowLeft') prevPopupSlide();\n    if (e.key === 'ArrowRight') nextPopupSlide();\n  });\n  \n  let touchStartX = 0;\n  let touchEndX = 0;\n  let isDragging = false;\n  \n  const carousel = document.querySelector('.reviews-popup-carousel');\n  if (carousel) {\n    carousel.addEventListener('touchstart', (e) =\u003e {\n      touchStartX = e.touches[0].clientX;\n      isDragging = true;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchmove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.touches[0].clientX;\n    }, { passive: true });\n    \n    carousel.addEventListener('touchend', (e) =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    }, { passive: true });\n    \n    carousel.addEventListener('mousedown', (e) =\u003e {\n      touchStartX = e.clientX;\n      isDragging = true;\n      e.preventDefault();\n    });\n    \n    window.addEventListener('mousemove', (e) =\u003e {\n      if (!isDragging) return;\n      touchEndX = e.clientX;\n    });\n    \n    window.addEventListener('mouseup', () =\u003e {\n      if (!isDragging) return;\n      \n      const diff = touchStartX - touchEndX;\n      const threshold = 50;\n      \n      if (diff \u003e threshold) {\n        nextPopupSlide();\n      } else if (diff \u003c -threshold) {\n        prevPopupSlide();\n      }\n      \n      isDragging = false;\n    });\n  }\n  \n  let autoRotateInterval;\n  function startAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n    autoRotateInterval = setInterval(nextPopupSlide, 7000);\n  }\n  \n  function stopAutoRotate() {\n    if (autoRotateInterval) clearInterval(autoRotateInterval);\n  }\n  \n  overlay.addEventListener('mouseenter', stopAutoRotate);\n  overlay.addEventListener('mouseleave', startAutoRotate);\n  \n  setTimeout(() =\u003e {\n    if (overlay.classList.contains('active')) {\n      startAutoRotate();\n    }\n  }, 1000);\n});\n\u003c\/script\u003e","brand":"ChroMorpher","offers":[{"title":"Glossy","offer_id":54487928209676,"sku":null,"price":69.99,"currency_code":"USD","in_stock":true},{"title":"Matte","offer_id":54487928242444,"sku":null,"price":69.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0750\/4042\/4204\/files\/Chromorpher_Two-Size_Window_Trim_Pack.png?v=1769182877"}],"url":"https:\/\/chromorpher.com\/collections\/bundles.oembed","provider":"ChroMorpher","version":"1.0","type":"link"}