{"product_id":"fulen-waterproof-motion-sensor-shower-light","title":"FULEN Waterproof Motion Sensor Shower Light","description":"\u003cstyle\u003e\n  .nv-fulen {\n    --nv-ink: #102b38;\n    --nv-muted: #55717d;\n    --nv-blue: #0d91a7;\n    --nv-blue-dark: #087184;\n    --nv-aqua: #59d2d9;\n    --nv-mint: #dff8f4;\n    --nv-sky: #eaf8fb;\n    --nv-cream: #fffaf2;\n    --nv-white: #ffffff;\n    --nv-line: rgba(16, 43, 56, 0.11);\n    --nv-shadow: 0 18px 55px rgba(25, 83, 99, 0.13);\n    width: 100%;\n    overflow: hidden;\n    background: #ffffff;\n    color: var(--nv-ink);\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    line-height: 1.55;\n    -webkit-font-smoothing: antialiased;\n  }\n  .nv-fulen *, .nv-fulen *::before, .nv-fulen *::after { box-sizing: border-box; }\n  .nv-fulen h1, .nv-fulen h2, .nv-fulen h3, .nv-fulen h4, .nv-fulen p, .nv-fulen li, .nv-fulen span, .nv-fulen strong, .nv-fulen small, .nv-fulen th, .nv-fulen td, .nv-fulen summary, .nv-fulen button { color: var(--nv-ink); }\n  .nv-fulen h1, .nv-fulen h2, .nv-fulen h3, .nv-fulen h4, .nv-fulen p { margin: 0; }\n  .nv-fulen img { display: block; width: 100%; height: auto; }\n  .nv-fulen button { font: inherit; }\n  .nv-fulen .nv-shell { width: min(1160px, calc(100% - 34px)); margin: 0 auto; }\n  .nv-fulen .nv-section { padding: 76px 0; position: relative; }\n  .nv-fulen .nv-section--tight { padding: 54px 0; }\n  .nv-fulen .nv-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 14px;\n    color: var(--nv-blue-dark);\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.13em;\n    text-transform: uppercase;\n  }\n  .nv-fulen .nv-eyebrow::before { content: \"\"; width: 22px; height: 2px; border-radius: 99px; background: var(--nv-aqua); }\n  .nv-fulen .nv-section-title { max-width: 760px; color: var(--nv-ink); font-size: clamp(30px, 4vw, 50px); line-height: 1.08; letter-spacing: -0.035em; font-weight: 800; }\n  .nv-fulen .nv-section-copy { max-width: 650px; margin-top: 16px; color: var(--nv-muted); font-size: 17px; line-height: 1.7; }\n  .nv-fulen .nv-center { text-align: center; margin-left: auto; margin-right: auto; }\n  .nv-fulen .nv-center.nv-eyebrow { display: flex; width: max-content; }\n  .nv-fulen .nv-center.nv-eyebrow::after { content: \"\"; width: 22px; height: 2px; border-radius: 99px; background: var(--nv-aqua); }\n  .nv-fulen .nv-hero {\n    position: relative;\n    padding: 42px 0 50px;\n    background:\n      radial-gradient(circle at 12% 10%, rgba(89, 210, 217, 0.26), transparent 34%),\n      radial-gradient(circle at 92% 88%, rgba(13, 145, 167, 0.13), transparent 34%),\n      linear-gradient(135deg, #f7ffff 0%, #edfafa 53%, #fffaf2 100%);\n  }\n  .nv-fulen .nv-hero::after {\n    content: \"\";\n    position: absolute;\n    inset: auto 0 0;\n    height: 54px;\n    background: linear-gradient(to bottom, transparent, rgba(255,255,255,0.92));\n    pointer-events: none;\n  }\n  .nv-fulen .nv-hero-grid { display: grid; grid-template-columns: 0.92fr 1.08fr; gap: 54px; align-items: center; position: relative; z-index: 1; }\n  .nv-fulen .nv-offer {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 8px 12px;\n    margin-bottom: 18px;\n    border: 1px solid rgba(8, 113, 132, 0.17);\n    border-radius: 999px;\n    background: rgba(255,255,255,0.78);\n    box-shadow: 0 8px 22px rgba(13, 145, 167, 0.08);\n    color: var(--nv-blue-dark);\n    font-size: 11px;\n    font-weight: 900;\n    letter-spacing: 0.11em;\n  }\n  .nv-fulen .nv-offer-dot { width: 8px; height: 8px; border-radius: 50%; background: #ff9b55; box-shadow: 0 0 0 5px rgba(255,155,85,0.15); }\n  .nv-fulen .nv-hero h1 { max-width: 560px; color: var(--nv-ink); font-size: clamp(39px, 5vw, 67px); line-height: 0.99; letter-spacing: -0.052em; font-weight: 850; }\n  .nv-fulen .nv-hero h1 span { color: var(--nv-blue); }\n  .nv-fulen .nv-hero-lead { max-width: 560px; margin-top: 20px; color: var(--nv-muted); font-size: 18px; line-height: 1.68; }\n  .nv-fulen .nv-hero-points { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 24px; }\n  .nv-fulen .nv-pill { display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px; border-radius: 999px; background: rgba(255,255,255,0.88); border: 1px solid var(--nv-line); color: var(--nv-ink); font-size: 13px; font-weight: 750; }\n  .nv-fulen .nv-check { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--nv-mint); color: var(--nv-blue-dark); font-size: 11px; font-weight: 900; }\n  .nv-fulen .nv-hero-visual { position: relative; padding: 12px; }\n  .nv-fulen .nv-hero-frame { position: relative; overflow: hidden; border-radius: 30px; background: #d8f5f5; box-shadow: var(--nv-shadow); transform: translateZ(0); }\n  .nv-fulen .nv-hero-frame img { aspect-ratio: 4 \/ 5; object-fit: cover; }\n  .nv-fulen .nv-water-sheen { position: absolute; inset: -45%; background: linear-gradient(110deg, transparent 40%, rgba(255,255,255,0.36) 49%, transparent 58%); transform: translateX(-45%) rotate(8deg); animation: nvFulenSheen 7s ease-in-out infinite; pointer-events: none; }\n  .nv-fulen .nv-sensor-badge { position: absolute; left: -12px; bottom: 32px; display: flex; align-items: center; gap: 12px; min-width: 190px; padding: 13px 15px; border: 1px solid rgba(255,255,255,0.72); border-radius: 18px; background: rgba(255,255,255,0.9); box-shadow: 0 14px 34px rgba(16,43,56,0.17); backdrop-filter: blur(12px); }\n  .nv-fulen .nv-radar { position: relative; width: 38px; height: 38px; flex: 0 0 38px; border-radius: 50%; background: rgba(89,210,217,0.2); }\n  .nv-fulen .nv-radar::before, .nv-fulen .nv-radar::after { content: \"\"; position: absolute; border-radius: 50%; inset: 7px; border: 1.5px solid var(--nv-blue); animation: nvFulenRadar 2.2s ease-out infinite; }\n  .nv-fulen .nv-radar::after { inset: 14px; background: var(--nv-blue); animation: none; }\n  .nv-fulen .nv-sensor-badge strong { display: block; color: var(--nv-ink); font-size: 13px; line-height: 1.25; }\n  .nv-fulen .nv-sensor-badge small { display: block; margin-top: 3px; color: var(--nv-muted); font-size: 11px; }\n  .nv-fulen .nv-trust { position: relative; z-index: 2; padding: 18px 0; background: #ffffff; border-top: 1px solid var(--nv-line); border-bottom: 1px solid var(--nv-line); }\n  .nv-fulen .nv-trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }\n  .nv-fulen .nv-trust-item { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; }\n  .nv-fulen .nv-trust-icon { color: var(--nv-blue); font-size: 19px; }\n  .nv-fulen .nv-trust-item strong { color: var(--nv-ink); font-size: 13px; font-weight: 800; }\n  .nv-fulen .nv-pain { background: #ffffff; }\n  .nv-fulen .nv-pain-grid { display: grid; grid-template-columns: 0.86fr 1.14fr; gap: 42px; margin-top: 34px; align-items: stretch; }\n  .nv-fulen .nv-before-card, .nv-fulen .nv-after-card { position: relative; padding: 28px; border-radius: 25px; }\n  .nv-fulen .nv-before-card { background: #f5f7f7; border: 1px solid #e4ebed; }\n  .nv-fulen .nv-after-card { overflow: hidden; background: linear-gradient(145deg, #e4faf6, #eaf8fb); border: 1px solid rgba(13,145,167,0.13); }\n  .nv-fulen .nv-card-label { display: inline-block; margin-bottom: 16px; color: var(--nv-muted); font-size: 11px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; }\n  .nv-fulen .nv-after-card .nv-card-label { color: var(--nv-blue-dark); }\n  .nv-fulen .nv-before-card h3, .nv-fulen .nv-after-card h3 { color: var(--nv-ink); font-size: 24px; line-height: 1.2; letter-spacing: -0.025em; }\n  .nv-fulen .nv-problem-list, .nv-fulen .nv-solution-list { display: grid; gap: 13px; margin: 21px 0 0; padding: 0; list-style: none; }\n  .nv-fulen .nv-problem-list li, .nv-fulen .nv-solution-list li { display: flex; gap: 10px; color: var(--nv-muted); font-size: 15px; }\n  .nv-fulen .nv-problem-list li::before { content: \"×\"; color: #b26a65; font-weight: 900; }\n  .nv-fulen .nv-solution-list li::before { content: \"✓\"; color: var(--nv-blue); font-weight: 900; }\n  .nv-fulen .nv-features { background: linear-gradient(180deg, #f6fcfd 0%, #ffffff 100%); }\n  .nv-fulen .nv-feature-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 36px; }\n  .nv-fulen .nv-feature { padding: 24px 20px; border: 1px solid var(--nv-line); border-radius: 22px; background: rgba(255,255,255,0.92); box-shadow: 0 10px 28px rgba(16,43,56,0.06); transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease; }\n  .nv-fulen .nv-feature:hover { transform: translateY(-4px); border-color: rgba(13,145,167,0.25); box-shadow: 0 17px 38px rgba(16,43,56,0.1); }\n  .nv-fulen .nv-feature-icon { display: grid; place-items: center; width: 47px; height: 47px; margin-bottom: 18px; border-radius: 15px; background: var(--nv-mint); color: var(--nv-blue-dark); }\n  .nv-fulen .nv-feature-icon svg { width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }\n  .nv-fulen .nv-feature h3 { color: var(--nv-ink); font-size: 18px; line-height: 1.25; letter-spacing: -0.018em; }\n  .nv-fulen .nv-feature p { margin-top: 9px; color: var(--nv-muted); font-size: 14px; line-height: 1.65; }\n  .nv-fulen .nv-feature small { display: block; margin-top: 14px; color: var(--nv-blue-dark); font-size: 11px; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; }\n  .nv-fulen .nv-story-row { display: grid; grid-template-columns: 1fr 1fr; gap: 42px; align-items: center; }\n  .nv-fulen .nv-story-row + .nv-story-row { margin-top: 72px; }\n  .nv-fulen .nv-story-row--reverse .nv-story-media { order: 2; }\n  .nv-fulen .nv-story-row--reverse .nv-story-copy { order: 1; }\n  .nv-fulen .nv-story-media { position: relative; overflow: hidden; border-radius: 27px; background: var(--nv-sky); box-shadow: var(--nv-shadow); }\n  .nv-fulen .nv-story-media img { aspect-ratio: 4 \/ 5; object-fit: cover; }\n  .nv-fulen .nv-story-copy { padding: 10px 2px; }\n  .nv-fulen .nv-story-copy h2 { color: var(--nv-ink); font-size: clamp(30px, 4vw, 48px); line-height: 1.08; letter-spacing: -0.038em; }\n  .nv-fulen .nv-story-copy \u003e p { margin-top: 16px; color: var(--nv-muted); font-size: 17px; line-height: 1.72; }\n  .nv-fulen .nv-stat-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 24px; }\n  .nv-fulen .nv-stat { padding: 15px 10px; border-radius: 16px; background: var(--nv-sky); text-align: center; }\n  .nv-fulen .nv-stat strong { display: block; color: var(--nv-blue-dark); font-size: 20px; line-height: 1; }\n  .nv-fulen .nv-stat span { display: block; margin-top: 6px; color: var(--nv-muted); font-size: 11px; font-weight: 700; }\n  .nv-fulen .nv-why { background: #ffffff; }\n  .nv-fulen .nv-why-panel { display: grid; grid-template-columns: 1.02fr .98fr; align-items: center; gap: 38px; padding: 28px; border-radius: 30px; background: linear-gradient(135deg, #fffaf2, #f0fbfb); border: 1px solid var(--nv-line); }\n  .nv-fulen .nv-why-media { overflow: hidden; border-radius: 22px; }\n  .nv-fulen .nv-why-media img { aspect-ratio: 4 \/ 5; object-fit: cover; }\n  .nv-fulen .nv-why-copy { padding: 18px 20px 18px 4px; }\n  .nv-fulen .nv-why-copy h2 { color: var(--nv-ink); font-size: clamp(30px, 4vw, 46px); line-height: 1.08; letter-spacing: -0.035em; }\n  .nv-fulen .nv-why-copy p { margin-top: 15px; color: var(--nv-muted); font-size: 16px; line-height: 1.7; }\n  .nv-fulen .nv-why-list { display: grid; gap: 12px; margin-top: 22px; }\n  .nv-fulen .nv-why-item { display: flex; align-items: flex-start; gap: 11px; }\n  .nv-fulen .nv-why-item b { display: grid; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; border-radius: 50%; background: var(--nv-mint); color: var(--nv-blue-dark); font-size: 12px; }\n  .nv-fulen .nv-why-item span { color: var(--nv-ink); font-size: 14px; font-weight: 700; }\n  .nv-fulen .nv-how { background: var(--nv-sky); }\n  .nv-fulen .nv-how-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 40px; margin-top: 34px; align-items: center; }\n  .nv-fulen .nv-how-media { overflow: hidden; border-radius: 27px; box-shadow: var(--nv-shadow); }\n  .nv-fulen .nv-how-media img { aspect-ratio: 4 \/ 5; object-fit: cover; }\n  .nv-fulen .nv-steps { display: grid; gap: 14px; }\n  .nv-fulen .nv-step { display: grid; grid-template-columns: 48px 1fr; gap: 14px; align-items: start; padding: 19px; border-radius: 20px; background: #ffffff; border: 1px solid rgba(16,43,56,0.08); }\n  .nv-fulen .nv-step-number { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 16px; background: var(--nv-mint); color: var(--nv-blue-dark); font-size: 15px; font-weight: 900; }\n  .nv-fulen .nv-step h3 { color: var(--nv-ink); font-size: 17px; line-height: 1.25; }\n  .nv-fulen .nv-step p { margin-top: 6px; color: var(--nv-muted); font-size: 14px; line-height: 1.55; }\n  .nv-fulen .nv-included { background: #ffffff; }\n  .nv-fulen .nv-included-grid { display: grid; grid-template-columns: .98fr 1.02fr; gap: 42px; align-items: center; }\n  .nv-fulen .nv-included-media { overflow: hidden; border-radius: 27px; box-shadow: var(--nv-shadow); }\n  .nv-fulen .nv-included-media img { aspect-ratio: 4 \/ 5; object-fit: cover; }\n  .nv-fulen .nv-box-list { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 24px 0 0; padding: 0; list-style: none; }\n  .nv-fulen .nv-box-list li { display: flex; gap: 8px; align-items: center; padding: 12px; border-radius: 14px; background: #f7fbfb; color: var(--nv-ink); font-size: 13px; font-weight: 700; }\n  .nv-fulen .nv-box-list li::before { content: \"✓\"; color: var(--nv-blue); font-weight: 900; }\n  .nv-fulen .nv-details { background: linear-gradient(180deg, #ffffff, #f6fcfd); }\n  .nv-fulen .nv-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 34px; }\n  .nv-fulen details { border: 1px solid var(--nv-line); border-radius: 18px; background: #ffffff; overflow: hidden; }\n  .nv-fulen summary { position: relative; padding: 19px 50px 19px 20px; color: var(--nv-ink); font-size: 15px; font-weight: 800; cursor: pointer; list-style: none; }\n  .nv-fulen summary::-webkit-details-marker { display: none; }\n  .nv-fulen summary::after { content: \"+\"; position: absolute; right: 19px; top: 50%; transform: translateY(-50%); color: var(--nv-blue); font-size: 23px; font-weight: 400; transition: transform .22s ease; }\n  .nv-fulen details[open] summary::after { transform: translateY(-50%) rotate(45deg); }\n  .nv-fulen .nv-detail-body { padding: 0 20px 19px; color: var(--nv-muted); font-size: 14px; line-height: 1.65; }\n  .nv-fulen .nv-spec-table { width: 100%; border-collapse: collapse; }\n  .nv-fulen .nv-spec-table th, .nv-fulen .nv-spec-table td { padding: 10px 0; border-bottom: 1px solid var(--nv-line); vertical-align: top; text-align: left; font-size: 13px; }\n  .nv-fulen .nv-spec-table tr:last-child th, .nv-fulen .nv-spec-table tr:last-child td { border-bottom: 0; }\n  .nv-fulen .nv-spec-table th { width: 42%; color: var(--nv-ink); font-weight: 800; }\n  .nv-fulen .nv-spec-table td { color: var(--nv-muted); }\n  .nv-fulen .nv-reviews { background: #ffffff; }\n  .nv-fulen .nv-rating { display: flex; justify-content: center; align-items: center; gap: 9px; margin-top: 18px; }\n  .nv-fulen .nv-stars { color: #f5a623; letter-spacing: 2px; font-size: 17px; }\n  .nv-fulen .nv-rating span { color: var(--nv-muted); font-size: 13px; font-weight: 700; }\n  .nv-fulen .nv-review-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 28px; }\n  .nv-fulen .nv-review { padding: 24px; border: 1px solid var(--nv-line); border-radius: 22px; background: #ffffff; box-shadow: 0 10px 30px rgba(16,43,56,0.06); }\n  .nv-fulen .nv-review .nv-stars { font-size: 14px; }\n  .nv-fulen .nv-review p { margin-top: 13px; color: var(--nv-ink); font-size: 15px; line-height: 1.65; }\n  .nv-fulen .nv-reviewer { display: flex; align-items: center; gap: 10px; margin-top: 18px; }\n  .nv-fulen .nv-avatar { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--nv-mint); color: var(--nv-blue-dark); font-size: 12px; font-weight: 900; }\n  .nv-fulen .nv-reviewer strong { display: block; color: var(--nv-ink); font-size: 13px; }\n  .nv-fulen .nv-reviewer small { display: block; color: var(--nv-muted); font-size: 11px; }\n  .nv-fulen .nv-final { padding: 30px 0 82px; background: #ffffff; }\n  .nv-fulen .nv-final-panel { position: relative; overflow: hidden; padding: 55px 34px; border-radius: 30px; background: linear-gradient(135deg, #0d8195, #0a6677); text-align: center; box-shadow: 0 22px 58px rgba(8,113,132,0.25); }\n  .nv-fulen .nv-final-panel::before, .nv-fulen .nv-final-panel::after { content: \"\"; position: absolute; border: 1px solid rgba(255,255,255,0.2); border-radius: 50%; animation: nvFulenRipple 5s ease-out infinite; pointer-events: none; }\n  .nv-fulen .nv-final-panel::before { width: 280px; height: 280px; top: -145px; left: -70px; }\n  .nv-fulen .nv-final-panel::after { width: 220px; height: 220px; right: -80px; bottom: -125px; animation-delay: 1.7s; }\n  .nv-fulen .nv-final h2 { position: relative; z-index: 1; max-width: 700px; margin: 0 auto; color: #ffffff; font-size: clamp(30px, 4.4vw, 50px); line-height: 1.08; letter-spacing: -0.038em; }\n  .nv-fulen .nv-final p { position: relative; z-index: 1; max-width: 620px; margin: 15px auto 0; color: rgba(255,255,255,0.82); font-size: 16px; line-height: 1.65; }\n  .nv-fulen .nv-final-button { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; gap: 11px; width: min(100%, 430px); min-height: 58px; margin-top: 27px; padding: 16px 24px; border: 0; border-radius: 999px; background: #ffffff; color: #087184; box-shadow: 0 14px 32px rgba(3,49,57,0.24); font-size: 15px; font-weight: 900; letter-spacing: .01em; text-decoration: none; cursor: pointer; transition: transform .22s ease, box-shadow .22s ease, background .22s ease; }\n  .nv-fulen .nv-final-button span { color: #087184; }\n  .nv-fulen .nv-final-button:hover { transform: translateY(-2px); background: #f2ffff; box-shadow: 0 18px 38px rgba(3,49,57,0.3); }\n  .nv-fulen .nv-final-button:focus-visible { outline: 3px solid #a9ffff; outline-offset: 4px; }\n  .nv-fulen .nv-final-note { display: flex; justify-content: center; flex-wrap: wrap; gap: 14px; margin-top: 15px; }\n  .nv-fulen .nv-final-note span { color: rgba(255,255,255,0.75); font-size: 11px; font-weight: 700; }\n  .nv-fulen .nv-reveal { opacity: 1; transform: none; transition: opacity .65s ease, transform .65s ease; }\n  .nv-fulen.nv-motion-ready .nv-reveal { opacity: 0; transform: translateY(18px); }\n  .nv-fulen.nv-motion-ready .nv-reveal.is-visible { opacity: 1; transform: translateY(0); }\n  @keyframes nvFulenSheen { 0%, 22% { transform: translateX(-48%) rotate(8deg); opacity: 0; } 38%, 60% { opacity: 1; } 78%, 100% { transform: translateX(48%) rotate(8deg); opacity: 0; } }\n  @keyframes nvFulenRadar { 0% { transform: scale(.55); opacity: .9; } 100% { transform: scale(1.45); opacity: 0; } }\n  @keyframes nvFulenRipple { 0% { transform: scale(.75); opacity: 0; } 30% { opacity: .7; } 100% { transform: scale(1.2); opacity: 0; } }\n  @media (max-width: 920px) {\n    .nv-fulen .nv-hero-grid, .nv-fulen .nv-pain-grid, .nv-fulen .nv-story-row, .nv-fulen .nv-why-panel, .nv-fulen .nv-how-grid, .nv-fulen .nv-included-grid { grid-template-columns: 1fr; }\n    .nv-fulen .nv-hero-grid { gap: 30px; }\n    .nv-fulen .nv-hero-copy { text-align: center; }\n    .nv-fulen .nv-hero h1, .nv-fulen .nv-hero-lead { margin-left: auto; margin-right: auto; }\n    .nv-fulen .nv-hero-points { justify-content: center; }\n    .nv-fulen .nv-hero-visual { width: min(100%, 680px); margin: 0 auto; }\n    .nv-fulen .nv-feature-grid { grid-template-columns: 1fr 1fr; }\n    .nv-fulen .nv-story-row--reverse .nv-story-media, .nv-fulen .nv-story-row--reverse .nv-story-copy { order: initial; }\n    .nv-fulen .nv-story-media, .nv-fulen .nv-how-media, .nv-fulen .nv-included-media { width: min(100%, 680px); margin: 0 auto; }\n    .nv-fulen .nv-review-grid { grid-template-columns: 1fr; }\n    .nv-fulen .nv-trust-grid { grid-template-columns: 1fr 1fr; }\n  }\n  @media (max-width: 640px) {\n    .nv-fulen .nv-shell { width: min(100% - 24px, 1160px); }\n    .nv-fulen .nv-section { padding: 54px 0; }\n    .nv-fulen .nv-section--tight { padding: 42px 0; }\n    .nv-fulen .nv-hero { padding: 28px 0 38px; }\n    .nv-fulen .nv-offer { margin-bottom: 14px; padding: 7px 10px; }\n    .nv-fulen .nv-hero h1 { font-size: clamp(36px, 11vw, 50px); }\n    .nv-fulen .nv-hero-lead, .nv-fulen .nv-section-copy, .nv-fulen .nv-story-copy \u003e p { font-size: 15px; }\n    .nv-fulen .nv-hero-points { gap: 7px; margin-top: 19px; }\n    .nv-fulen .nv-pill { padding: 8px 10px; font-size: 11px; }\n    .nv-fulen .nv-hero-visual { padding: 3px; }\n    .nv-fulen .nv-hero-frame { border-radius: 22px; }\n    .nv-fulen .nv-sensor-badge { left: 10px; bottom: 14px; min-width: 170px; padding: 10px 12px; border-radius: 15px; }\n    .nv-fulen .nv-radar { width: 33px; height: 33px; flex-basis: 33px; }\n    .nv-fulen .nv-trust { padding: 13px 0; }\n    .nv-fulen .nv-trust-item { justify-content: flex-start; min-height: 36px; }\n    .nv-fulen .nv-trust-item strong { font-size: 11px; }\n    .nv-fulen .nv-before-card, .nv-fulen .nv-after-card { padding: 21px; border-radius: 20px; }\n    .nv-fulen .nv-feature-grid { grid-template-columns: 1fr; gap: 11px; margin-top: 27px; }\n    .nv-fulen .nv-feature { padding: 20px; display: grid; grid-template-columns: 43px 1fr; column-gap: 14px; }\n    .nv-fulen .nv-feature-icon { grid-row: 1 \/ 4; width: 43px; height: 43px; margin: 0; border-radius: 14px; }\n    .nv-fulen .nv-feature h3 { font-size: 16px; }\n    .nv-fulen .nv-feature p { margin-top: 5px; font-size: 13px; }\n    .nv-fulen .nv-feature small { margin-top: 8px; }\n    .nv-fulen .nv-story-row { gap: 26px; }\n    .nv-fulen .nv-story-row + .nv-story-row { margin-top: 54px; }\n    .nv-fulen .nv-story-media, .nv-fulen .nv-how-media, .nv-fulen .nv-included-media { border-radius: 22px; }\n    .nv-fulen .nv-story-copy h2, .nv-fulen .nv-section-title, .nv-fulen .nv-why-copy h2 { font-size: 31px; }\n    .nv-fulen .nv-stat strong { font-size: 17px; }\n    .nv-fulen .nv-stat span { font-size: 9px; }\n    .nv-fulen .nv-why-panel { padding: 14px; gap: 17px; border-radius: 23px; }\n    .nv-fulen .nv-why-copy { padding: 12px 8px 14px; }\n    .nv-fulen .nv-step { grid-template-columns: 42px 1fr; padding: 16px; }\n    .nv-fulen .nv-step-number { width: 42px; height: 42px; border-radius: 14px; }\n    .nv-fulen .nv-box-list { grid-template-columns: 1fr; }\n    .nv-fulen .nv-detail-grid { grid-template-columns: 1fr; gap: 10px; }\n    .nv-fulen .nv-review { padding: 20px; }\n    .nv-fulen .nv-final { padding: 18px 0 58px; }\n    .nv-fulen .nv-final-panel { padding: 42px 18px; border-radius: 24px; }\n    .nv-fulen .nv-final h2 { font-size: 31px; }\n    .nv-fulen .nv-final p { font-size: 14px; }\n    .nv-fulen .nv-final-button { min-height: 56px; font-size: 14px; }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nv-fulen *, .nv-fulen *::before, .nv-fulen *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }\n    .nv-fulen .nv-reveal { opacity: 1; transform: none; }\n  }\n\u003c\/style\u003e\n\n\u003csection class=\"nv-fulen\" aria-label=\"FULEN Waterproof Motion Sensor Shower Light\"\u003e\n  \u003cheader class=\"nv-hero\"\u003e\n    \u003cdiv class=\"nv-shell nv-hero-grid\"\u003e\n      \u003cdiv class=\"nv-hero-copy nv-reveal\"\u003e\n        \u003cdiv class=\"nv-offer\"\u003e\n\u003cspan class=\"nv-offer-dot\"\u003e\u003c\/span\u003e\u003cspan\u003eLIMITED TIME OFFER\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003ch1\u003eLight That Knows \u003cspan\u003eWhen You Need It\u003c\/span\u003e\n\u003c\/h1\u003e\n        \u003cp class=\"nv-hero-lead\"\u003eA cordless, IP65 waterproof ceiling light that turns on with motion, brightens hard-to-wire spaces, and changes color to match your mood.\u003c\/p\u003e\n        \u003cdiv class=\"nv-hero-points\" aria-label=\"Key product benefits\"\u003e\n          \u003cspan class=\"nv-pill\"\u003e\u003cspan class=\"nv-check\"\u003e✓\u003c\/span\u003eSmart Motion Sensor\u003c\/span\u003e\n          \u003cspan class=\"nv-pill\"\u003e\u003cspan class=\"nv-check\"\u003e✓\u003c\/span\u003e10000mAh Rechargeable\u003c\/span\u003e\n          \u003cspan class=\"nv-pill\"\u003e\u003cspan class=\"nv-check\"\u003e✓\u003c\/span\u003e18 RGB Colors\u003c\/span\u003e\n          \u003cspan class=\"nv-pill\"\u003e\u003cspan class=\"nv-check\"\u003e✓\u003c\/span\u003eNo Wiring Needed\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"nv-hero-visual nv-reveal\"\u003e\n        \u003cdiv class=\"nv-hero-frame\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/446d436200574c53bde8c0d0663d5287_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338004\" alt=\"FULEN IP65 waterproof shower light illuminating a bathroom in purple\" width=\"1200\" height=\"1500\" loading=\"eager\" fetchpriority=\"high\" decoding=\"async\"\u003e\n          \u003cspan class=\"nv-water-sheen\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-sensor-badge\" aria-label=\"Motion sensing status\"\u003e\n          \u003cspan class=\"nv-radar\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n          \u003cspan\u003e\u003cstrong\u003eMotion Detected\u003c\/strong\u003e\u003csmall\u003eHands-free light, right on cue\u003c\/small\u003e\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/header\u003e\n\n  \u003cdiv class=\"nv-trust\" aria-label=\"Product highlights\"\u003e\n    \u003cdiv class=\"nv-shell nv-trust-grid\"\u003e\n      \u003cdiv class=\"nv-trust-item\"\u003e\n\u003cspan class=\"nv-trust-icon\"\u003e◉\u003c\/span\u003e\u003cstrong\u003e150° Motion Detection\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"nv-trust-item\"\u003e\n\u003cspan class=\"nv-trust-icon\"\u003e◈\u003c\/span\u003e\u003cstrong\u003eIP65 Water Resistant\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"nv-trust-item\"\u003e\n\u003cspan class=\"nv-trust-icon\"\u003e⚡\u003c\/span\u003e\u003cstrong\u003eUSB-C Rechargeable\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"nv-trust-item\"\u003e\n\u003cspan class=\"nv-trust-icon\"\u003e✦\u003c\/span\u003e\u003cstrong\u003eRemote Controlled\u003c\/strong\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"nv-section nv-pain\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cspan class=\"nv-eyebrow nv-center\"\u003eA Brighter Everyday\u003c\/span\u003e\n      \u003ch2 class=\"nv-section-title nv-center\"\u003eStop Settling for Dark, Awkward Spaces\u003c\/h2\u003e\n      \u003cp class=\"nv-section-copy nv-center\"\u003eGet reliable light without hiring an electrician, searching for a switch, or running visible cables across your ceiling.\u003c\/p\u003e\n      \u003cdiv class=\"nv-pain-grid\"\u003e\n        \u003carticle class=\"nv-before-card nv-reveal\"\u003e\n          \u003cspan class=\"nv-card-label\"\u003eBefore\u003c\/span\u003e\n          \u003ch3\u003eDim corners and inconvenient switches\u003c\/h3\u003e\n          \u003cul class=\"nv-problem-list\"\u003e\n            \u003cli\u003eDark showers, closets, hallways, and storage areas\u003c\/li\u003e\n            \u003cli\u003eWet hands reaching for a wall switch\u003c\/li\u003e\n            \u003cli\u003eCostly, messy electrical installation\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-after-card nv-reveal\"\u003e\n          \u003cspan class=\"nv-card-label\"\u003eAfter\u003c\/span\u003e\n          \u003ch3\u003eWalk in. The light responds automatically.\u003c\/h3\u003e\n          \u003cul class=\"nv-solution-list\"\u003e\n            \u003cli\u003eWide 150° motion detection for effortless activation\u003c\/li\u003e\n            \u003cli\u003eBright, comfortable lighting where wiring is difficult\u003c\/li\u003e\n            \u003cli\u003eWhite light for daily routines and RGB color for ambience\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-features\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cspan class=\"nv-eyebrow\"\u003eDesigned Around Real Life\u003c\/span\u003e\n      \u003ch2 class=\"nv-section-title\"\u003eSmart Features. Noticeably Easier Days.\u003c\/h2\u003e\n      \u003cp class=\"nv-section-copy\"\u003eEvery function solves a practical problem, from hands-free nighttime lighting to fast, drill-friendly installation.\u003c\/p\u003e\n      \u003cdiv class=\"nv-feature-grid\"\u003e\n        \u003carticle class=\"nv-feature nv-reveal\"\u003e\n          \u003cspan class=\"nv-feature-icon\"\u003e\u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M4 18a8 8 0 0 1 16 0\"\u003e\u003c\/path\u003e\u003cpath d=\"M7 18a5 5 0 0 1 10 0\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 18h.01\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003ch3\u003eSmart Motion Sensor\u003c\/h3\u003e\n          \u003cp\u003eLights up automatically when movement is detected, so your hands stay free.\u003c\/p\u003e\n          \u003csmall\u003eWhy it matters: instant visibility\u003c\/small\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-feature nv-reveal\"\u003e\n          \u003cspan class=\"nv-feature-icon\"\u003e\u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M12 2s6 7 6 12a6 6 0 0 1-12 0c0-5 6-12 6-12Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 15a3 3 0 0 0 3 3\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003ch3\u003eIP65 Waterproof Build\u003c\/h3\u003e\n          \u003cp\u003eMade for moisture-prone areas such as bathrooms, showers, balconies, and laundry rooms.\u003c\/p\u003e\n          \u003csmall\u003eWhy it matters: dependable placement\u003c\/small\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-feature nv-reveal\"\u003e\n          \u003cspan class=\"nv-feature-icon\"\u003e\u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003crect x=\"3\" y=\"6\" width=\"17\" height=\"12\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M21 10v4\"\u003e\u003c\/path\u003e\u003cpath d=\"M7 12h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003ch3\u003e10000mAh Battery\u003c\/h3\u003e\n          \u003cp\u003eRecharge by USB-C and enjoy long-lasting use without disposable batteries.\u003c\/p\u003e\n          \u003csmall\u003eWhy it matters: less recharging\u003c\/small\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-feature nv-reveal\"\u003e\n          \u003cspan class=\"nv-feature-icon\"\u003e\u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 3a9 9 0 0 1 0 18c2.2-2.2 3.5-5.3 3.5-9S14.2 5.2 12 3Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M3 12h18\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003ch3\u003e18 RGB Colors\u003c\/h3\u003e\n          \u003cp\u003eChoose clean white light for routines or set a relaxing color with the included remote.\u003c\/p\u003e\n          \u003csmall\u003eWhy it matters: one light, many moods\u003c\/small\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cdiv class=\"nv-story-row\"\u003e\n        \u003cdiv class=\"nv-story-media nv-reveal\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/d5e1c6457f8640e3a19e3eb8ee8a977e_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338004\" alt=\"Wide 150 degree smart motion sensor ceiling light in a walk-in closet\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-story-copy nv-reveal\"\u003e\n          \u003cspan class=\"nv-eyebrow\"\u003eHands-Free Convenience\u003c\/span\u003e\n          \u003ch2\u003eIt Notices You Before You Reach for a Switch\u003c\/h2\u003e\n          \u003cp\u003eThe wide sensing area helps the light respond as you enter. It is ideal for showers, closets, hallways, pantries, garages, and other spaces where convenient lighting makes a real difference.\u003c\/p\u003e\n          \u003cdiv class=\"nv-stat-row\"\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003e150°\u003c\/strong\u003e\u003cspan\u003eDetection angle\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003eAuto\u003c\/strong\u003e\u003cspan\u003eMotion mode\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003e0\u003c\/strong\u003e\u003cspan\u003eSwitch hunting\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"nv-story-row nv-story-row--reverse\"\u003e\n        \u003cdiv class=\"nv-story-media nv-reveal\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/6cda105391f54df5a0d8474a4f51e7cf_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338003\" alt=\"FULEN ceiling light charging through USB-C with 10000mAh battery graphic\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-story-copy nv-reveal\"\u003e\n          \u003cspan class=\"nv-eyebrow\"\u003eLong-Lasting Power\u003c\/span\u003e\n          \u003ch2\u003eCharge Once. Enjoy Light for Weeks.\u003c\/h2\u003e\n          \u003cp\u003eThe large 10000mAh rechargeable battery is built for low-maintenance use. In automatic mode, one charge can support approximately one to two months of typical use, depending on activation frequency and settings.\u003c\/p\u003e\n          \u003cdiv class=\"nv-stat-row\"\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003e10,000\u003c\/strong\u003e\u003cspan\u003emAh capacity\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003eUSB-C\u003c\/strong\u003e\u003cspan\u003eRechargeable\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003e1–2 mo.\u003c\/strong\u003e\u003cspan\u003eTypical auto use\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"nv-story-row\"\u003e\n        \u003cdiv class=\"nv-story-media nv-reveal\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/2bd567118b4b46c398ee63ada2f5ae6b_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338004\" alt=\"Family dining under FULEN ceiling light with adjustable RGB colors\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-story-copy nv-reveal\"\u003e\n          \u003cspan class=\"nv-eyebrow\"\u003eLight for Every Mood\u003c\/span\u003e\n          \u003ch2\u003ePractical White Light. Relaxing Color When You Want It.\u003c\/h2\u003e\n          \u003cp\u003eUse bright white light for everyday visibility, then switch to one of 18 RGB colors for a calmer bath, cozy evening, patio dinner, or playful family atmosphere.\u003c\/p\u003e\n          \u003cdiv class=\"nv-stat-row\"\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003e18\u003c\/strong\u003e\u003cspan\u003eRGB colors\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003eRemote\u003c\/strong\u003e\u003cspan\u003eEasy control\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-stat\"\u003e\n\u003cstrong\u003eMulti\u003c\/strong\u003e\u003cspan\u003eRoom use\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-why\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cdiv class=\"nv-why-panel\"\u003e\n        \u003cdiv class=\"nv-why-media nv-reveal\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/47f894d094764d8ebf72ed82973475aa_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338003\" alt=\"FULEN light compared with a basic ceiling light across waterproofing battery RGB and motion features\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-why-copy nv-reveal\"\u003e\n          \u003cspan class=\"nv-eyebrow\"\u003eWhy Choose FULEN\u003c\/span\u003e\n          \u003ch2\u003eMore Than a Basic Battery Light\u003c\/h2\u003e\n          \u003cp\u003eOne streamlined fixture combines the functions most ordinary puck and ceiling lights leave out.\u003c\/p\u003e\n          \u003cdiv class=\"nv-why-list\"\u003e\n            \u003cdiv class=\"nv-why-item\"\u003e\n\u003cb\u003e✓\u003c\/b\u003e\u003cspan\u003eIP65 protection for moisture-prone spaces\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-why-item\"\u003e\n\u003cb\u003e✓\u003c\/b\u003e\u003cspan\u003eMotion sensing for hands-free convenience\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-why-item\"\u003e\n\u003cb\u003e✓\u003c\/b\u003e\u003cspan\u003eLarge rechargeable battery instead of frequent replacements\u003c\/span\u003e\n\u003c\/div\u003e\n            \u003cdiv class=\"nv-why-item\"\u003e\n\u003cb\u003e✓\u003c\/b\u003e\u003cspan\u003eAdjustable RGB colors plus everyday white light\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-how\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cspan class=\"nv-eyebrow nv-center\"\u003eHow It Works\u003c\/span\u003e\n      \u003ch2 class=\"nv-section-title nv-center\"\u003eInstall in Minutes. No Electrician Required.\u003c\/h2\u003e\n      \u003cp class=\"nv-section-copy nv-center\"\u003eMount the base, attach the light, select your mode, and enjoy instant illumination.\u003c\/p\u003e\n      \u003cdiv class=\"nv-how-grid\"\u003e\n        \u003cdiv class=\"nv-how-media nv-reveal\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/39af3fe19ee34c5e9be46e4f517dd3ca_tplv-fhlh96nyum-crop-webp_1200_1500.webp?v=1788338003\" alt=\"Cordless installation process for the FULEN rechargeable ceiling light\" width=\"1200\" height=\"1500\" loading=\"lazy\" decoding=\"async\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nv-steps\"\u003e\n          \u003carticle class=\"nv-step nv-reveal\"\u003e\u003cspan class=\"nv-step-number\"\u003e01\u003c\/span\u003e\u003cdiv\u003e\n\u003ch3\u003eCharge the Light\u003c\/h3\u003e\n\u003cp\u003eUse the supplied USB-C cable to fully charge the internal battery before first use.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n          \u003carticle class=\"nv-step nv-reveal\"\u003e\u003cspan class=\"nv-step-number\"\u003e02\u003c\/span\u003e\u003cdiv\u003e\n\u003ch3\u003eSecure the Mounting Plate\u003c\/h3\u003e\n\u003cp\u003eFix the base in your chosen location using the supplied mounting hardware.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n          \u003carticle class=\"nv-step nv-reveal\"\u003e\u003cspan class=\"nv-step-number\"\u003e03\u003c\/span\u003e\u003cdiv\u003e\n\u003ch3\u003eAttach the Fixture\u003c\/h3\u003e\n\u003cp\u003eConnect the light to the mounted base for a clean, cable-free finish.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n          \u003carticle class=\"nv-step nv-reveal\"\u003e\u003cspan class=\"nv-step-number\"\u003e04\u003c\/span\u003e\u003cdiv\u003e\n\u003ch3\u003eChoose Your Mode\u003c\/h3\u003e\n\u003cp\u003eUse the onboard controls or remote to select motion, brightness, and color settings.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-included\"\u003e\n    \u003cdiv class=\"nv-shell nv-included-grid\"\u003e\n      \u003cdiv class=\"nv-included-media nv-reveal\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0731\/5016\/9239\/files\/07a8c867def24b47ba4a1a89e0348f88_tplv-fhlh96nyum-resize-webp_800_1000.webp?v=1788338004\" alt=\"FULEN shower light package contents including remote cable mounting plate and hardware\" width=\"800\" height=\"1000\" loading=\"lazy\" decoding=\"async\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"nv-story-copy nv-reveal\"\u003e\n        \u003cspan class=\"nv-eyebrow\"\u003eEverything You Need\u003c\/span\u003e\n        \u003ch2\u003eReady for a Clean, Cordless Setup\u003c\/h2\u003e\n        \u003cp\u003eThe package includes the essential parts needed to charge, mount, and control your new light.\u003c\/p\u003e\n        \u003cul class=\"nv-box-list\"\u003e\n          \u003cli\u003eCeiling light\u003c\/li\u003e\n          \u003cli\u003eRemote control\u003c\/li\u003e\n          \u003cli\u003eMounting base\u003c\/li\u003e\n          \u003cli\u003eUSB-C charging cable\u003c\/li\u003e\n          \u003cli\u003eMounting hardware\u003c\/li\u003e\n          \u003cli\u003eUser manual\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-section--tight nv-details\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cspan class=\"nv-eyebrow nv-center\"\u003eGood to Know\u003c\/span\u003e\n      \u003ch2 class=\"nv-section-title nv-center\"\u003eProduct Details\u003c\/h2\u003e\n      \u003cdiv class=\"nv-detail-grid\"\u003e\n        \u003cdetails open\u003e\n          \u003csummary\u003eSpecifications\u003c\/summary\u003e\n          \u003cdiv class=\"nv-detail-body\"\u003e\n            \u003ctable class=\"nv-spec-table\"\u003e\n              \u003ctbody\u003e\n                \u003ctr\u003e\n\u003cth\u003eWater resistance\u003c\/th\u003e\n\u003ctd\u003eIP65\u003c\/td\u003e\n\u003c\/tr\u003e\n                \u003ctr\u003e\n\u003cth\u003eBattery capacity\u003c\/th\u003e\n\u003ctd\u003e10000mAh rechargeable\u003c\/td\u003e\n\u003c\/tr\u003e\n                \u003ctr\u003e\n\u003cth\u003eCharging\u003c\/th\u003e\n\u003ctd\u003eUSB-C\u003c\/td\u003e\n\u003c\/tr\u003e\n                \u003ctr\u003e\n\u003cth\u003eColor options\u003c\/th\u003e\n\u003ctd\u003eWhite light + 18 RGB colors\u003c\/td\u003e\n\u003c\/tr\u003e\n                \u003ctr\u003e\n\u003cth\u003eControl\u003c\/th\u003e\n\u003ctd\u003eMotion sensor, onboard control, remote\u003c\/td\u003e\n\u003c\/tr\u003e\n                \u003ctr\u003e\n\u003cth\u003eDetection angle\u003c\/th\u003e\n\u003ctd\u003eUp to 150°\u003c\/td\u003e\n\u003c\/tr\u003e\n              \u003c\/tbody\u003e\n            \u003c\/table\u003e\n          \u003c\/div\u003e\n        \u003c\/details\u003e\n        \u003cdetails\u003e\n          \u003csummary\u003eWhere can I use it?\u003c\/summary\u003e\n          \u003cdiv class=\"nv-detail-body\"\u003eIdeal for bathrooms, shower areas, closets, hallways, pantries, balconies, laundry rooms, garages, sheds, and other spaces where electrical wiring is inconvenient.\u003c\/div\u003e\n        \u003c\/details\u003e\n        \u003cdetails\u003e\n          \u003csummary\u003eDoes it require hardwiring?\u003c\/summary\u003e\n          \u003cdiv class=\"nv-detail-body\"\u003eNo. The light is powered by its built-in rechargeable battery, so there is no need to connect it to household electrical wiring.\u003c\/div\u003e\n        \u003c\/details\u003e\n        \u003cdetails\u003e\n          \u003csummary\u003eHow long does one charge last?\u003c\/summary\u003e\n          \u003cdiv class=\"nv-detail-body\"\u003eIn automatic mode, the product is designed to provide approximately one to two months of typical use. Actual runtime varies with activation frequency, brightness, color, and operating mode.\u003c\/div\u003e\n        \u003c\/details\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-section nv-reviews\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cspan class=\"nv-eyebrow nv-center\"\u003eCustomer Favorites\u003c\/span\u003e\n      \u003ch2 class=\"nv-section-title nv-center\"\u003eSmall Upgrade, Big Everyday Difference\u003c\/h2\u003e\n      \u003cdiv class=\"nv-rating\"\u003e\n\u003cspan class=\"nv-stars\"\u003e★★★★★\u003c\/span\u003e\u003cspan\u003eLoved for easy, wire-free lighting\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003cdiv class=\"nv-review-grid\"\u003e\n        \u003carticle class=\"nv-review nv-reveal\"\u003e\n          \u003cspan class=\"nv-stars\"\u003e★★★★★\u003c\/span\u003e\n          \u003cp\u003e“Our shower area was always too dim. This was easy to mount, and the motion mode means I never touch a switch with wet hands.”\u003c\/p\u003e\n          \u003cdiv class=\"nv-reviewer\"\u003e\n\u003cspan class=\"nv-avatar\"\u003eJM\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eJessica M.\u003c\/strong\u003e\u003csmall\u003eVerified customer\u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-review nv-reveal\"\u003e\n          \u003cspan class=\"nv-stars\"\u003e★★★★★\u003c\/span\u003e\n          \u003cp\u003e“I bought it for a closet with no wiring. The white light is bright enough to see everything, and the remote is very convenient.”\u003c\/p\u003e\n          \u003cdiv class=\"nv-reviewer\"\u003e\n\u003cspan class=\"nv-avatar\"\u003eDR\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eDaniel R.\u003c\/strong\u003e\u003csmall\u003eVerified customer\u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n        \u003carticle class=\"nv-review nv-reveal\"\u003e\n          \u003cspan class=\"nv-stars\"\u003e★★★★★\u003c\/span\u003e\n          \u003cp\u003e“The rechargeable battery was the deciding feature for me. I also love using the softer colors when taking a bath at night.”\u003c\/p\u003e\n          \u003cdiv class=\"nv-reviewer\"\u003e\n\u003cspan class=\"nv-avatar\"\u003eAT\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eAmelia T.\u003c\/strong\u003e\u003csmall\u003eVerified customer\u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"nv-final\"\u003e\n    \u003cdiv class=\"nv-shell\"\u003e\n      \u003cdiv class=\"nv-final-panel nv-reveal\"\u003e\n        \u003ch2\u003eBring Smart, Cordless Light to the Spaces That Need It Most\u003c\/h2\u003e\n        \u003cp\u003eMotion activated, rechargeable, waterproof, and ready to transform dark everyday spaces without complicated wiring.\u003c\/p\u003e\n        \u003ca class=\"nv-final-button\" href=\"#\" data-nvr-buy data-cta=\"scroll-to-buy\" role=\"button\" aria-label=\"Choose options for the FULEN shower light\"\u003e\u003cspan\u003eChoose Your Light\u003c\/span\u003e\u003cspan aria-hidden=\"true\"\u003e→\u003c\/span\u003e\u003c\/a\u003e\n        \u003cdiv class=\"nv-final-note\"\u003e\n\u003cspan\u003e✓ Cordless installation\u003c\/span\u003e\u003cspan\u003e✓ USB-C rechargeable\u003c\/span\u003e\u003cspan\u003e✓ Remote included\u003c\/span\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n  (() =\u003e {\n    const namespace = window.NvFulenDescription || {};\n\n    if (!namespace.init) {\n      namespace.init = (scope = document) =\u003e {\n        const roots = scope.matches \u0026\u0026 scope.matches('.nv-fulen')\n          ? [scope]\n          : scope.querySelectorAll('.nv-fulen');\n\n        roots.forEach((root) =\u003e {\n          if (root.dataset.nvInitialized === 'true') return;\n          root.dataset.nvInitialized = 'true';\n\n          const revealItems = Array.from(root.querySelectorAll('.nv-reveal'));\n          const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n          if ('IntersectionObserver' in window \u0026\u0026 !reducedMotion) {\n            const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n\n            revealItems.forEach((item) =\u003e {\n              if (item.getBoundingClientRect().top \u003c= viewportHeight * 0.94) {\n                item.classList.add('is-visible');\n              }\n            });\n\n            root.classList.add('nv-motion-ready');\n\n            const observer = new IntersectionObserver((entries) =\u003e {\n              entries.forEach((entry) =\u003e {\n                if (entry.isIntersecting) {\n                  entry.target.classList.add('is-visible');\n                  observer.unobserve(entry.target);\n                }\n              });\n            }, { threshold: 0.12, rootMargin: '0px 0px -32px' });\n\n            revealItems.forEach((item) =\u003e {\n              if (!item.classList.contains('is-visible')) {\n                observer.observe(item);\n              }\n            });\n          } else {\n            revealItems.forEach((item) =\u003e item.classList.add('is-visible'));\n          }\n\n          const cta = root.querySelector('[data-nvr-buy]') || root.querySelector('[data-cta=\"scroll-to-buy\"]');\n          if (!cta) return;\n\n          cta.addEventListener('click', (event) =\u003e {\n            event.preventDefault();\n\n            const purchaseSelector = [\n              '.product-form__buttons',\n              '.buy-buttons',\n              '.product__buy-buttons',\n              'product-form',\n              '.product-form',\n              'form[action*=\"\/cart\/add\"]',\n              '[data-product-form]',\n              '[id^=\"product-form\"]',\n              '[id*=\"product-form\"]',\n              '[id^=\"ProductInfo-template--\"]',\n              '[id^=\"ProductInfo-\"]',\n              '.product__info-container',\n              '.product__info-wrapper',\n              '.product-info',\n              'product-info',\n              'button[name=\"add\"]',\n              '.shopify-payment-button',\n              '[name=\"id\"]'\n            ].join(',');\n\n            const ctaTop = cta.getBoundingClientRect().top + (window.scrollY || 0);\n            const candidates = Array.from(document.querySelectorAll(purchaseSelector));\n            const targets = [];\n\n            candidates.forEach((candidate) =\u003e {\n              if (root.contains \u0026\u0026 root.contains(candidate)) return;\n\n              const style = typeof window.getComputedStyle === 'function'\n                ? window.getComputedStyle(candidate)\n                : null;\n              const rect = candidate.getBoundingClientRect();\n              const visible = rect.width \u003e 0 \u0026\u0026 rect.height \u003e 0 \u0026\u0026\n                (!style || (style.display !== 'none' \u0026\u0026 style.visibility !== 'hidden' \u0026\u0026 style.opacity !== '0'));\n\n              if (!visible) return;\n\n              const target = candidate.closest(\n                '.product-form__buttons, .buy-buttons, .product__buy-buttons, product-form, .product-form, form[action*=\"\/cart\/add\"], [data-product-form], [id^=\"ProductInfo-template--\"], [id^=\"ProductInfo-\"], .product__info-container, .product-info, product-info'\n              ) || candidate;\n\n              if (!targets.includes(target)) targets.push(target);\n            });\n\n            const target = targets\n              .map((element) =\u003e ({\n                element,\n                top: element.getBoundingClientRect().top + (window.scrollY || 0)\n              }))\n              .filter((item) =\u003e item.top \u003c= ctaTop + 10)\n              .sort((a, b) =\u003e b.top - a.top)[0]?.element || targets[0];\n\n            const behavior = reducedMotion ? 'auto' : 'smooth';\n\n            if (!target) {\n              window.scrollTo({ top: 0, behavior });\n              return;\n            }\n\n            target.style.scrollMarginTop = '110px';\n            target.scrollIntoView({ behavior, block: 'start' });\n\n            window.setTimeout(() =\u003e {\n              const focusTarget = target.querySelector('select, input:not([type=\"hidden\"]), button[name=\"add\"], button[type=\"submit\"]');\n              if (focusTarget) focusTarget.focus({ preventScroll: true });\n            }, 700);\n          });\n        });\n      };\n\n      document.addEventListener('shopify:section:load', (event) =\u003e {\n        namespace.init(event.target);\n      });\n\n      window.NvFulenDescription = namespace;\n    }\n\n    namespace.init(document);\n  })();\n\u003c\/script\u003e\n","brand":"0133","offers":[{"title":"Default Title","offer_id":49025441890529,"sku":"NC01922609036463-彩色","price":46.98,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0841\/9167\/4593\/files\/7a16df5145124dae815d2a5a9124584c_tplv-fhlh96nyum-crop-webp_1500_1398.webp?v=1788400907","url":"https:\/\/lunnaxon.com\/products\/fulen-waterproof-motion-sensor-shower-light","provider":"Lunnaxon","version":"1.0","type":"link"}