Women's 2-Piece Off-Shoulder Top & Shorts Lounge Set

25,695 Reviews

$9.99 $39.99 SAVE 75%

Black
S
Size Chart
Ships by Wed, Jul 22
US Fast US Shipping

30 Day Money Back Guarantee | Free Refunds

Mastercard
American Express
Apple Pay
Google Pay
Shop Pay
Discover
Visa

Grab the essentials while you can!

We sell out more often than other brands...

Product Details +
  • Soft and breathable fabric delivers lightweight comfort for lounging, relaxing, and everyday wear
  • Wide off-shoulder neckline creates a flattering, feminine look with a relaxed modern style
  • Smooth fabric feels gentle against the skin for all-day comfort without irritation
  • Relaxed short-sleeve top provides an effortless fit that drapes beautifully on the body
  • Stretchy fitted shorts offer a comfortable, body-hugging feel while allowing easy movement
  • Two-piece matching set creates a complete outfit with minimal styling effort
  • Comfortable construction designed to maintain shape and softness wear after wear
  • Versatile lounge set suitable for relaxing at home, casual outings, travel, errands, and daily activities
  • Easy to style together or mix and match with other wardrobe favorites for multiple outfit options
  • Lightweight design keeps you feeling cool and comfortable throughout warmer seasons
  • Feminine silhouette balances a loose top with fitted shorts for a flattering everyday look
  • Perfect for spring and summer wear, pajama lounging, vacation outfits, and casual streetwear styling
  • Recommend sizing normally for a comfortable relaxed fit
  • Machine wash cold with similar colors, tumble dry low or hang dry for best results
Fabric & Care +

Fabric

  • Soft and breathable stretch blend fabric
  • Lightweight and comfortable feel
  • Smooth texture that feels gentle against the skin
  • Flexible material for easy movement and everyday comfort
  • Designed for lounging, casual wear, and all-day use

Care

  • Machine wash cold with like colors
  • Tumble dry low
  • Do not bleach
  • Iron on low heat if needed
  • Hang dry for best results and longer-lasting softness
Fit +
  • Relaxed off-shoulder top drapes naturally for an effortless and flattering silhouette
  • Stretchy fitted shorts contour comfortably to the body while allowing easy movement
  • Balanced two-piece design combines a loose top with fitted bottoms for a feminine everyday look
  • Soft stretch fabric moves with your body while maintaining its shape throughout the day
  • Wide neckline can be worn off one shoulder or both shoulders for versatile styling options
  • Comfortable fit designed for lounging, casual outings, travel, and everyday wear
  • Recommend sizing normally for a relaxed and comfortable fit
  • Size up for an extra loose, oversized lounge-inspired look
  • Size down for a more fitted and body-hugging silhouette (if between sizes)
Model +

The model is 5'8", weighs 125 lbs, and is wearing a Size Medium for a comfortable, flattering fit.

Shipping Information +

We offer fast and reliable shipping on all orders. You can expect to receive it within 2-3 days based on your location.

Please contact our customer service team for assistance if you have any questions or concerns about your shipment.

Our Guarantee +

If you're not 100% satisfied within the first 30 days, just send it back to us and we'll give you a full refund.

Crafted for Lounge-Ready Comfort

Crafted for Lounge-Ready Comfort

Effortless Off-Shoulder Style

Wide neckline creates a flattering off-shoulder look that adds a relaxed, feminine touch to your everyday wardrobe.

Comfortable Matching Fit

Relaxed short-sleeve top pairs perfectly with fitted stretch shorts for a balanced silhouette that's both stylish and comfortable.

Soft Fabric That Moves With You

Lightweight, breathable fabric feels smooth against the skin while providing the flexibility needed for all-day comfort and ease.

