/* This only triggers on mobile/tablet screens */ @media (max-width: 767px) { .full-width-mobile { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } } .page-wrapper { margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0; background: #000; /* or #fff depending on your design */ } .page-wrapper > * { margin: 0 !important; } /* Base setup */ .base-img, .overlay-img { width: 100%; height: auto; display: block; } /* 🧪 ONLY FOR TESTING: Gives you space to scroll so you can see the effect */ .spacing-block { height:65vh; background: #222; display: flex; justify-content: center; align-items: center; color: #fff; font-family: sans-serif; } /* 📱 MOBILE ONLY STYLES */ @media (max-width: 768px) { .scroll-container-normal { position: relative; width: 100%; margin: 0px auto; background-color: #000; } .frame-wrapper-normal { position: relative; width: 100%; max-width: 100%; display: flex; justify-content: center; align-items: center; } .overlay-img { position: absolute; top: 28%; left: 8%; width: 85%; height: 85%; object-fit: contain; will-change: opacity; transition: none; /* Prevents CSS delay from fighting JS updates */ } .img-2 { opacity: 1; z-index: 2; } .img-3 { opacity: 0; z-index: 2; } } /* 💻 DESKTOP COMPATIBILITY */ @media (min-width: 769px) { .overlay-img { display: none; } } function handleMobileScrollFade() { if (window.innerWidth > 768) return; const container = document.querySelector('.scroll-container-normal'); const img2 = document.querySelector('.img-2'); const img3 = document.querySelector('.img-3'); if (!container || !img2 || !img3) return; const rect = container.getBoundingClientRect(); const windowHeight = window.innerHeight; const totalTrackDistance = windowHeight + rect.height; const currentDistanceMoved = windowHeight - rect.top; let overallProgress = currentDistanceMoved / totalTrackDistance; overallProgress = Math.max(0, Math.min(1, overallProgress)); /* ⏱️ DELAYED START WINDOWS ⏱️ Pushed startFade up to 0.45. The animation stays completely idle until the container is almost halfway up the phone viewport. */ const startFade = 0.45; const endFade = 0.80; let acceleratedProgress; if (overallProgress < startFade) { acceleratedProgress = 0; } else if (overallProgress > endFade) { acceleratedProgress = 1; } else { // Calculates the quick fade completely within the higher window frame acceleratedProgress = (overallProgress - startFade) / (endFade - startFade); } img2.style.opacity = 1 - acceleratedProgress; img3.style.opacity = acceleratedProgress; } window.addEventListener('scroll', handleMobileScrollFade); window.addEventListener('resize', handleMobileScrollFade); window.addEventListener('DOMContentLoaded', handleMobileScrollFade); 5 /* =========================== XR DEVICE STYLES =========================== */ /* Main Container */ .xr-device-shell { position: relative; aspect-ratio: 9 / 10; background: #000; overflow: hidden; padding: 20px; /* Overlap the info section */ margin-bottom: 20px; /* Now it creates a clean 20px space below the animation */ z-index: 2; } /* Slider */ .xr-device-slider { position: absolute; transform: translateX(80px) translateY(40px); width: 100%; height: 100%; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; background: #000; scroll-behavior: smooth; z-index: 2; } .xr-device-slider::-webkit-scrollbar { display: none; } /* Slides */ .xr-device-slide { flex: 0 0 100%; scroll-snap-align: start; scroll-snap-stop: always; overflow: hidden; position: relative; display: flex; justify-content: center; align-items: center; } /* Slide Text */ .xr-device-caption { position: absolute; bottom: -1%; left: 50%; width: 90%; text-align: center; color: #fff; font-size: 18px; font-weight: 600; opacity: 0; transform: translateX(-50%); z-index: 999; } /* Active Slide */ .xr-device-slide.active .xr-device-caption { opacity: 1; } /* Animation Classes */ .xr-device-slide.from-right .xr-device-caption { animation: xrTextFromRight .45s ease forwards; } .xr-device-slide.from-left .xr-device-caption { animation: xrTextFromLeft .45s ease forwards; } /* Animations */ @keyframes xrTextFromRight { from { opacity: 0; transform: translateX(calc(-50% + 50px)); } to { opacity: 1; transform: translateX(-50%); } } @keyframes xrTextFromLeft { from { opacity: 0; transform: translateX(calc(-50% - 50px)); } to { opacity: 1; transform: translateX(-50%); } } /* Images */ .xr-device-slide img { width: 61%; height: 57%; object-fit: contain; background: #000; display: block; flex-shrink: 0; margin: auto; } /* Background */ .xr-device-shell, .xr-device-slider, .xr-device-slide { background: #000 !important; } /* Device Frame */ .xr-device-frame { position: absolute; inset: 0; width: 100%; height: 70%; object-fit: contain; pointer-events: none; z-index: 3; transform: translateX(0%) translateY(0%); } /* Prev / Next Buttons */ .xr-device-nav { position: absolute; bottom: 28%; left: 50%; transform: translateX(-50%); display: flex; gap: 14px; z-index: 5; } .xr-device-nav button { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .35); background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer; transition: background .25s ease, transform .15s ease, border-color .25s ease; } .xr-device-nav button svg { width: 16px; height: 16px; pointer-events: none; } .xr-device-nav button:hover { background: rgba(255, 255, 255, .18); border-color: rgba(255, 255, 255, .6); } .xr-device-nav button:active { transform: scale(.92); } .xr-device-nav button:disabled { opacity: .35; cursor: default; } .xr-device-nav button:disabled:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .35); } /* Bottom Content */ .xr-device-bottom-image { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); /* width: 100%; */ /* Remove or change this if you want the image to keep its natural size */ z-index: 1; pointer-events: none; } /* Mobile */ @media (max-width: 480px) { .xr-device-slider { top: -10%; left: 54.5%; width: 82%; height: 113%; z-index: 2; transform: translateX(-55%); } .xr-device-nav { bottom: 18%; } .xr-device-slider { height: 99%; /* instead of 90% */ } } /* Large tablets */ /* @media (max-width: 1024px) { top: -19%; left: -11%; } */ /* Tablets / small screens */ /* @media (max-width: 768px) { top: -19%; left: -10%; } */ /* Mobile */ @media (max-width: 767px) { top: -19%; left: -10% !important; } @media (max-width: 375px) { top: -19%; left: -10% !important; } Dial Call Spatial Sound Camera Control Volume Control Noise Control EQ Mode Switching Find My Earphone Answer/End Call Music Control document.addEventListener("DOMContentLoaded", () => { const slider = document.getElementById("xrDeviceSlider"); const slides = document.querySelectorAll(".xr-device-slide"); const prevBtn = document.getElementById("xrPrevBtn"); const nextBtn = document.getElementById("xrNextBtn"); let previousIndex = 0; function setActive(currentIndex) { // Prevent invalid index if (currentIndex < 0 || currentIndex >= slides.length) return; // Update active slide slides.forEach((slide, index) => { slide.classList.remove("active", "from-left", "from-right"); if (index === currentIndex) { if (currentIndex > previousIndex) { slide.classList.add("from-right"); } else if (currentIndex < previousIndex) { slide.classList.add("from-left"); } slide.classList.add("active"); } }); // Update button disabled state prevBtn.disabled = currentIndex === 0; nextBtn.disabled = currentIndex === slides.length - 1; previousIndex = currentIndex; } function updateSlider() { const slideWidth = slider.getBoundingClientRect().width; const currentIndex = Math.round(slider.scrollLeft / slideWidth); setActive(currentIndex); } function goToSlide(index) { const slideWidth = slider.getBoundingClientRect().width; slider.scrollTo({ left: index * slideWidth, behavior: "smooth" }); } // Button clicks prevBtn.addEventListener("click", () => { const slideWidth = slider.getBoundingClientRect().width; const currentIndex = Math.round(slider.scrollLeft / slideWidth); goToSlide(Math.max(currentIndex - 1, 0)); }); nextBtn.addEventListener("click", () => { const slideWidth = slider.getBoundingClientRect().width; const currentIndex = Math.round(slider.scrollLeft / slideWidth); goToSlide(Math.min(currentIndex + 1, slides.length - 1)); }); // Scroll event (keeps swipe/touch working too) slider.addEventListener("scroll", updateSlider); // Window resize window.addEventListener("resize", updateSlider); // Initial load setActive(0); }); /* OUTER WRAPPER */ .highlights-wrapper{ padding: 0 35px; background: #fff; margin-top:-8px !important; } /* MOBILE PADDING FIX */ @media screen and (max-width: 767px){ .highlights-wrapper{ padding: 0 10px; } } /* MAIN SECTION */ .get-highlights{ position: relative; overflow: hidden; background-color: #fff; padding: 0; } /* SLIDE */ .get-highlights-slider .swiper-slide{ display: flex; align-items: center; justify-content: center; border-radius: 16px; overflow: hidden; opacity: 0.25; transform: scale(0.92); transition: all 0.5s ease; } /* ACTIVE SLIDE */ .get-highlights-slider .swiper-slide-active{ opacity: 1; transform: scale(1); z-index: 2; } /* SIDE SLIDES */ .get-highlights-slider .swiper-slide-prev, .get-highlights-slider .swiper-slide-next{ opacity: 0.45; transform: scale(0.95); } /* IMAGE */ .get-highlights-slider .swiper-slide img{ width: 100%; height: 500px; display: block; object-fit: contain; border-radius: 16px; background-color: #fff; } /* PAGINATION */ .swiper-pagination{ margin-top: 24px; position: relative; } .swiper-pagination-bullet{ background: #dbd1b1 !important; opacity: 0.5; width: 8px !important; height: 8px !important; } .swiper-pagination-bullet-active{ opacity: 1 !important; background: #000 !important; } /* MOBILE OPTIMIZATION */ @media screen and (max-width: 767px){ .get-highlights-slider .swiper-slide{ opacity: 0.45; transform: scale(0.92); } .get-highlights-slider .swiper-slide-active{ opacity: 1; transform: scale(1); } .get-highlights-slider .swiper-slide img{ border-radius: 14px; } } .swiper-wrapper{ width:90%; } document.addEventListener("DOMContentLoaded", function () { new Swiper(".get-highlights-slider", { /* Infinite Loop */ loop: true, /* Center Active Slide */ centeredSlides: true, /* Animation */ speed: 800, /* Gap */ spaceBetween: 20, /* Auto Play */ autoplay: { delay: 3000, disableOnInteraction: false, }, /* Pagination */ pagination: { el: ".swiper-pagination", clickable: true, }, /* Responsive */ breakpoints: { /* Small Mobile */ 320: { slidesPerView: 1.08, spaceBetween: 10, }, /* Large Mobile */ 480: { slidesPerView: 1.15, spaceBetween: 12, }, /* Tablet */ 768: { slidesPerView: 2, spaceBetween: 20, }, /* Desktop */ 1024: { slidesPerView: 2.4, spaceBetween: 20, }, /* Large Desktop */ 1400: { slidesPerView: 2.6, spaceBetween: 25, } } }); }); .scroll-restart-video { display: block; width: 100%; height: auto; } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { background: #000; overflow-x: hidden; font-family: Arial, Helvetica, sans-serif; } .visual-hero-wrapper { width: 100%; background: #000; } .visual-hero-stage { display: flex; justify-content: center; align-items: center; padding: 0; } .visual-hero-canvas { position: relative; width: min(92vw, 900px); margin: auto; overflow: hidden; } .visual-hero-backdrop { width: 200%; display: block; } .visual-hero-layer { position: absolute; top: 40%; left: 25%; width: 50%; height: 50%; object-fit: contain; pointer-events: none; will-change: opacity; transition: none; } .visual-hero-alpha { opacity: 1; z-index: 1; } .visual-hero-beta { opacity: 0; z-index: 2; } /* ===== DESKTOP: full-screen, no cropping on background ===== */ @media (min-width: 1024px) { .visual-hero-stage { width: 100vw; height: 150vh; } .visual-hero-canvas { width: 100vw; height: 150vh; margin: 0; } .visual-hero-backdrop { width: 100%; height: 100%; object-fit: cover; object-position: center; } /* layers keep their original position/size (top:28%, left:8%, width:85%, height:85%, object-fit:contain) from the base rules above — they scale with the bigger canvas but are not stretched to cover */ } (function () { function startAnimationTrack() { const viewportContainers = document.querySelectorAll(".visual-hero-stage"); if (!viewportContainers.length) return; const activeNodes = []; viewportContainers.forEach(stageNode => { const initialLayer = stageNode.querySelector(".visual-hero-alpha"); const secondaryLayer = stageNode.querySelector(".visual-hero-beta"); if (initialLayer && secondaryLayer) { activeNodes.push({ stageNode, initialLayer, secondaryLayer }); } }); if (!activeNodes.length) return; let renderRequested = false; function runFadeCalculation(item) { const boundaries = item.stageNode.getBoundingClientRect(); if (boundaries.width === 0 && boundaries.height === 0) return; const viewportHeight = window.innerHeight; const totalScrollRange = viewportHeight + boundaries.height; const absoluteScrolled = viewportHeight - boundaries.top; let percentageScrolled = absoluteScrolled / totalScrollRange; percentageScrolled = Math.max(0, Math.min(1, percentageScrolled)); const triggerStart = 0.55; const triggerEnd = 0.80; let currentOpacity; if (percentageScrolled <= triggerStart) { currentOpacity = 0; } else if (percentageScrolled >= triggerEnd) { currentOpacity = 1; } else { currentOpacity = (percentageScrolled - triggerStart) / (triggerEnd - triggerStart); } item.initialLayer.style.opacity = String(1 - currentOpacity); item.secondaryLayer.style.opacity = String(currentOpacity); } function executeFrameUpdate() { activeNodes.forEach(runFadeCalculation); renderRequested = false; } function triggerTick() { if (!renderRequested) { window.requestAnimationFrame(executeFrameUpdate); renderRequested = true; } } executeFrameUpdate(); window.addEventListener("scroll", triggerTick, { passive: true }); window.addEventListener("resize", triggerTick); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", startAnimationTrack); } else { startAnimationTrack(); } })(); (function () { const videos = document.querySelectorAll(".scroll-restart-video"); if (!videos.length) return; const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { const video = entry.target; if (entry.isIntersecting) { video.currentTime = 0; video.play(); } else { video.pause(); } }); }, { threshold: 0.5 }); // fires when 50% of the video is visible videos.forEach((video) => observer.observe(video)); })(); /* MAIN WRAPPER */ .cf-outer{ width:100%; margin:0; overflow:hidden; } .cf-outer img{ width:100%; max-width:100%; display:block; } /* SWIPER FIX */ .cf-swiper{ width:auto; margin-top: 0px; overflow:hidden; } .cf-swiper .swiper-wrapper{ align-items:center; } .cf-swiper .swiper-slide{ box-sizing:border-box; } /* MAIN SECTION */ .cf-section{ position: relative; overflow: hidden; background-color: #fff; padding: 0; } /* SLIDE */ .cf-swiper .swiper-slide{ display: flex; align-items: center; justify-content: center; border-radius: 16px; overflow: hidden; opacity: 0.25; transform: scale(0.92); transition: all 0.5s ease; } /* ACTIVE */ .cf-swiper .swiper-slide-active{ opacity: 1; transform: scale(1); z-index: 2; } /* SIDE */ .cf-swiper .swiper-slide-prev, .cf-swiper .swiper-slide-next{ opacity: 0.45; transform: scale(0.95); } /* IMAGE */ .cf-swiper .swiper-slide img{ width: 100%; height: 800px; display: block; object-fit: contain; border-radius: 16px; background-color: #fff; } /* PAGINATION */ .cf-pagination{ margin-top: 18px; position: relative; } .cf-pagination .swiper-pagination-bullet{ background: #959595 !important; opacity: 0.5; width: 8px !important; height: 8px !important; } .cf-pagination .swiper-pagination-bullet-active{ opacity: 1 !important; background: #000 !important; } /* MOBILE */ @media screen and (max-width: 767px){ .cf-swiper .swiper-slide{ opacity: 0.45; transform: scale(0.92); } .cf-swiper .swiper-slide-active{ opacity: 1; transform: scale(1); } .cf-swiper .swiper-slide img{ height: 500px; border-radius: 14px; } } .cf-container{ max-width: 1600px; margin: 0 auto; padding: 0 24px; } document.addEventListener("DOMContentLoaded", function () { new Swiper("#cfSwiper", { loop: true, centeredSlides: true, speed: 800, spaceBetween: 20, autoplay: { delay: 3000, disableOnInteraction: false, }, pagination: { el: ".cf-pagination", clickable: true, }, breakpoints: { 320: { slidesPerView: 1.08, spaceBetween: 10, }, 480: { slidesPerView: 1.15, spaceBetween: 12, }, 768: { slidesPerView: 2, spaceBetween: 20, }, 1024: { slidesPerView: 2.4, spaceBetween: 20, }, 1400: { slidesPerView: 2.6, spaceBetween: 25, } } }); }); FAQs Q.What makes DwOTS BOLD stand out from other earbuds? DwOTS BOLD brings flagship features to your pocket — a 1.83” smart touch display on the case, 3D Spatial Audio, ANC up to 32dB, and up to 60 hours of battery life. It’s designed for people who want more than just sound — they want control, style, and performance. Q. Is the touch display actually useful, or just for looks? It’s 100% functional. You can adjust volume, change EQ modes, control calls, toggle ANC, and even locate your earbuds — all from the case. It’s like having a mini control center in your pocket. Q.What is the Hall Switch, and why does it matter? The Hall Switch enables instant auto-pairing — your earbuds connect to your device the moment you open the case. No fiddling with Bluetooth menus. It’s seamless and saves time, especially when you're on the move. Q. How effective is the Active Noise Cancellation (ANC)? DwOTS BOLD offers ANC up to 32dB, blocking out background noise for a more immersive experience — whether you’re in traffic, on a flight, or just trying to focus. Q. Are these earbuds good for both gaming and calls? Yes. With a 45ms low latency mode, audio syncs perfectly while gaming. And with four mics plus Environmental Noise Cancellation (ENC), your voice stays clear even in noisy environments. Q. Is DwOTS Bold compatible with both Android and iPhones? Yes, DwOTS Bold is compatible with both Android and iPhones. It pairs effortlessly with both platforms and delivers consistent performance. Q.Are they workout-friendly? Absolutely. The earbuds are IPX5-rated, so they can handle sweat, splashes, and a bit of rain. Plus, the medical-grade silicone tips stay secure during movement. Q.What’s the warranty and support like? You’re covered with a 365-day warranty and nationwide service support. If anything goes wrong, our team’s just a WhatsApp or email away. Specifications Country Of Origin India Packed and Marketed By ACwO Lifestyle Pvt Ltd Address 3RD, Office no.6, Ratan Chs Ltd, SV Road, near gokul shopping centre, Borivali West, Mumbai, Mumbai Suburban, Maharashtra - 400092 Manufacturing Address Plot No. 58-60, 1st Floor, Apple Industrial Hub, Pelhar, Dist. Palghar, Maharashtra - 401208 Package Contains 1 Set of Wireless Earbuds, 1 Charging Cable, 1 Warranty Card, 1 Scan me Card Technical Specification Speaker Driver 13mm playtime Up To 60 Hours BT 5.4 Wireless Range 10M Compatibility Android & iOS Frequency 20Hz-20KHz Water Resistance Rating IPX5 (WATER AND SWEAT RESISTANT) Audio codecs supported AAC,SBC Physical Specification Charging case dimension (L*W*H) 59*28*55 MM Charging case weight 51.10 GRAMS Touch Display SCREEN SIZE 1.83 INCHES Form Factor IN EAR Controls Smart Touch Controls (EQ Mode, Voice Assistant, Volume, Play/ Pause Media, Call Control from both earbuds) Additional Features HALL SWITCH FUNCTION SCREEN SIZE 1.83 INCHES INTELLIGENT FULL COLOUR TOUCH SCREEN Find My Earphone/Answer & Hang-Up Calls ANC / TRANSPARENCY MODE SWITCH Customer Support and Warranty Pan India Service Centers A vast network of service centers across India ensures your support needs are met promptly. Dedicated Customer Support Our customer support team is just a call, email, or WhatsApp message away, ensuring you have assistance whenever you need it. Warranty We believe in the quality of our product. That's why we offer an impressive 365 days of warranty coverage from the date of purchase, giving you peace of mind.
Read More