{"product_id":"small-wall-cube-for-a-bedside-mark","title":"Beam Shaping Open Flap Aluminium Wall Light","description":"\u003cstyle\u003e\n#fecify-typography-scope { scroll-behavior: auto; overflow-x: visible; display: flow-root; width: 100%; max-width: none; margin: 0; font-weight: 400 !important; }\n#fecify-typography-scope *, #fecify-typography-scope *::before, #fecify-typography-scope *::after { box-sizing: border-box; }\n#fecify-typography-scope img { display: block !important; max-width: 100% !important; width: 100% !important; height: auto !important; margin: 0 !important; padding: 0 !important; border: 0 !important; }\n#fecify-typography-scope video { display: block; max-width: 100%; margin: 0 !important; }\n\n\n    #fecify-typography-scope {\n      --bg: #f4efe8;\n      --bg-soft: #e8e0d4;\n      --ink: #1c1916;\n      --text: #2a2622;\n      --text-soft: #5e564c;\n      --muted: #8a8176;\n      --line: rgba(28, 25, 22, 0.12);\n      --accent: #a56b32;\n      --accent-deep: #7a4e22;\n      --paper: #faf7f2;\n      --night: #161412;\n      --fs-eyebrow: 0.72rem;\n      --fs-meta: 0.875rem;\n      --fs-body: 1rem;\n      --fs-lead: 1.06rem;\n      --fs-h3: 1.28rem;\n      --fs-h2: clamp(1.85rem, 2.8vw, 2.4rem);\n      --fs-display: clamp(2.5rem, 4.4vw, 3.4rem);\n      --font-title: \"Newsreader\", \"Iowan Old Style\", Georgia, serif;\n      --font-ui: \"Manrope\", \"Helvetica Neue\", Arial, sans-serif;\n      --space: clamp(1.55rem, 3.2vw, 2.6rem);\n      --max: 1180px;\n      --ease: cubic-bezier(0.22, 1, 0.36, 1);\n      --radius: 0px;\n      margin: 0;\n      color: var(--text);\n      background:\n        radial-gradient(ellipse 42% 28% at 100% 0%, rgba(165, 107, 50, 0.1), transparent 58%),\n        linear-gradient(180deg, #f7f3ec 0%, #f4efe8 55%, #ebe4d8 100%);\n      font-family: var(--font-ui);\n      font-size: var(--fs-body);\n      font-weight: 400 !important;\n      line-height: 1.6;\n      -webkit-font-smoothing: antialiased;\n    }\n    #fecify-typography-scope *, #fecify-typography-scope *::before, #fecify-typography-scope *::after { box-sizing: border-box; }\n    #fecify-typography-scope img {\n      display: block !important; width: 100% !important; height: auto !important;\n      max-width: 100% !important; margin: 0 !important; padding: 0 !important; border: 0; vertical-align: top;\n    }\n    #fecify-typography-scope a { color: inherit; text-decoration: none; }\n    #fecify-typography-scope p, #fecify-typography-scope span, #fecify-typography-scope li, #fecify-typography-scope div { font-weight: inherit; }\n    #fecify-typography-scope .wrap { width: min(100% - 2rem, var(--max)); margin-inline: auto; }\n    #fecify-typography-scope .eyebrow {\n      margin: 0 0 0.65rem; color: var(--accent-deep);\n      font-family: var(--font-title); font-size: var(--fs-eyebrow); font-weight: 600 !important;\n      letter-spacing: 0.16em; text-transform: uppercase;\n    }\n    #fecify-typography-scope .display {\n      margin: 0; font-family: var(--font-title); font-size: var(--fs-display);\n      font-weight: 500 !important; line-height: 1.05; letter-spacing: -0.03em;\n      color: var(--ink); text-wrap: balance;\n    }\n    #fecify-typography-scope .display em { font-style: italic; font-weight: 500 !important; color: var(--accent-deep); }\n    #fecify-typography-scope .h2 {\n      margin: 0; font-family: var(--font-title); font-size: var(--fs-h2);\n      font-weight: 500 !important; line-height: 1.15; letter-spacing: -0.02em; color: var(--ink);\n    }\n    #fecify-typography-scope .h3 {\n      margin: 0; font-family: var(--font-title); font-size: var(--fs-h3);\n      font-weight: 500 !important; line-height: 1.25; letter-spacing: -0.01em; color: var(--ink);\n    }\n    #fecify-typography-scope h1, #fecify-typography-scope h2, #fecify-typography-scope h3 { font-weight: 500 !important; }\n    #fecify-typography-scope .lead {\n      margin: 0.85rem 0 0; max-width: 36rem; color: var(--text-soft);\n      font-size: var(--fs-lead); font-weight: 400 !important; line-height: 1.6;\n    }\n    #fecify-typography-scope .section-head { margin-bottom: clamp(1rem, 2vw, 1.35rem); }\n    #fecify-typography-scope .section-head .lead { max-width: 38rem; }\n    #fecify-typography-scope .body {\n      margin: 0.4rem 0 0; color: var(--text-soft);\n      font-size: var(--fs-body); font-weight: 400 !important; line-height: 1.5;\n    }\n    #fecify-typography-scope .section { padding: var(--space) 0; }\n    #fecify-typography-scope .section--tight-b { padding-bottom: 0.25rem; }\n    #fecify-typography-scope .section--tight-t { padding-top: 0.5rem; }\n    #fecify-typography-scope .section--snug-b { padding-bottom: 0; }\n    #fecify-typography-scope .section--snug-t { padding-top: 0; }\n    #fecify-typography-scope .section--snug-t .specs-block { padding-top: var(--space); }\n    #fecify-typography-scope .section--band {\n      background: #ebe3d6;\n      border-block: 1px solid rgba(18, 22, 28, 0.08);\n    }\n    #fecify-typography-scope .divider {\n      width: min(100% - 2rem, var(--max)); margin: clamp(1rem, 2vw, 1.35rem) auto;\n      display: flex; align-items: center; gap: 0.7rem;\n    }\n    #fecify-typography-scope .divider__line { flex: 1; height: 1px; background: rgba(18, 22, 28, 0.16); }\n    #fecify-typography-scope .divider__mark {\n      flex: 0 0 auto; width: 0.55rem; height: 0.55rem;\n      background: var(--ink);\n      box-shadow: 6px 0 0 var(--accent);\n    }\n    #fecify-typography-scope .shot {\n      position: relative; overflow: hidden; border-radius: var(--radius);\n      background: var(--bg-soft); line-height: 0;\n      box-shadow: 0 10px 24px rgba(18, 22, 28, 0.08);\n    }\n    #fecify-typography-scope .shot video, #fecify-typography-scope .shot .video-placeholder {\n      display: block; width: 100% !important; height: auto !important; margin: 0 !important;\n      background: var(--bg-soft); object-fit: contain;\n    }\n    #fecify-typography-scope .hero-grid {\n      display: grid; grid-template-columns: 1.2fr 0.9fr;\n      gap: clamp(1.5rem, 3.2vw, 2.6rem); align-items: center;\n    }\n    #fecify-typography-scope .media-frame {\n      position: relative; overflow: hidden; border-radius: var(--radius);\n      background: #ddd4c6; line-height: 0;\n      box-shadow: 0 0 0 1px rgba(18, 22, 28, 0.12), 0 18px 36px rgba(18, 22, 28, 0.12);\n    }\n    #fecify-typography-scope .swap-stack { position: relative; display: grid; width: 100%; }\n    #fecify-typography-scope .swap-stack img {\n      grid-area: 1 \/ 1; width: 100% !important; height: auto !important;\n      max-width: 100% !important; max-height: none !important;\n      margin: 0 !important; display: block !important; object-fit: contain;\n    }\n    #fecify-typography-scope .swap-day { z-index: 0; }\n    #fecify-typography-scope .swap-night {\n      z-index: 1; opacity: 0;\n      animation: xn-day-night 7s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n    }\n    @keyframes xn-day-night {\n      0%, 16% { opacity: 0; } 38%, 60% { opacity: 1; } 84%, 100% { opacity: 0; }\n    }\n    #fecify-typography-scope .media-badge {\n      position: absolute; left: 0.85rem; bottom: 0.85rem; z-index: 3;\n      padding: 0.5rem 0.9rem; border-radius: 0;\n      background: var(--ink); color: #f4f7f9;\n      font-family: var(--font-title); font-size: 0.72rem; font-weight: 600 !important; letter-spacing: 0.14em;\n      text-transform: uppercase; border: 0; cursor: pointer;\n      appearance: none; -webkit-appearance: none;\n    }\n    #fecify-typography-scope .media-frame.is-paused .swap-night { animation: none; }\n    #fecify-typography-scope .media-frame.is-on .swap-night { opacity: 1 !important; animation: none; }\n    #fecify-typography-scope .media-frame.is-off .swap-night { opacity: 0 !important; animation: none; }\n    #fecify-typography-scope .hero-copy { min-width: 0; }\n    #fecify-typography-scope .hero-copy .meta { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 1.1rem 0 0; }\n    #fecify-typography-scope .chip {\n      display: inline-flex; align-items: center; padding: 0.32rem 0.65rem;\n      border-radius: 0; background: transparent; color: var(--ink);\n      font-size: 0.8rem !important; font-weight: 500 !important;\n      border: 1px solid rgba(18, 22, 28, 0.18);\n    }\n    #fecify-typography-scope .swatch-groups { margin-top: 1.2rem; }\n    #fecify-typography-scope .swatches { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin: 0; }\n    #fecify-typography-scope .swatches-label {\n      margin: 0 0.25rem 0 0; font-family: var(--font-title); font-size: var(--fs-eyebrow);\n      font-weight: 600 !important; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted);\n    }\n    #fecify-typography-scope .swatch {\n      width: 1.2rem; height: 1.2rem; border-radius: 0; border: 2px solid #fff;\n      box-shadow: 0 0 0 1px rgba(18, 22, 28, 0.18);\n    }\n    #fecify-typography-scope .detail-grid {\n      display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: clamp(1rem, 2.2vw, 1.35rem);\n    }\n    #fecify-typography-scope .detail-card { margin: 0; padding: 0; background: transparent; border: 0; min-width: 0; }\n    #fecify-typography-scope .detail-card .meta { display: block; margin-top: 0.8rem; }\n    #fecify-typography-scope .detail-card .meta .eyebrow { margin: 0 0 0.3rem; }\n    #fecify-typography-scope .detail-card .meta .h3 { margin: 0; }\n    #fecify-typography-scope .detail-card .meta .body { margin: 0.35rem 0 0; }\n    #fecify-typography-scope .detail-card .shot img,\n    #fecify-typography-scope .space-card .shot img,\n    #fecify-typography-scope .specs-view .shot img,\n    #fecify-typography-scope .feature-grid \u003e .shot img {\n      width: 100% !important; height: auto !important; object-fit: contain;\n    }\n    #fecify-typography-scope .carousel { position: relative; }\n    #fecify-typography-scope .carousel-nav {\n      display: flex; align-items: center; justify-content: center; gap: 0.45rem;\n      margin-top: 1rem; width: 100%;\n    }\n    @media (min-width: 721px) {\n      #fecify-typography-scope .carousel:has(.detail-grid) .carousel-nav { display: none !important; }\n    }\n    #fecify-typography-scope .carousel-btn {\n      display: inline-grid; place-items: center; width: 2.4rem; height: 2.4rem; padding: 0;\n      border: 1px solid rgba(18, 22, 28, 0.2); border-radius: 0;\n      background: var(--paper); color: var(--ink); cursor: pointer;\n      pointer-events: auto !important; touch-action: manipulation;\n      appearance: none; -webkit-appearance: none;\n    }\n    #fecify-typography-scope .carousel-btn:hover { background: var(--ink); color: #f4f7f9; border-color: var(--ink); }\n    #fecify-typography-scope .carousel-btn svg { width: 14px; height: 14px; pointer-events: none; }\n    #fecify-typography-scope .carousel-track {\n      display: flex; gap: clamp(0.9rem, 2vw, 1.25rem);\n      overflow-x: scroll !important; overflow-y: hidden !important;\n      -webkit-overflow-scrolling: touch !important; touch-action: pan-y !important;\n      overscroll-behavior-x: contain; scrollbar-width: none; -ms-overflow-style: none; cursor: grab;\n    }\n    #fecify-typography-scope .carousel-track.is-dragging { cursor: grabbing; }\n    #fecify-typography-scope .carousel-track::-webkit-scrollbar { display: none; }\n    #fecify-typography-scope .carousel-track img, #fecify-typography-scope .carousel-track a, #fecify-typography-scope .carousel-track button,\n    #fecify-typography-scope .carousel-track .shot, #fecify-typography-scope .carousel-track article {\n      -webkit-user-drag: none !important; user-select: none; -webkit-user-select: none;\n      touch-action: pan-y !important;\n    }\n    #fecify-typography-scope .carousel-track * { touch-action: pan-y !important; }\n    #fecify-typography-scope .detail-grid.carousel-track {\n      display: grid; overflow: visible !important; cursor: default; touch-action: auto;\n    }\n    #fecify-typography-scope .detail-grid.carousel-track * { touch-action: auto; }\n    #fecify-typography-scope .space-grid.carousel-track \u003e * {\n      flex: 0 0 calc((100% - 2 * clamp(0.9rem, 2vw, 1.25rem)) \/ 3);\n      max-width: calc((100% - 2 * clamp(0.9rem, 2vw, 1.25rem)) \/ 3); min-width: 0;\n    }\n    #fecify-typography-scope .space-card { padding: 0; background: transparent; border: 0; min-width: 0; }\n    #fecify-typography-scope .space-card .h3 { margin-top: 0.75rem; }\n    #fecify-typography-scope .feature-grid {\n      display: grid; grid-template-columns: 1fr 1.05fr;\n      gap: clamp(1.15rem, 2.6vw, 1.9rem); align-items: stretch;\n    }\n    #fecify-typography-scope .feature-copy {\n      position: relative; overflow: hidden;\n      display: grid;\n      grid-template-columns: minmax(0, 1fr) 6.5rem;\n      align-items: center;\n      gap: 0.35rem 0.85rem;\n      min-width: 0; height: 100%;\n      padding: clamp(1.35rem, 2.6vw, 1.9rem) clamp(1.1rem, 2vw, 1.45rem) clamp(1.35rem, 2.6vw, 1.9rem) clamp(1.35rem, 2.6vw, 1.9rem);\n      background: var(--night); color: #f3efe8;\n      box-shadow: 0 16px 32px rgba(18, 22, 28, 0.16);\n    }\n    #fecify-typography-scope .feature-copy::before {\n      content: \"\"; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;\n      background: linear-gradient(180deg, transparent 8%, var(--accent) 22%, #fff4d8 50%, var(--accent) 78%, transparent 92%);\n    }\n    #fecify-typography-scope .feature-copy .eyebrow { color: #e6b15a; }\n    #fecify-typography-scope .feature-copy .h2 { color: #faf7f2; max-width: 16ch; }\n    #fecify-typography-scope .feature-copy .lead { color: #cfc6ba; max-width: 36ch; }\n    #fecify-typography-scope .feature-stack { min-width: 0; align-self: center; }\n    #fecify-typography-scope .feature-beam {\n      align-self: stretch;\n      display: grid;\n      place-items: center;\n      min-height: 0;\n      margin: 0;\n    }\n    #fecify-typography-scope .feature-beam svg { display: block; width: 100%; height: 100%; max-height: 100%; }\n    #fecify-typography-scope .feature-points {\n      margin: 0; padding: 0.85rem 0 0;\n      border-top: 1px solid rgba(255, 255, 255, 0.12);\n      list-style: none !important;\n    }\n    #fecify-typography-scope .feature-point {\n      margin: 0; padding: 0.42rem 0 0.42rem 0.85rem;\n      border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n      border-left: 2px solid var(--accent);\n      color: #e6dfd4; font-size: var(--fs-body); font-weight: 400 !important; line-height: 1.4;\n    }\n    #fecify-typography-scope .feature-point:last-child { border-bottom: 0; padding-bottom: 0; }\n    #fecify-typography-scope .feature-grid \u003e .shot { height: 100%; min-height: 0; }\n    #fecify-typography-scope .feature-grid \u003e .shot img,\n    #fecify-typography-scope .feature-grid \u003e .shot video { height: 100% !important; object-fit: cover; }\n    #fecify-typography-scope .carousel-dots { display: none; justify-content: center; gap: 0.4rem; margin-top: 0.85rem; }\n    #fecify-typography-scope .carousel-dot {\n      width: 1.1rem; height: 2px; border-radius: 0; padding: 0; border: 0;\n      background: rgba(18, 22, 28, 0.2); cursor: pointer; appearance: none; -webkit-appearance: none;\n    }\n    #fecify-typography-scope .carousel-dot.is-active { background: var(--ink); }\n    @media (max-width: 1024px) {\n      #fecify-typography-scope .carousel-nav { display: none !important; }\n      #fecify-typography-scope .carousel-dots { display: flex; }\n    }\n    #fecify-typography-scope .specs-block {\n      padding: clamp(1.3rem, 2.8vw, 2rem); background: var(--paper);\n      border: 1px solid rgba(18, 22, 28, 0.1);\n    }\n    #fecify-typography-scope .specs-layout {\n      display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);\n      gap: clamp(1.2rem, 2.8vw, 2rem); align-items: center; margin-top: 1.1rem;\n    }\n    #fecify-typography-scope .spec-list { border-top: 1px solid var(--line); margin: 0; padding: 0; min-width: 0; }\n    #fecify-typography-scope .spec-row {\n      display: grid; grid-template-columns: 6.6rem minmax(0, 1fr);\n      gap: 0.25rem 0.7rem; padding: 0.5rem 0; border-bottom: 1px solid var(--line); align-items: center;\n    }\n    #fecify-typography-scope .spec-k {\n      margin: 0; color: var(--muted); font-size: 0.78rem !important; font-weight: 600 !important;\n      letter-spacing: 0.06em; text-transform: uppercase; line-height: 1.3;\n    }\n    #fecify-typography-scope .spec-v {\n      margin: 0; color: var(--text); font-size: var(--fs-body) !important; font-weight: 400 !important;\n      line-height: 1.45; overflow-wrap: break-word;\n    }\n    #fecify-typography-scope .spec-chips { display: flex; flex-wrap: wrap; gap: 0.3rem; }\n    #fecify-typography-scope .spec-chips span {\n      display: inline-block; padding: 0.18rem 0.5rem; background: #fff;\n      border: 1px solid rgba(18, 22, 28, 0.14); color: var(--ink);\n      font-size: 0.78rem !important; font-weight: 500 !important;\n    }\n    @media (max-width: 980px) {\n      #fecify-typography-scope .hero-grid, #fecify-typography-scope .feature-grid, #fecify-typography-scope .specs-layout {\n        display: grid !important; grid-template-columns: 1fr !important;\n      }\n      #fecify-typography-scope .feature-copy { grid-template-columns: minmax(0, 1fr) 5.2rem; height: auto; }\n      #fecify-typography-scope .feature-beam { min-height: 11rem; }\n      #fecify-typography-scope .feature-points { margin-top: 0.4rem; }\n      #fecify-typography-scope .feature-grid \u003e .shot { height: auto; }\n      #fecify-typography-scope .feature-grid \u003e .shot img,\n      #fecify-typography-scope .feature-grid \u003e .shot video { height: auto !important; object-fit: contain; }\n      #fecify-typography-scope .space-grid.carousel-track \u003e * {\n        flex: 0 0 calc((100% - clamp(0.9rem, 2vw, 1.25rem)) \/ 2);\n        max-width: calc((100% - clamp(0.9rem, 2vw, 1.25rem)) \/ 2);\n      }\n    }\n    @media (max-width: 720px) {\n      #fecify-typography-scope {\n        --fs-display: 2.25rem; --fs-h2: 1.75rem; --fs-h3: 1.2rem;\n        --fs-body: 0.9375rem; --fs-lead: 0.95rem;\n        width: 100vw !important; max-width: 100vw !important;\n        margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important;\n        padding-left: max(20px, env(safe-area-inset-left, 0px)) !important;\n        padding-right: max(20px, env(safe-area-inset-right, 0px)) !important;\n        box-sizing: border-box !important; overflow-x: visible;\n      }\n      #fecify-typography-scope .wrap { width: 100%; max-width: none; padding-inline: 0; }\n      #fecify-typography-scope .wrap.specs-block { padding: 1.2rem 1.05rem !important; }\n      #fecify-typography-scope .section { padding-top: 1.35rem; padding-bottom: 1.35rem; }\n      #fecify-typography-scope .section--snug-b { padding-bottom: 0; }\n      #fecify-typography-scope .section--snug-t { padding-top: 0; }\n      #fecify-typography-scope .section--snug-t .specs-block { padding-top: 1.35rem; }\n      #fecify-typography-scope .divider { width: 100%; }\n      #fecify-typography-scope .section--band {\n        margin-inline: calc(-1 * max(20px, env(safe-area-inset-left, 0px)));\n        padding-inline: max(20px, env(safe-area-inset-left, 0px));\n        width: 100vw; box-sizing: border-box;\n      }\n      #fecify-typography-scope .swap-stack img,\n      #fecify-typography-scope .detail-card .shot img,\n      #fecify-typography-scope .space-card .shot img,\n      #fecify-typography-scope .specs-view .shot img,\n      #fecify-typography-scope .feature-grid \u003e .shot img {\n        width: 100% !important; height: auto !important; max-height: none !important;\n        object-fit: contain !important;\n      }\n      #fecify-typography-scope .detail-grid.carousel-track {\n        display: flex !important; overflow-x: scroll !important; cursor: grab; touch-action: pan-y !important;\n      }\n      #fecify-typography-scope .detail-grid.carousel-track * { touch-action: pan-y !important; }\n      #fecify-typography-scope .detail-grid.carousel-track \u003e * { flex: 0 0 min(78%, 300px); max-width: min(78%, 300px); }\n      #fecify-typography-scope .carousel:has(.detail-grid) .carousel-nav { display: flex !important; }\n      #fecify-typography-scope .space-grid.carousel-track \u003e * { flex: 0 0 min(78%, 300px); max-width: min(78%, 300px); }\n      #fecify-typography-scope .spec-row { grid-template-columns: 1fr; gap: 0.12rem; align-items: start; }\n      .el-collapse-item__wrap:has(#ml-xena-pdp), .el-collapse-item__wrap:has(#fecify-typography-scope),\n      .el-collapse-item__content:has(#ml-xena-pdp), .el-collapse-item__content:has(#fecify-typography-scope),\n      .body_html:has(#ml-xena-pdp), .body_html:has(#fecify-typography-scope) {\n        overflow: visible !important; height: auto !important; max-height: none !important;\n      }\n      .body_html:has(#ml-xena-pdp), .body_html:has(#fecify-typography-scope) {\n        width: 100vw !important; max-width: 100vw !important;\n        margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important;\n        padding-left: 0 !important; padding-right: 0 !important;\n        box-sizing: border-box !important; background: transparent !important;\n      }\n      #ml-xena-pdp { box-shadow: -100vw 0 0 0 #f4efe8, 100vw 0 0 0 #f4efe8; }\n    }\n\n  \n\u003c\/style\u003e\u003cdiv id=\"fecify-typography-scope\"\u003e\n\u003csection class=\"section section--tight-b\"\u003e\u003cdiv class=\"wrap hero-grid\"\u003e\n\u003cdiv class=\"media-frame\" aria-label=\"On and off light preview\" data-swap=\"auto\"\u003e\n\u003cdiv class=\"swap-stack\"\u003e\n\u003cimg class=\"swap-day\" src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/1e43a0cd46887d8b6a15b47a198daf87.jpg\" alt=\"Cube wall lights off beside a wood entry door in daylight\" width=\"1536\" height=\"1024\"\u003e \u003cimg class=\"swap-night\" src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/d904786b4f1ca820a77c46aa6ebcef39.jpg\" alt=\"Cube wall lights on, casting warm up-and-down beams at dusk\" width=\"1536\" height=\"1024\"\u003e\n\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"media-badge\" aria-label=\"Toggle on and off light preview\"\u003eOn \/ Off\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"hero-copy\"\u003e\n\u003cp class=\"eyebrow\"\u003eAluminum LED wall light\u003c\/p\u003e\n\u003ch1 class=\"display\"\u003eA cube of light.\u003cbr\u003e\u003cem\u003eBeams you shape.\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"lead\"\u003eOn the wall, warm beams run up and down once the cube leaves its quiet daytime block. Tap On \/ Off.\u003c\/p\u003e\n\u003cdiv class=\"meta\"\u003e\n\u003cspan class=\"chip\"\u003eIP54 outdoor\u003c\/span\u003e \u003cspan class=\"chip\"\u003e2700K\u003c\/span\u003e \u003cspan class=\"chip\"\u003eHardwire or battery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"swatch-groups\" aria-label=\"Available finishes\"\u003e\u003cdiv class=\"swatches\"\u003e\n\u003cp class=\"swatches-label\"\u003eFinish\u003c\/p\u003e\n\u003cspan class=\"swatch\" title=\"Black\" aria-label=\"Black\" style=\"background: #1a1a1a;\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"White\" aria-label=\"White\" style=\"background: linear-gradient(145deg,#f7f7f5,#d9d9d6);\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"Rust brown\" aria-label=\"Rust brown\" style=\"background: linear-gradient(145deg,#8a5a3a,#5c3824);\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"Nickel\" aria-label=\"Nickel\" style=\"background: linear-gradient(145deg,#f2f4f6,#c5c9ce 48%,#8d939a);\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"Red\" aria-label=\"Red\" style=\"background: linear-gradient(145deg,#c23a2e,#8e241c);\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"Orange\" aria-label=\"Orange\" style=\"background: linear-gradient(145deg,#e07a2e,#b85a18);\"\u003e\u003c\/span\u003e \u003cspan class=\"swatch\" title=\"Sage green\" aria-label=\"Sage green\" style=\"background: linear-gradient(145deg,#9aab8c,#6f7f62);\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cdiv class=\"divider\" aria-hidden=\"true\"\u003e\n\u003cspan class=\"divider__line\"\u003e\u003c\/span\u003e \u003cspan class=\"divider__mark\"\u003e\u003c\/span\u003e \u003cspan class=\"divider__line\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003csection class=\"section section--tight-t\"\u003e\u003cdiv class=\"wrap\"\u003e\u003cdiv class=\"carousel\" data-loop=\"1\"\u003e\n\u003cdiv class=\"section-head\"\u003e\n\u003cp class=\"eyebrow\"\u003eIn detail\u003c\/p\u003e\n\u003ch2 class=\"h2\"\u003eFour flaps. One cube.\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eShape the beam with four adjustable light flaps. Hardwired covers outdoor IP54. Battery covers indoor use.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"detail-grid carousel-track\"\u003e\n\u003carticle class=\"detail-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/4343c900f904a940042d2afa029d47ff.jpg\" alt=\"Close-up of black cube sconce with adjustable inner flaps\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"meta\"\u003e\n\u003cp class=\"eyebrow\"\u003eFlaps\u003c\/p\u003e\n\u003ch3 class=\"h3\"\u003eShape the light\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eEach flap tilts. The beam can open, narrow, or redirect into a pattern on the wall.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\u003carticle class=\"detail-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/29cdd0ebe08d768561c64843b68f3adb.jpg\" alt=\"Close-up of white cube sconce showing adjustable shutters\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"meta\"\u003e\n\u003cp class=\"eyebrow\"\u003eHousing\u003c\/p\u003e\n\u003ch3 class=\"h3\"\u003eAluminum cube\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eIndoors, choose the battery version. Outdoors, the compact 10 cm shell is hardwired and splash-proof.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\u003carticle class=\"detail-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/caa3f56d8f4a00d31e62dd256b3998af.jpg\" alt=\"Black cube sconce casting warm up and down beams\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"meta\"\u003e\n\u003cp class=\"eyebrow\"\u003eBeam\u003c\/p\u003e\n\u003ch3 class=\"h3\"\u003eWarm 2700K\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eBeams on the wall turn it graphic. By day the soft warm-white light stays calm.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/article\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"carousel-nav\" aria-label=\"Details carousel controls\"\u003e\n\u003cbutton type=\"button\" class=\"carousel-btn carousel-btn--prev\" aria-label=\"Previous\"\u003e\u003csvg viewbox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\"\u003e\u003cpath d=\"M9 2L4 7l5 5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e \u003cbutton type=\"button\" class=\"carousel-btn carousel-btn--next\" aria-label=\"Next\"\u003e\u003csvg viewbox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\"\u003e\u003cpath d=\"M5 2l5 5-5 5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"carousel-dots\" aria-label=\"Details pagination\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"section section--band\"\u003e\u003cdiv class=\"wrap\"\u003e\u003cdiv class=\"carousel\" data-loop=\"1\"\u003e\n\u003cdiv class=\"section-head\"\u003e\n\u003cp class=\"eyebrow\"\u003eOn the wall\u003c\/p\u003e\n\u003ch2 class=\"h2\"\u003eBedside, dining, entry—and more.\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eHardwired, it may live outside. By day it is an indoor cube that reads as architecture.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"space-grid carousel-track\"\u003e\n\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/c2ee0e4fb0cac6f4aae7d04447fea903.jpg\" alt=\"Cube sconces soft-lighting a bedroom bedside pair\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eBedside\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eArt in the middle, paired glows around it, soft light on both nightstands.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/ea4beae1006be6fedf5b1ab55252c282.jpg\" alt=\"Cube sconces warming a dining banquette wall\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eDining\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eQuiet, warm, and above the banquette: pools of light for the morning.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/19\/2fe407f8c137f95e7f1ed9baa1cba4e8.jpg\" alt=\"Cube sconces flanking art above an entry console\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eEntry\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eConsole below, art above, flanked, and the hall is welcomed with soft geometry.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/834fc4ff8babda1b91ba1c3541c0c5b6.jpg\" alt=\"Cube sconces glowing above a living room sofa\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eLiving\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eThe art above the sofa is framed by paired beams.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/893898b0a6d23c68d10e060588bc6300.jpg\" alt=\"Black cube sconce above a bedroom nightstand at dusk\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eBedroom\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eNightstand below. Warm hourglass of light above.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/1e306b57e98ff3c2c2ab2a219083c486.jpg\" alt=\"Aluminum cube sconces lighting a stair hall\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003eStair\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eClimb and landing, each marked by crossed beams.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"space-card\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/1c3f9c4a7084567c4e7437285186012e.jpg\" alt=\"White cube sconces on an outdoor patio at twilight\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\n\u003ch3 class=\"h3\"\u003ePatio\u003c\/h3\u003e\n\u003cp class=\"body\"\u003eEntry, evening, hardwired, rated IP54.\u003c\/p\u003e\u003c\/article\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"carousel-nav\" aria-label=\"Scenes carousel controls\"\u003e\n\u003cbutton type=\"button\" class=\"carousel-btn carousel-btn--prev\" aria-label=\"Previous\"\u003e\u003csvg viewbox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\"\u003e\u003cpath d=\"M9 2L4 7l5 5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e \u003cbutton type=\"button\" class=\"carousel-btn carousel-btn--next\" aria-label=\"Next\"\u003e\u003csvg viewbox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\"\u003e\u003cpath d=\"M5 2l5 5-5 5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"carousel-dots\" aria-label=\"Scenes pagination\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"section section--snug-b\"\u003e\u003cdiv class=\"wrap feature-grid\"\u003e\n\u003cdiv class=\"feature-copy\"\u003e\n\u003cdiv class=\"feature-stack\"\u003e\n\u003cp class=\"eyebrow\"\u003eIn motion\u003c\/p\u003e\n\u003ch2 class=\"h2\"\u003eWatch the beams move.\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA short look: cube on the wall, quiet by day, graphic once lit.\u003c\/p\u003e\n\u003cdiv class=\"feature-points\"\u003e\n\u003cdiv class=\"feature-point\"\u003eShutters open the beam or pull it in\u003c\/div\u003e\n\u003cdiv class=\"feature-point\"\u003eWarm triangles climb and fall on the wall\u003c\/div\u003e\n\u003cdiv class=\"feature-point\"\u003eA quiet cube until the light turns on\u003c\/div\u003e\n\u003cdiv class=\"feature-point\"\u003eKeep sleeves and doors off the built-in LED.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"feature-beam\" aria-hidden=\"true\"\u003e\u003csvg viewbox=\"0 0 72 240\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveaspectratio=\"xMidYMid meet\"\u003e \u003cpath d=\"M10 108 L36 16 L62 108 Z\" fill=\"url(#xnBeam)\" opacity=\"0.95\"\u003e\u003c\/path\u003e \u003cpath d=\"M10 132 L36 224 L62 132 Z\" fill=\"url(#xnBeam)\" opacity=\"0.7\"\u003e\u003c\/path\u003e \u003crect x=\"14\" y=\"108\" width=\"44\" height=\"24\" fill=\"#1c1916\" stroke=\"#e6b15a\" stroke-width=\"1.2\"\u003e\u003c\/rect\u003e \u003cpath d=\"M22 116 L36 122 L50 116\" stroke=\"#cfc6ba\" stroke-width=\"0.8\" opacity=\"0.75\"\u003e\u003c\/path\u003e \u003cpath d=\"M22 124 L36 118 L50 124\" stroke=\"#cfc6ba\" stroke-width=\"0.8\" opacity=\"0.45\"\u003e\u003c\/path\u003e \u003cdefs\u003e \u003clineargradient id=\"xnBeam\" x1=\"36\" y1=\"16\" x2=\"36\" y2=\"224\" gradientunits=\"userSpaceOnUse\"\u003e \u003cstop stop-color=\"#fff4d8\"\u003e\u003c\/stop\u003e \u003cstop offset=\"0.42\" stop-color=\"#e6b15a\"\u003e\u003c\/stop\u003e \u003cstop offset=\"1\" stop-color=\"#a56b32\" stop-opacity=\"0.12\"\u003e\u003c\/stop\u003e \u003c\/lineargradient\u003e \u003c\/defs\u003e \u003c\/svg\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"shot\" aria-label=\"Cube wall light detail video\"\u003e\u003cvideo width=\"300\" height=\"150\" src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/editor\/561\/video\/2026\/10\/16\/bedfae114ab3c80f9a11245aacc73b69.mp4\" poster=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/52daee14127a7c3cd4f36d4ccaceed4f.jpg\" autoplay=\"autoplay\" muted=\"\" loop=\"loop\" controls=\"controls\" playsinline=\"\" preload=\"metadata\" controlslist=\"nodownload\"\u003e\u003c\/video\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"section section--snug-t\"\u003e\u003cdiv class=\"wrap specs-block\"\u003e\n\u003cdiv class=\"section-head\"\u003e\n\u003cp class=\"eyebrow\"\u003eSpecs\u003c\/p\u003e\n\u003ch2 class=\"h2\"\u003eScale \u0026amp; setup\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"specs-layout\"\u003e\n\u003cdiv class=\"specs-view\"\u003e\u003cdiv class=\"shot\"\u003e\u003cimg src=\"https:\/\/d5754b614d.yunchenkeji.com\/media\/custom_1082\/561\/image\/2026\/10\/16\/300418848fe2934d2fa1264fe2afa1e5.jpg\" alt=\"Size diagram 3.94 in \/ 10 cm cube\" width=\"1254\" height=\"1254\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"spec-list\"\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eType\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eLED wall light · hardwired or battery\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eOverall\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003e3.94 × 3.94 × 3.94 in \/ 10 × 10 × 10 cm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eMaterial\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eAluminum\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eLight\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eWarm white · 2700K · integrated LED\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eOutput\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eHardwired 530 lm · Battery 15–150 lm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eFinish\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003e\u003cdiv class=\"spec-chips\"\u003e\n\u003cspan\u003eBlack\u003c\/span\u003e\u003cspan\u003eWhite\u003c\/span\u003e\u003cspan\u003eRust brown\u003c\/span\u003e\u003cspan\u003eNickel\u003c\/span\u003e\u003cspan\u003eRed\u003c\/span\u003e\u003cspan\u003eOrange\u003c\/span\u003e\u003cspan\u003eSage green\u003c\/span\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eRating\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eHardwired IP54 · Battery IP20 indoor\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eBattery\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eUp to 8 hours · adhesive mount, no drilling\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"spec-row\"\u003e\n\u003cdiv class=\"spec-k\"\u003eControl\u003c\/div\u003e\n\u003cdiv class=\"spec-v\"\u003eBattery: touch or remote, stepless dim · Hardwired: optional TRIAC transformer\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cscript\u003e\n    (function () {\n      var roots = [];\n      function addRoot(el) {\n        if (!el || roots.indexOf(el) !== -1) return;\n        roots.push(el);\n      }\n      addRoot(document.getElementById(\"fecify-typography-scope\"));\n      Array.prototype.forEach.call(document.querySelectorAll(\"#fecify-typography-scope\"), addRoot);\n      if (!roots.length) return;\n      var wrap = function (i, n) { return ((i % n) + n) % n; };\n      function unclipAncestors(root) {\n        var node = root.parentElement, depth = 0;\n        while (node \u0026\u0026 node !== document.body \u0026\u0026 depth \u003c 14) {\n          var cs = window.getComputedStyle(node);\n          if (cs.overflow !== \"visible\" || cs.overflowX !== \"visible\" || cs.overflowY !== \"visible\") {\n            node.style.setProperty(\"overflow\", \"visible\", \"important\");\n          }\n          if (node.classList) {\n            if (node.classList.contains(\"el-collapse-item__wrap\")) {\n              node.style.setProperty(\"overflow\", \"visible\", \"important\");\n              node.style.setProperty(\"height\", \"auto\", \"important\");\n            }\n            if (node.classList.contains(\"el-collapse-item__content\") || node.classList.contains(\"body_html\") || node.classList.contains(\"rte\") || node.classList.contains(\"product-single__description\")) {\n              node.style.setProperty(\"overflow\", \"visible\", \"important\");\n            }\n          }\n          node = node.parentElement; depth += 1;\n        }\n      }\n      function applyBleed(root) { unclipAncestors(root); root.style.setProperty(\"overflow-x\", \"visible\", \"important\"); }\n      function stepWidth(track) {\n        var first = track.children[0];\n        if (!first) return track.clientWidth || 1;\n        var gap = 0;\n        try { var cs = window.getComputedStyle(track); gap = parseFloat(cs.columnGap || cs.gap) || 0; } catch (err) {}\n        return first.getBoundingClientRect().width + gap;\n      }\n      function bindSwap(root) {\n        Array.prototype.forEach.call(root.querySelectorAll(\".media-frame[data-swap]\"), function (frame) {\n          var badge = frame.querySelector(\".media-badge\");\n          if (!badge || badge.getAttribute(\"data-bound\") === \"1\") return;\n          badge.setAttribute(\"data-bound\", \"1\");\n          var mode = \"auto\";\n          badge.addEventListener(\"click\", function () {\n            if (mode === \"auto\") { mode = \"on\"; frame.classList.add(\"is-paused\", \"is-on\"); frame.classList.remove(\"is-off\"); }\n            else if (mode === \"on\") { mode = \"off\"; frame.classList.add(\"is-paused\", \"is-off\"); frame.classList.remove(\"is-on\"); }\n            else { mode = \"auto\"; frame.classList.remove(\"is-paused\", \"is-on\", \"is-off\"); }\n          });\n        });\n      }\n      function bindCarousels(root) {\n        root.querySelectorAll(\".carousel\").forEach(function (carousel) {\n          var track = carousel.querySelector(\".carousel-track\");\n          if (!track || track.getAttribute(\"data-bound\") === \"1\") return;\n          track.setAttribute(\"data-bound\", \"1\");\n          var items = track.children, n = items.length;\n          if (!n) return;\n          var idx = 0, lockUntil = 0;\n          var dotsWrap = carousel.querySelector(\".carousel-dots\");\n          var prev = carousel.querySelector(\".carousel-btn--prev\");\n          var next = carousel.querySelector(\".carousel-btn--next\");\n          function renderDots() {\n            if (!dotsWrap || n \u003c 2) return;\n            dotsWrap.innerHTML = \"\";\n            for (var i = 0; i \u003c n; i++) {\n              (function (i) {\n                var b = document.createElement(\"button\");\n                b.type = \"button\";\n                b.className = \"carousel-dot\" + (i === idx ? \" is-active\" : \"\");\n                b.setAttribute(\"aria-label\", \"Go to slide \" + (i + 1));\n                b.addEventListener(\"click\", function () { show(i); });\n                dotsWrap.appendChild(b);\n              })(i);\n            }\n          }\n          function syncFromScroll() {\n            var w = stepWidth(track);\n            if (w \u003c 1) return;\n            idx = wrap(Math.round(track.scrollLeft \/ w), n);\n            if (dotsWrap) {\n              Array.prototype.forEach.call(dotsWrap.children, function (d, i) {\n                d.classList.toggle(\"is-active\", i === idx);\n              });\n            }\n          }\n          function show(i) {\n            if (Date.now() \u003c lockUntil) return;\n            idx = wrap(i, n);\n            var w = stepWidth(track);\n            lockUntil = Date.now() + 320;\n            if (typeof track.scrollTo === \"function\") track.scrollTo({ left: idx * w, behavior: \"smooth\" });\n            else track.scrollLeft = idx * w;\n            renderDots();\n          }\n          if (prev) prev.addEventListener(\"click\", function (e) { e.preventDefault(); e.stopPropagation(); show(idx - 1); });\n          if (next) next.addEventListener(\"click\", function (e) { e.preventDefault(); e.stopPropagation(); show(idx + 1); });\n          var startX = 0, startY = 0, gesturing = false, axis = null, originLeft = 0;\n          track.addEventListener(\"touchstart\", function (e) {\n            if (!e.touches || !e.touches[0]) return;\n            startX = e.touches[0].clientX; startY = e.touches[0].clientY; originLeft = track.scrollLeft; gesturing = true; axis = null;\n          }, { passive: true });\n          track.addEventListener(\"touchmove\", function (e) {\n            if (!gesturing || !e.touches || !e.touches[0]) return;\n            var dx = e.touches[0].clientX - startX, dy = e.touches[0].clientY - startY;\n            if (!axis \u0026\u0026 (Math.abs(dx) \u003e 6 || Math.abs(dy) \u003e 6)) axis = Math.abs(dx) \u003e Math.abs(dy) ? \"x\" : \"y\";\n            if (axis === \"x\") { e.preventDefault(); track.scrollLeft = originLeft - dx; }\n          }, { passive: false });\n          track.addEventListener(\"touchend\", function (e) {\n            if (!gesturing) return;\n            gesturing = false;\n            if (axis !== \"x\") return;\n            var tch = e.changedTouches \u0026\u0026 e.changedTouches[0];\n            if (!tch) return;\n            var dx = tch.clientX - startX;\n            if (Math.abs(dx) \u003c 40) return;\n            if (Date.now() \u003c lockUntil) return;\n            show(idx + (dx \u003c 0 ? 1 : -1));\n          }, { passive: true });\n          track.addEventListener(\"scroll\", function () {\n            window.clearTimeout(track._syncT);\n            track._syncT = window.setTimeout(syncFromScroll, 80);\n          }, { passive: true });\n          var drag = false, dStartX = 0, dStartLeft = 0, moved = false;\n          track.addEventListener(\"pointerdown\", function (e) {\n            if (e.pointerType !== \"mouse\" || e.button !== 0) return;\n            drag = true; moved = false; dStartX = e.clientX; dStartLeft = track.scrollLeft;\n            track.classList.add(\"is-dragging\");\n            try { track.setPointerCapture(e.pointerId); } catch (err) {}\n          });\n          track.addEventListener(\"pointermove\", function (e) {\n            if (!drag) return;\n            var dx = e.clientX - dStartX;\n            if (Math.abs(dx) \u003e 3) moved = true;\n            track.scrollLeft = dStartLeft - dx;\n          });\n          track.addEventListener(\"pointerup\", function () { if (!drag) return; drag = false; track.classList.remove(\"is-dragging\"); syncFromScroll(); });\n          track.addEventListener(\"pointercancel\", function () { drag = false; track.classList.remove(\"is-dragging\"); });\n          track.addEventListener(\"click\", function (e) { if (moved) { e.preventDefault(); e.stopPropagation(); } }, true);\n          renderDots();\n          window.addEventListener(\"resize\", function () { show(idx); });\n          window.setTimeout(function () { syncFromScroll(); renderDots(); }, 60);\n        });\n      }\n      function initRoot(root) {\n        if (root.getAttribute(\"data-xena-ready\") === \"1\") return;\n        root.setAttribute(\"data-xena-ready\", \"1\");\n        applyBleed(root);\n        window.addEventListener(\"resize\", function () { applyBleed(root); });\n        window.setTimeout(function () { applyBleed(root); }, 300);\n        document.addEventListener(\"click\", function () { window.setTimeout(function () { applyBleed(root); }, 50); }, true);\n        bindSwap(root);\n        bindCarousels(root);\n      }\n      roots.forEach(initRoot);\n    })();\n\u003c\/script\u003e\n\u003c\/div\u003e","brand":"Monulo","offers":[{"title":"Individual \/ Black \/ Cable connection","offer_id":67841757184158,"sku":"Individual-Black-Cable connection-1026035","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Black \/ Battery","offer_id":67841757216926,"sku":"Individual-Black-Battery-1026036","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ White \/ Cable connection","offer_id":67841757249694,"sku":"Individual-White-Cable connection-1026037","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ White \/ Battery","offer_id":67841757282462,"sku":"Individual-White-Battery-1026038","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Rust brown \/ Cable connection","offer_id":67841757315230,"sku":"Individual-Rust brown-Cable connection-1026039","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Rust brown \/ Battery","offer_id":67841757347998,"sku":"Individual-Rust brown-Battery-1026040","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Nickel \/ Cable connection","offer_id":67841757380766,"sku":"Individual-Nickel-Cable connection-1026041","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Nickel \/ Battery","offer_id":67841757413534,"sku":"Individual-Nickel-Battery-1026042","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Red \/ Cable connection","offer_id":67841757446302,"sku":"Individual-Red-Cable connection-1026043","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Red \/ Battery","offer_id":67841757479070,"sku":"Individual-Red-Battery-1026044","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Orange \/ Cable connection","offer_id":67841757511838,"sku":"Individual-Orange-Cable connection-1026045","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Orange \/ Battery","offer_id":67841757544606,"sku":"Individual-Orange-Battery-1026046","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Sage green \/ Cable connection","offer_id":67841757577374,"sku":"Individual-Sage green-Cable connection-1026047","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Individual \/ Sage green \/ Battery","offer_id":67841757610142,"sku":"Individual-Sage green-Battery-1026048","price":88.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Black \/ Cable connection","offer_id":67841757642910,"sku":"Set of 2-Black-Cable connection-1026049","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Black \/ Battery","offer_id":67841757675678,"sku":"Set of 2-Black-Battery-1026050","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ White \/ Cable connection","offer_id":67841757708446,"sku":"Set of 2-White-Cable connection-1026051","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ White \/ Battery","offer_id":67841757741214,"sku":"Set of 2-White-Battery-1026052","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Rust brown \/ Cable connection","offer_id":67841757773982,"sku":"Set of 2-Rust brown-Cable connection-1026053","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Rust brown \/ Battery","offer_id":67841757806750,"sku":"Set of 2-Rust brown-Battery-1026054","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Nickel \/ Cable connection","offer_id":67841757839518,"sku":"Set of 2-Nickel-Cable connection-1026055","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Nickel \/ Battery","offer_id":67841757872286,"sku":"Set of 2-Nickel-Battery-1026056","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Red \/ Cable connection","offer_id":67841757905054,"sku":"Set of 2-Red-Cable connection-1026057","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Red \/ Battery","offer_id":67841757937822,"sku":"Set of 2-Red-Battery-1026058","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Orange \/ Cable connection","offer_id":67841757970590,"sku":"Set of 2-Orange-Cable connection-1026059","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Orange \/ Battery","offer_id":67841758003358,"sku":"Set of 2-Orange-Battery-1026060","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Sage green \/ Cable connection","offer_id":67841758036126,"sku":"Set of 2-Sage green-Cable connection-1026061","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 2 \/ Sage green \/ Battery","offer_id":67841758068894,"sku":"Set of 2-Sage green-Battery-1026062","price":156.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Black \/ Cable connection","offer_id":67841758101662,"sku":"Set of 3-Black-Cable connection-1026063","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Black \/ Battery","offer_id":67841758134430,"sku":"Set of 3-Black-Battery-1026064","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ White \/ Cable connection","offer_id":67841758167198,"sku":"Set of 3-White-Cable connection-1026065","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ White \/ Battery","offer_id":67841758199966,"sku":"Set of 3-White-Battery-1026066","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Rust brown \/ Cable connection","offer_id":67841758232734,"sku":"Set of 3-Rust brown-Cable connection-1026067","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Rust brown \/ Battery","offer_id":67841758265502,"sku":"Set of 3-Rust brown-Battery-1026068","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Nickel \/ Cable connection","offer_id":67841758298270,"sku":"Set of 3-Nickel-Cable connection-1026069","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Nickel \/ Battery","offer_id":67841758331038,"sku":"Set of 3-Nickel-Battery-1026070","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Red \/ Cable connection","offer_id":67841758363806,"sku":"Set of 3-Red-Cable connection-1026071","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Red \/ Battery","offer_id":67841758396574,"sku":"Set of 3-Red-Battery-1026072","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Orange \/ Cable connection","offer_id":67841758429342,"sku":"Set of 3-Orange-Cable connection-1026073","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Orange \/ Battery","offer_id":67841758462110,"sku":"Set of 3-Orange-Battery-1026074","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Sage green \/ Cable connection","offer_id":67841758494878,"sku":"Set of 3-Sage green-Cable connection-1026075","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 3 \/ Sage green \/ Battery","offer_id":67841758527646,"sku":"Set of 3-Sage green-Battery-1026076","price":245.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Black \/ Cable connection","offer_id":67841758560414,"sku":"Set of 4-Black-Cable connection-1026077","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Black \/ Battery","offer_id":67841758593182,"sku":"Set of 4-Black-Battery-1026078","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ White \/ Cable connection","offer_id":67841758625950,"sku":"Set of 4-White-Cable connection-1026079","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ White \/ Battery","offer_id":67841758658718,"sku":"Set of 4-White-Battery-1026080","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Rust brown \/ Cable connection","offer_id":67841758691486,"sku":"Set of 4-Rust brown-Cable connection-1026081","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Rust brown \/ Battery","offer_id":67841758724254,"sku":"Set of 4-Rust brown-Battery-1026082","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Nickel \/ Cable connection","offer_id":67841758757022,"sku":"Set of 4-Nickel-Cable connection-1026083","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Nickel \/ Battery","offer_id":67841758789790,"sku":"Set of 4-Nickel-Battery-1026084","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Red \/ Cable connection","offer_id":67841758822558,"sku":"Set of 4-Red-Cable connection-1026085","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Red \/ Battery","offer_id":67841758855326,"sku":"Set of 4-Red-Battery-1026086","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Orange \/ Cable connection","offer_id":67841758888094,"sku":"Set of 4-Orange-Cable connection-1026087","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Orange \/ Battery","offer_id":67841758920862,"sku":"Set of 4-Orange-Battery-1026088","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Sage green \/ Cable connection","offer_id":67841758953630,"sku":"Set of 4-Sage green-Cable connection-1026089","price":324.5,"currency_code":"USD","in_stock":true},{"title":"Set of 4 \/ Sage green \/ Battery","offer_id":67841758986398,"sku":"Set of 4-Sage green-Battery-1026090","price":324.5,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0680\/6349\/4302\/files\/690e80942e2ba7908fbc9ad09bd58e25.jpg?v=1793159751","url":"https:\/\/www.monulo.com\/de\/products\/small-wall-cube-for-a-bedside-mark","provider":"Monulo","version":"1.0","type":"link"}