'#shopify-section-product', '#product-section', '.product-section', // Fallback to any product-related elements '.product-template', '.product-container', '.product-main', '.product', '[data-section-type="product"]', '[data-section-id*="product"]' ]; console.log('Trying fallback selectors: ', productSelectors); // Try each selector until we find a match for (const selector of productSelectors) { targetElement = document.querySelector(selector); if (targetElement) { console.log('Found product element with selector: ', selector); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; // Exit once we've found and scrolled to a product element } } console.log('No product selectors found, trying main content'); // Final fallback: if no product section is found, try scrolling to the main content area targetElement = document.querySelector('main') || document.querySelector('#MainContent'); if (targetElement) { console.log('Scrolling to main content: ', targetElement); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { console.log('No scrollable element found'); } } } catch (err) { console.error('Error in scroll button click handler:', err); } }); }); } catch (err) { console.error('Error initializing scroll to product functionality:', err); } } // Enhanced Accordion functionality with debugging function initAccordions() { console.log('Initializing accordions...'); const accordionContainers = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_3Cqi4p .accordion-items-wrapper'); console.log('Found', accordionContainers.length, 'accordion containers'); if (accordionContainers.length === 0) { console.log('No accordion containers found'); return; } accordionContainers.forEach((container, containerIndex) => { console.log(`Processing container ${containerIndex + 1}`); const accordionItems = container.querySelectorAll('.accordion-item'); const accordionMode = container.getAttribute('data-accordion-mode') === 'true'; console.log(`Container ${containerIndex + 1} has ${accordionItems.length} items, accordion mode: ${accordionMode}`); accordionItems.forEach((item, itemIndex) => { const header = item.querySelector('.accordion-header'); const content = item.querySelector('.accordion-content'); if (!header) { console.log(`No header found for item ${itemIndex + 1}`); return; } if (!content) { console.log(`No content found for item ${itemIndex + 1}`); return; } // Skip if already initialized if (header.hasAttribute('data-accordion-initialized')) { console.log(`Item ${itemIndex + 1} already initialized, skipping`); return; } console.log(`Setting up click handler for item ${itemIndex + 1}`); // Create the click handler function const clickHandler = function(e) { console.log(`Accordion item ${itemIndex + 1} clicked!`); e.preventDefault(); e.stopPropagation(); const isActive = item.classList.contains('active'); console.log(`Item ${itemIndex + 1} is currently ${isActive ? 'active' : 'inactive'}`); // If in accordion mode, close all other items if (accordionMode && !isActive) { console.log('Accordion mode: closing other items'); accordionItems.forEach((otherItem, otherIndex) => { if (otherItem !== item && otherItem.classList.contains('active')) { console.log(`Closing item ${otherIndex + 1}`); otherItem.classList.remove('active'); } }); } // Toggle the current item if (isActive) { console.log(`Closing item ${itemIndex + 1}`); item.classList.remove('active'); } else { console.log(`Opening item ${itemIndex + 1}`); item.classList.add('active'); } // Trigger custom event for tracking/analytics try { container.dispatchEvent(new CustomEvent('accordion:toggle', { detail: { item: item, isOpen: !isActive, text: header.querySelector('.accordion-header-text')?.textContent } })); } catch (err) { console.error('Error dispatching accordion event:', err); } }; // Add the click listener header.addEventListener('click', clickHandler); // Store the handler reference for potential cleanup header._accordionClickHandler = clickHandler; // Mark as initialized header.setAttribute('data-accordion-initialized', 'true'); // Add visual feedback on hover header.style.cursor = 'pointer'; // Add keyboard support const keyHandler = function(e) { if (e.key === 'Enter' || e.key === ' ') { console.log(`Keyboard trigger for item ${itemIndex + 1}`); e.preventDefault(); clickHandler(e); } }; header.addEventListener('keydown', keyHandler); header._accordionKeyHandler = keyHandler; // Make header focusable for accessibility if (!header.hasAttribute('tabindex')) { header.setAttribute('tabindex', '0'); } console.log(`Item ${itemIndex + 1} setup complete`); }); }); console.log('Accordion initialization complete'); } // Function to manually test accordion (for debugging) function testAccordion() { console.log('Testing accordion functionality...'); const firstItem = document.querySelector('#image-text-section-template--27789387825517__image_with_text_3Cqi4p .accordion-item'); if (firstItem) { console.log('Found first accordion item, toggling...'); firstItem.classList.toggle('active'); console.log('First item is now:', firstItem.classList.contains('active') ? 'active' : 'inactive'); return true; } else { console.log('No accordion items found for testing'); return false; } } // Initialize immediately if DOM is already ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { console.log('DOM Content Loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); } else { // DOM is already ready console.log('DOM already ready - initializing components immediately'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } // Also run on window load to ensure all elements are fully loaded window.addEventListener('load', function() { console.log('Window loaded - re-initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Additional initialization for dynamic content document.addEventListener('shopify:section:load', function() { console.log('Shopify section loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Backup initialization using setTimeout setTimeout(function() { console.log('Backup initialization running...'); if (document.querySelector('#image-text-section-template--27789387825517__image_with_text_3Cqi4p .accordion-items-wrapper') && !document.querySelector('#image-text-section-template--27789387825517__image_with_text_3Cqi4p .accordion-header[data-accordion-initialized]')) { console.log('Found uninitialized accordions, running backup init'); initAccordions(); } }, 2000); // Make functions globally available for debugging window.debugAccordion = { init: initAccordions, test: testAccordion, toggle: function(index) { const items = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_3Cqi4p .accordion-item'); if (items[index]) { items[index].classList.toggle('active'); console.log(`Manually toggled item ${index + 1}`); } } }; // Final fallback: try to initialize immediately try { console.log('Immediate initialization attempt...'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } catch (err) { console.error('Immediate initialization failed:', err); }
Fit & Features

Fit & Features

Soft Lounge Comfort, All-Day Wear

Lightweight, breathable fabric delivers a soft feel against the skin for lasting comfort from morning to night.

Relaxed Fit, Effortless Style

Off-shoulder top and fitted shorts create a flattering, easy-to-wear silhouette that looks put together with minimal effort.

Made for Everyday Living, Wear After Wear

Quality construction helps maintain softness, shape, and comfort through repeated wear and washing.

'#shopify-section-product', '#product-section', '.product-section', // Fallback to any product-related elements '.product-template', '.product-container', '.product-main', '.product', '[data-section-type="product"]', '[data-section-id*="product"]' ]; console.log('Trying fallback selectors: ', productSelectors); // Try each selector until we find a match for (const selector of productSelectors) { targetElement = document.querySelector(selector); if (targetElement) { console.log('Found product element with selector: ', selector); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; // Exit once we've found and scrolled to a product element } } console.log('No product selectors found, trying main content'); // Final fallback: if no product section is found, try scrolling to the main content area targetElement = document.querySelector('main') || document.querySelector('#MainContent'); if (targetElement) { console.log('Scrolling to main content: ', targetElement); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { console.log('No scrollable element found'); } } } catch (err) { console.error('Error in scroll button click handler:', err); } }); }); } catch (err) { console.error('Error initializing scroll to product functionality:', err); } } // Enhanced Accordion functionality with debugging function initAccordions() { console.log('Initializing accordions...'); const accordionContainers = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_97HxXJ .accordion-items-wrapper'); console.log('Found', accordionContainers.length, 'accordion containers'); if (accordionContainers.length === 0) { console.log('No accordion containers found'); return; } accordionContainers.forEach((container, containerIndex) => { console.log(`Processing container ${containerIndex + 1}`); const accordionItems = container.querySelectorAll('.accordion-item'); const accordionMode = container.getAttribute('data-accordion-mode') === 'true'; console.log(`Container ${containerIndex + 1} has ${accordionItems.length} items, accordion mode: ${accordionMode}`); accordionItems.forEach((item, itemIndex) => { const header = item.querySelector('.accordion-header'); const content = item.querySelector('.accordion-content'); if (!header) { console.log(`No header found for item ${itemIndex + 1}`); return; } if (!content) { console.log(`No content found for item ${itemIndex + 1}`); return; } // Skip if already initialized if (header.hasAttribute('data-accordion-initialized')) { console.log(`Item ${itemIndex + 1} already initialized, skipping`); return; } console.log(`Setting up click handler for item ${itemIndex + 1}`); // Create the click handler function const clickHandler = function(e) { console.log(`Accordion item ${itemIndex + 1} clicked!`); e.preventDefault(); e.stopPropagation(); const isActive = item.classList.contains('active'); console.log(`Item ${itemIndex + 1} is currently ${isActive ? 'active' : 'inactive'}`); // If in accordion mode, close all other items if (accordionMode && !isActive) { console.log('Accordion mode: closing other items'); accordionItems.forEach((otherItem, otherIndex) => { if (otherItem !== item && otherItem.classList.contains('active')) { console.log(`Closing item ${otherIndex + 1}`); otherItem.classList.remove('active'); } }); } // Toggle the current item if (isActive) { console.log(`Closing item ${itemIndex + 1}`); item.classList.remove('active'); } else { console.log(`Opening item ${itemIndex + 1}`); item.classList.add('active'); } // Trigger custom event for tracking/analytics try { container.dispatchEvent(new CustomEvent('accordion:toggle', { detail: { item: item, isOpen: !isActive, text: header.querySelector('.accordion-header-text')?.textContent } })); } catch (err) { console.error('Error dispatching accordion event:', err); } }; // Add the click listener header.addEventListener('click', clickHandler); // Store the handler reference for potential cleanup header._accordionClickHandler = clickHandler; // Mark as initialized header.setAttribute('data-accordion-initialized', 'true'); // Add visual feedback on hover header.style.cursor = 'pointer'; // Add keyboard support const keyHandler = function(e) { if (e.key === 'Enter' || e.key === ' ') { console.log(`Keyboard trigger for item ${itemIndex + 1}`); e.preventDefault(); clickHandler(e); } }; header.addEventListener('keydown', keyHandler); header._accordionKeyHandler = keyHandler; // Make header focusable for accessibility if (!header.hasAttribute('tabindex')) { header.setAttribute('tabindex', '0'); } console.log(`Item ${itemIndex + 1} setup complete`); }); }); console.log('Accordion initialization complete'); } // Function to manually test accordion (for debugging) function testAccordion() { console.log('Testing accordion functionality...'); const firstItem = document.querySelector('#image-text-section-template--27789387825517__image_with_text_97HxXJ .accordion-item'); if (firstItem) { console.log('Found first accordion item, toggling...'); firstItem.classList.toggle('active'); console.log('First item is now:', firstItem.classList.contains('active') ? 'active' : 'inactive'); return true; } else { console.log('No accordion items found for testing'); return false; } } // Initialize immediately if DOM is already ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { console.log('DOM Content Loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); } else { // DOM is already ready console.log('DOM already ready - initializing components immediately'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } // Also run on window load to ensure all elements are fully loaded window.addEventListener('load', function() { console.log('Window loaded - re-initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Additional initialization for dynamic content document.addEventListener('shopify:section:load', function() { console.log('Shopify section loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Backup initialization using setTimeout setTimeout(function() { console.log('Backup initialization running...'); if (document.querySelector('#image-text-section-template--27789387825517__image_with_text_97HxXJ .accordion-items-wrapper') && !document.querySelector('#image-text-section-template--27789387825517__image_with_text_97HxXJ .accordion-header[data-accordion-initialized]')) { console.log('Found uninitialized accordions, running backup init'); initAccordions(); } }, 2000); // Make functions globally available for debugging window.debugAccordion = { init: initAccordions, test: testAccordion, toggle: function(index) { const items = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_97HxXJ .accordion-item'); if (items[index]) { items[index].classList.toggle('active'); console.log(`Manually toggled item ${index + 1}`); } } }; // Final fallback: try to initialize immediately try { console.log('Immediate initialization attempt...'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } catch (err) { console.error('Immediate initialization failed:', err); }
Fabric

Fabric

Relaxed Fit, Effortless Style

The loose off-shoulder top and fitted shorts create a flattering silhouette that blends comfort and everyday fashion.

Feminine Details That Stand Out

A wide off-shoulder neckline adds a chic, modern touch while enhancing the relaxed and confident look of the set.

Designed for Everyday Wear

Soft, breathable fabric and a versatile two-piece design make this outfit perfect for lounging, errands, travel, or casual outings.

'#shopify-section-product', '#product-section', '.product-section', // Fallback to any product-related elements '.product-template', '.product-container', '.product-main', '.product', '[data-section-type="product"]', '[data-section-id*="product"]' ]; console.log('Trying fallback selectors: ', productSelectors); // Try each selector until we find a match for (const selector of productSelectors) { targetElement = document.querySelector(selector); if (targetElement) { console.log('Found product element with selector: ', selector); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; // Exit once we've found and scrolled to a product element } } console.log('No product selectors found, trying main content'); // Final fallback: if no product section is found, try scrolling to the main content area targetElement = document.querySelector('main') || document.querySelector('#MainContent'); if (targetElement) { console.log('Scrolling to main content: ', targetElement); targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { console.log('No scrollable element found'); } } } catch (err) { console.error('Error in scroll button click handler:', err); } }); }); } catch (err) { console.error('Error initializing scroll to product functionality:', err); } } // Enhanced Accordion functionality with debugging function initAccordions() { console.log('Initializing accordions...'); const accordionContainers = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_WYEYpp .accordion-items-wrapper'); console.log('Found', accordionContainers.length, 'accordion containers'); if (accordionContainers.length === 0) { console.log('No accordion containers found'); return; } accordionContainers.forEach((container, containerIndex) => { console.log(`Processing container ${containerIndex + 1}`); const accordionItems = container.querySelectorAll('.accordion-item'); const accordionMode = container.getAttribute('data-accordion-mode') === 'true'; console.log(`Container ${containerIndex + 1} has ${accordionItems.length} items, accordion mode: ${accordionMode}`); accordionItems.forEach((item, itemIndex) => { const header = item.querySelector('.accordion-header'); const content = item.querySelector('.accordion-content'); if (!header) { console.log(`No header found for item ${itemIndex + 1}`); return; } if (!content) { console.log(`No content found for item ${itemIndex + 1}`); return; } // Skip if already initialized if (header.hasAttribute('data-accordion-initialized')) { console.log(`Item ${itemIndex + 1} already initialized, skipping`); return; } console.log(`Setting up click handler for item ${itemIndex + 1}`); // Create the click handler function const clickHandler = function(e) { console.log(`Accordion item ${itemIndex + 1} clicked!`); e.preventDefault(); e.stopPropagation(); const isActive = item.classList.contains('active'); console.log(`Item ${itemIndex + 1} is currently ${isActive ? 'active' : 'inactive'}`); // If in accordion mode, close all other items if (accordionMode && !isActive) { console.log('Accordion mode: closing other items'); accordionItems.forEach((otherItem, otherIndex) => { if (otherItem !== item && otherItem.classList.contains('active')) { console.log(`Closing item ${otherIndex + 1}`); otherItem.classList.remove('active'); } }); } // Toggle the current item if (isActive) { console.log(`Closing item ${itemIndex + 1}`); item.classList.remove('active'); } else { console.log(`Opening item ${itemIndex + 1}`); item.classList.add('active'); } // Trigger custom event for tracking/analytics try { container.dispatchEvent(new CustomEvent('accordion:toggle', { detail: { item: item, isOpen: !isActive, text: header.querySelector('.accordion-header-text')?.textContent } })); } catch (err) { console.error('Error dispatching accordion event:', err); } }; // Add the click listener header.addEventListener('click', clickHandler); // Store the handler reference for potential cleanup header._accordionClickHandler = clickHandler; // Mark as initialized header.setAttribute('data-accordion-initialized', 'true'); // Add visual feedback on hover header.style.cursor = 'pointer'; // Add keyboard support const keyHandler = function(e) { if (e.key === 'Enter' || e.key === ' ') { console.log(`Keyboard trigger for item ${itemIndex + 1}`); e.preventDefault(); clickHandler(e); } }; header.addEventListener('keydown', keyHandler); header._accordionKeyHandler = keyHandler; // Make header focusable for accessibility if (!header.hasAttribute('tabindex')) { header.setAttribute('tabindex', '0'); } console.log(`Item ${itemIndex + 1} setup complete`); }); }); console.log('Accordion initialization complete'); } // Function to manually test accordion (for debugging) function testAccordion() { console.log('Testing accordion functionality...'); const firstItem = document.querySelector('#image-text-section-template--27789387825517__image_with_text_WYEYpp .accordion-item'); if (firstItem) { console.log('Found first accordion item, toggling...'); firstItem.classList.toggle('active'); console.log('First item is now:', firstItem.classList.contains('active') ? 'active' : 'inactive'); return true; } else { console.log('No accordion items found for testing'); return false; } } // Initialize immediately if DOM is already ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { console.log('DOM Content Loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); } else { // DOM is already ready console.log('DOM already ready - initializing components immediately'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } // Also run on window load to ensure all elements are fully loaded window.addEventListener('load', function() { console.log('Window loaded - re-initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Additional initialization for dynamic content document.addEventListener('shopify:section:load', function() { console.log('Shopify section loaded - initializing components'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); }); // Backup initialization using setTimeout setTimeout(function() { console.log('Backup initialization running...'); if (document.querySelector('#image-text-section-template--27789387825517__image_with_text_WYEYpp .accordion-items-wrapper') && !document.querySelector('#image-text-section-template--27789387825517__image_with_text_WYEYpp .accordion-header[data-accordion-initialized]')) { console.log('Found uninitialized accordions, running backup init'); initAccordions(); } }, 2000); // Make functions globally available for debugging window.debugAccordion = { init: initAccordions, test: testAccordion, toggle: function(index) { const items = document.querySelectorAll('#image-text-section-template--27789387825517__image_with_text_WYEYpp .accordion-item'); if (items[index]) { items[index].classList.toggle('active'); console.log(`Manually toggled item ${index + 1}`); } } }; // Final fallback: try to initialize immediately try { console.log('Immediate initialization attempt...'); initImageTextScrollToFirst(); initScrollToProduct(); initAccordions(); } catch (err) { console.error('Immediate initialization failed:', err); }

Why Choose Us?

4 Problems We're Solving for Our Customers

Fit

Flattering shape, effortless silhouette.

  • check-verified Created with sketchtool. Relaxed off-shoulder neckline
  • check-verified Created with sketchtool. Fitted stretch shorts design
  • check-verified Created with sketchtool. Balanced two-piece structure

COMFORT

Soft fabric, easy all-day wear.

  • check-verified Created with sketchtool. Lightweight breathable material
  • check-verified Created with sketchtool. Smooth skin-friendly texture
  • check-verified Created with sketchtool. Stretch comfort movement fabric

VALUE

Everyday set, multiple outfit use.

  • check-verified Created with sketchtool. Full matching two-piece outfit
  • check-verified Created with sketchtool. Mix-and-match styling options
  • check-verified Created with sketchtool. Seasonless wardrobe essential

VERSATILITY

From lounge to street in seconds.

  • check-verified Created with sketchtool. Home lounge ready set
  • check-verified Created with sketchtool. Casual outing friendly design
  • check-verified Created with sketchtool. Travel and vacation wear approved

OUR CUSTOMERS TELL IT BETTER THAN WE DO!

4.9/5 based on 25,695 verified reviews

30-Day Money Back Guarantee

We stand behind our product with a full 30-day money-back guarantee. If you're not completely satisfied for any reason, simply contact us within 30 days of your purchase, and we'll issue a full refund — no questions asked.

ADD TO CART
100% Satisfaction
Fast Shipping
Easy Returns

30-Day Money Back Guarantee

We stand behind our product with a full 30-day money-back guarantee. If you're not completely satisfied for any reason, simply contact us within 30 days of your purchase, and we'll issue a full refund — no questions asked.

ADD TO CART
100% Satisfaction
Fast Shipping
Easy Returns
// Most common first section patterns 'main section:first-of-type', '.main-content section:first-of-type', '.page-content section:first-of-type', // Shopify section patterns '.shopify-section:not([data-section-type="header"]):not([data-section-type="announcement-bar"])', 'section.shopify-section:not([data-section-type="header"])', // General section patterns 'main > *:first-child', '.content section:first-of-type', 'section:not(header):not([role="banner"])', // Fallback to any section 'section:first-of-type', '[data-section-type]:not([data-section-type="header"])', // Last resort - any content element 'main > div:first-child', '.main > *:first-child' ]; let targetElement = null; let usedSelector = ''; for (let selector of selectors) { try { const elements = document.querySelectorAll(selector); if (elements.length > 0) { // Get the first element that's not a header/nav for (let element of elements) { const tagName = element.tagName.toLowerCase(); const sectionType = element.getAttribute('data-section-type'); // Skip header/navigation elements if (tagName === 'header' || tagName === 'nav' || sectionType === 'header' || sectionType === 'announcement-bar' || element.getAttribute('role') === 'banner') { continue; } targetElement = element; usedSelector = selector; break; } if (targetElement) { console.log(`✅ Found first section with selector: ${selector}`); break; } } } catch (e) { // Skip invalid selectors continue; } } if (targetElement) { // Calculate offset for fixed headers const headerHeight = document.querySelector('header')?.offsetHeight || 0; const stickyHeader = document.querySelector('.sticky-header, .header-sticky, [style*="position: fixed"]')?.offsetHeight || 0; const adminBarHeight = document.querySelector('#admin_bar_iframe, .admin-bar')?.offsetHeight || 0; const announcementBar = document.querySelector('.announcement-bar, .promo-bar')?.offsetHeight || 0; const offset = Math.max(headerHeight, stickyHeader) + adminBarHeight + announcementBar + 20; const elementPosition = targetElement.offsetTop; const offsetPosition = elementPosition - offset; window.scrollTo({ top: Math.max(0, offsetPosition), behavior: 'smooth' }); console.log(`✅ Scrolled to first section using selector: ${usedSelector}`); // Optional: Add visual highlight to show successful targeting targetElement.style.transition = 'all 0.3s ease'; targetElement.style.transform = 'scale(1.01)'; setTimeout(() => { targetElement.style.transform = 'scale(1)'; }, 300); } else { console.warn('❌ Could not find any suitable first section to scroll to'); console.log('🔍 Available sections on page:'); // Debug: Show available sections const allSections = document.querySelectorAll('section, .shopify-section, main > *, .main > *'); allSections.forEach((section, index) => { const tagName = section.tagName.toLowerCase(); const id = section.id || 'no-id'; const sectionType = section.getAttribute('data-section-type') || 'no-section-type'; const className = section.className || 'no-class'; console.log(` ${index + 1}. <${tagName}> id="${id}" data-section-type="${sectionType}" class="${className}"`); }); } }); }); });