{"product_id":"theodore-vintage-opal-glass-wall-sconce","title":"Theodore Vintage Opal Glass Wall Sconce","description":"\u003cdiv class=\"ping-product-detail\" id=\"ppd-35478\"\u003e\n\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600\u0026display=swap');\n#ppd-35478{max-width:1200px;margin:0 auto;padding:8px 16px 40px;background:#fff;color:#000;font-family:'Poppins',sans-serif;line-height:2em;font-size:15px;letter-spacing:1px;}\n#ppd-35478 *,#ppd-35478 *::before,#ppd-35478 *::after{box-sizing:border-box;}\n#ppd-35478 img{display:block;width:100%;height:auto;border-radius:0;}\n#ppd-35478 .ppd-section{margin:0 0 4px;}\n#ppd-35478 .ppd-divider{border:0;border-top:0.5px solid rgba(122,122,122,.48);margin:0;padding:10px 0;}\n#ppd-35478 h2.ppd-title,#ppd-35478 h3.ppd-heading{text-align:center;font-family:'Poppins',sans-serif;font-weight:600;color:#000;margin:0;line-height:1em;}\n#ppd-35478 h2.ppd-title{font-size:25px;letter-spacing:1px;padding:16px 0 12px;}\n#ppd-35478 h3.ppd-heading{font-size:24px;letter-spacing:1.6px;line-height:1.3;padding:14px 0 10px;}\n#ppd-35478 .ppd-sub{text-align:center;color:#707070;font-size:15px;letter-spacing:1px;line-height:2em;margin:0 0 12px;}\n#ppd-35478 .ppd-intro{text-align:center;color:#707070;font-size:15px;letter-spacing:1px;line-height:2em;max-width:920px;margin:0 auto 16px;}\n#ppd-35478 ul.ppd-bullets{list-style:none;margin:0 0 16px;padding:0 10px;color:#000;font-size:15px;letter-spacing:1px;line-height:2em;}\n#ppd-35478 ul.ppd-bullets li{margin:0 0 4px;text-align:center;}\n#ppd-35478 ul.ppd-list{margin:0;padding:0 10px 0 26px;color:#000;font-size:14px;letter-spacing:1px;line-height:2em;}\n#ppd-35478 ul.ppd-list li{margin:0;}\n#ppd-35478 .ppd-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;}\n#ppd-35478 .ppd-grid-2+.ppd-grid-2{margin-top:20px;}\n#ppd-35478 .ppd-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}\n#ppd-35478 .ppd-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}\n#ppd-35478 .ppd-grid-2.ppd-middle{align-items:center;}\n#ppd-35478 .ppd-spec{display:grid;grid-template-columns:1.15fr 1fr;gap:32px;align-items:center;max-width:1100px;margin:0 auto;}\n#ppd-35478 .ppd-cols{display:grid;gap:24px;align-items:center;}\n#ppd-35478 .ppd-cols-2{grid-template-columns:1fr 1fr;}\n#ppd-35478 .ppd-cols-3{grid-template-columns:1fr 1fr 1fr;}\n#ppd-35478 .ppd-cols-4{grid-template-columns:repeat(4,1fr);}\n#ppd-35478 .ppd-col\u003e*+*{margin-top:14px;}\n#ppd-35478 .ppd-col h4{margin:0;font-size:16px;font-weight:600;letter-spacing:1px;}\n#ppd-35478 .ppd-spec-media\u003e*+*{margin-top:16px;}\n#ppd-35478 .ppd-spec table{width:100%;border-collapse:collapse;font-size:14px;letter-spacing:1px;}\n#ppd-35478 .ppd-spec table td,#ppd-35478 .ppd-spec table th{border:1px solid #e3e3e3;padding:10px 14px;text-align:left;vertical-align:top;}\n#ppd-35478 .ppd-feature{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;}\n#ppd-35478 .ppd-feature-col\u003e*{margin-bottom:16px;}\n#ppd-35478 .ppd-feature-col\u003e*:last-child{margin-bottom:0;}\n#ppd-35478 figure.ppd-figure{margin:0;}\n#ppd-35478 figure.ppd-figure figcaption{text-align:center;color:#707070;font-size:14px;letter-spacing:1px;padding-top:8px;}\n#ppd-35478 .ppd-hero-img{box-shadow:0 2px 14px rgba(0,0,0,.08);}\n#ppd-35478 .ppd-review{border:1px solid #eee;border-radius:8px;padding:16px;text-align:center;background:#fff;transition:box-shadow .25s,transform .25s;}\n#ppd-35478 .ppd-review:hover{box-shadow:0 6px 18px rgba(0,0,0,.08);transform:translateY(-2px);}\n#ppd-35478 .ppd-stars{color:#f6a623;font-size:15px;letter-spacing:2px;margin-bottom:10px;}\n#ppd-35478 .ppd-review img{aspect-ratio:4\/5;object-fit:cover;width:100%;border-radius:4px;}\n#ppd-35478 .ppd-review h4{margin:12px 0 6px;font-size:15px;font-weight:600;color:#000;letter-spacing:1px;}\n#ppd-35478 .ppd-review p{margin:0;color:#707070;font-size:14px;letter-spacing:1px;line-height:1.8;}\n#ppd-35478 .ppd-card{display:block;text-decoration:none;color:inherit;}\n#ppd-35478 .ppd-card img{transition:transform .3s,box-shadow .3s;}\n#ppd-35478 .ppd-card:hover img{transform:translateY(-3px);box-shadow:0 8px 20px rgba(0,0,0,.12);}\n#ppd-35478 .ppd-card-label{text-align:center;font-size:14px;color:#707070;letter-spacing:1px;padding-top:8px;}\n#ppd-35478 .ppd-video{position:relative;display:block;width:100%;aspect-ratio:16\/10;border:0;border-radius:8px;overflow:hidden;cursor:pointer;background:linear-gradient(135deg,#3d3a36,#191817);padding:0;}\n#ppd-35478 .ppd-video .ppd-play{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;font-size:14px;}\n#ppd-35478 .ppd-video .ppd-play::before{content:\"\";width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.16);border:2px solid rgba(255,255,255,.85);background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M8 5v14l11-7z'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:55% 50%;background-size:26px;transition:transform .2s;}\n#ppd-35478 .ppd-video:hover .ppd-play::before{transform:scale(1.08);}\n#ppd-35478 .ppd-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}\n#ppd-35478 .ppd-carousel{position:relative;--pv:4;}\n#ppd-35478 .ppd-viewport{overflow:hidden;}\n#ppd-35478 .ppd-track{display:flex;margin:0 -8px;transition:transform .45s ease;}\n#ppd-35478 .ppd-slide{flex:0 0 calc(100% \/ var(--pv));padding:0 8px;min-width:0;}\n#ppd-35478 .ppd-slide img+img{margin-top:16px;}\n#ppd-35478 .ppd-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 1px 6px rgba(0,0,0,.18);color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .2s,background .2s;}\n#ppd-35478 .ppd-arrow:hover{background:#fff;}\n#ppd-35478 .ppd-arrow[disabled]{opacity:.35;cursor:default;}\n#ppd-35478 .ppd-arrow-prev{left:14px;}\n#ppd-35478 .ppd-arrow-next{right:14px;}\n#ppd-35478 .ppd-arrow svg{width:18px;height:18px;}\n#ppd-35478 .ppd-dots{display:flex;justify-content:center;gap:8px;padding:14px 0 0;}\n#ppd-35478 .ppd-dots button{width:9px;height:9px;padding:0;border:0;border-radius:50%;background:#cfcfcf;cursor:pointer;transition:background .2s,transform .2s;}\n#ppd-35478 .ppd-dots button::before{content:none;}\n#ppd-35478 .ppd-dots button.is-active{background:#1c1c1c;transform:scale(1.15);}\n#ppd-35478 .ppd-reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease;}\n#ppd-35478 .ppd-reveal.is-visible{opacity:1;transform:none;}\n@media (max-width:1024px){\n  #ppd-35478 h3.ppd-heading{font-size:22px;letter-spacing:2.5px;line-height:4em;}\n  #ppd-35478 .ppd-grid-4{grid-template-columns:repeat(2,1fr);}\n}\n@media (max-width:767px){\n  #ppd-35478{padding:8px 12px 28px;font-size:14px;line-height:1.9em;letter-spacing:1px;}\n  #ppd-35478 h2.ppd-title{font-size:20px;letter-spacing:1px;padding:12px 0 10px;}\n  #ppd-35478 h3.ppd-heading{font-size:20px;letter-spacing:2.1px;line-height:2.3em;}\n  #ppd-35478 ul.ppd-list{line-height:1.9em;font-size:13px;}\n  #ppd-35478 ul.ppd-bullets{text-align:left;padding:0 4px;}\n  #ppd-35478 ul.ppd-bullets li{padding-left:14px;text-indent:-14px;}\n  #ppd-35478 .ppd-grid-2,#ppd-35478 .ppd-grid-3,#ppd-35478 .ppd-grid-4,#ppd-35478 .ppd-spec,#ppd-35478 .ppd-feature,#ppd-35478 .ppd-cols-2,#ppd-35478 .ppd-cols-3,#ppd-35478 .ppd-cols-4{grid-template-columns:1fr;gap:16px;}\n  #ppd-35478 .ppd-divider{padding:8px 0;}\n  #ppd-35478 .ppd-arrow{width:32px;height:32px;}\n  #ppd-35478 .ppd-arrow-prev{left:8px;}\n  #ppd-35478 .ppd-arrow-next{right:8px;}\n}\n@media (min-width:1025px){\n  #ppd-35478 .ppd-hide-desktop{display:none !important;}\n}\n@media (min-width:768px) and (max-width:1024px){\n  #ppd-35478 .ppd-hide-tablet{display:none !important;}\n}\n@media (max-width:767px){\n  #ppd-35478 .ppd-hide-phone{display:none !important;}\n}\n@media (prefers-reduced-motion:reduce){\n  #ppd-35478 .ppd-track{transition:none;}\n  #ppd-35478 .ppd-reveal{opacity:1;transform:none;transition:none;}\n}\n\u003c\/style\u003e\n\u003csection class=\"ppd-section ppd-reveal\"\u003e\n\u003ch2 class=\"ppd-title\"\u003eVintage Opal Glass Wall Sconce\u003c\/h2\u003e\n\u003cp class=\"ppd-intro\" style=\"text-align: center;\"\u003eIlluminate your outdoor area with this vintage-inspired glass sconce. Featuring opal glass globes and available in brass or matte black finishes, it provides soft, diffused lighting. Perfect for entryways or bathrooms, choose from single, double, or triple globe options to suit your space.\u003c\/p\u003e\n\u003c\/section\u003e\n\u003csection class=\"ppd-section ppd-reveal\"\u003e\n\u003cdiv class=\"ppd-grid-3\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/7d2cc695cfcbc5f5.jpg\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/cf4e02dd01f659f3.jpg\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/071d60b86ea8a5ca.jpg\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/c68ceb32eb5e6728.jpg\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/0d7c291e63d40373.jpg\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/55727cf2d5b862bf.jpg\"\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003chr class=\"ppd-divider\"\u003e\n\u003csection class=\"ppd-section ppd-reveal\"\u003e\n\u003cdiv class=\"ppd-cols ppd-cols-2\"\u003e\n\u003cdiv class=\"ppd-col\"\u003e\n\u003cimg alt=\"\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/d548361a2e451fca.jpg\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ppd-col\"\u003e\n\u003cdiv\u003e\u003cul class=\"ppd-list\"\u003e\n\u003cli\u003eMaterial: Metal, Glass\u003c\/li\u003e\n\u003cli\u003eSize:\u003c\/li\u003e\n\u003cli\u003e1 Light:\u003c\/li\u003e\n\u003cli\u003eDimensions: 6\"W x 7.75\"D x 9.5\"H\u003c\/li\u003e\n\u003cli\u003e2 Lights:\u003c\/li\u003e\n\u003cli\u003eDimensions: 15.5\"W x 7.75\"D x 9.5\"H\u003c\/li\u003e\n\u003cli\u003e3 Lights:\u003c\/li\u003e\n\u003cli\u003eDimensions: 25\"W x 7.75\"D x 9.5\"H\u003c\/li\u003e\n\u003cli\u003eBulb Type: G9 LED (Not Included)\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003chr class=\"ppd-divider\"\u003e\n\u003csection class=\"ppd-section ppd-reveal\"\u003e\n\u003ch3 class=\"ppd-heading\"\u003eDetails\u003c\/h3\u003e\n\u003c\/section\u003e\n\u003csection class=\"ppd-section ppd-reveal\"\u003e\n\u003cdiv class=\"ppd-grid-2\"\u003e\n\u003cfigure class=\"ppd-figure\"\u003e\u003cimg alt=\"Brass and black accents\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/2b9babab1ed376cc.png\"\u003e\u003cfigcaption\u003eBrass and black accents\u003c\/figcaption\u003e\u003c\/figure\u003e\n\u003cfigure class=\"ppd-figure\"\u003e\u003cimg alt=\"High quality metal base\" loading=\"lazy\" src=\"https:\/\/cdn.freepicturecdn.com\/blockandreview\/product-body-html\/4136079\/d52b9e5ed8159491.png\"\u003e\u003cfigcaption\u003eHigh quality metal base\u003c\/figcaption\u003e\u003c\/figure\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cscript\u003e\n(function(){\n  var root=document.getElementById('ppd-35478');\n  if(!root||root.dataset.ppdInit)return;\n  root.dataset.ppdInit='1';\n  var reduced=window.matchMedia\u0026\u0026window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  function initCarousel(el){\n    var track=el.querySelector('.ppd-track');\n    var slides=track.children.length;\n    var viewport=el.querySelector('.ppd-viewport');\n    var prev=document.createElement('button');\n    prev.type='button';prev.className='ppd-arrow ppd-arrow-prev';prev.setAttribute('aria-label','Previous slide');\n    prev.innerHTML='\u003csvg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M15 18l-6-6 6-6\"\/\u003e\u003c\/svg\u003e';\n    var next=prev.cloneNode(true);\n    next.className='ppd-arrow ppd-arrow-next';next.setAttribute('aria-label','Next slide');\n    next.querySelector('path').setAttribute('d','M9 6l6 6-6 6');\n    var dots=document.createElement('div');dots.className='ppd-dots';\n    el.appendChild(prev);el.appendChild(next);el.appendChild(dots);\n    var index=0,pv=1,pages=1,timer=null;\n    function perView(){\n      var w=window.innerWidth;\n      if(w\u003e=1025)return parseInt(el.dataset.lg,10)||4;\n      if(w\u003e=768)return parseInt(el.dataset.md,10)||2;\n      return parseInt(el.dataset.sm,10)||1;\n    }\n    function layout(){\n      pv=perView();\n      el.style.setProperty('--pv',pv);\n      pages=Math.max(1,Math.ceil(slides\/pv));\n      if(index\u003epages-1)index=pages-1;\n      dots.innerHTML='';\n      for(var i=0;i\u003cpages;i++){\n        var b=document.createElement('button');\n        b.type='button';b.setAttribute('aria-label','Go to slide '+(i+1));\n        (function(n){b.addEventListener('click',function(){go(n);restart();});})(i);\n        dots.appendChild(b);\n      }\n      var showNav=pages\u003e1;\n      prev.style.display=showNav?'':'none';\n      next.style.display=showNav?'':'none';\n      dots.style.display=showNav?'':'none';\n      go(index);\n    }\n    function go(n){\n      index=Math.max(0,Math.min(n,pages-1));\n      var slideW=viewport.clientWidth\/pv;\n      var offset=Math.min(index*pv,slides-pv);\n      track.style.transform='translate3d(-'+(offset*slideW)+'px,0,0)';\n      prev.disabled=index===0;\n      next.disabled=index===pages-1;\n      for(var i=0;i\u003cdots.children.length;i++)\n        dots.children[i].classList.toggle('is-active',i===index);\n    }\n    function restart(){\n      if(timer){clearInterval(timer);timer=null;}\n      if(reduced||pages\u003c2)return;\n      timer=setInterval(function(){go(index+1\u003epages-1?0:index+1);},5000);\n    }\n    prev.addEventListener('click',function(){go(index-1);restart();});\n    next.addEventListener('click',function(){go(index+1);restart();});\n    el.addEventListener('mouseenter',function(){if(timer){clearInterval(timer);timer=null;}});\n    el.addEventListener('mouseleave',restart);\n    el.addEventListener('touchstart',function(){if(timer){clearInterval(timer);timer=null;}},{passive:true});\n    var startX=0;\n    viewport.addEventListener('touchstart',function(e){startX=e.touches[0].clientX;},{passive:true});\n    viewport.addEventListener('touchend',function(e){\n      var dx=e.changedTouches[0].clientX-startX;\n      if(Math.abs(dx)\u003e40)go(index+(dx\u003c0?1:-1));\n      restart();\n    },{passive:true});\n    window.addEventListener('resize',layout);\n    layout();restart();\n  }\n\n  var carousels=root.querySelectorAll('.ppd-carousel');\n  for(var i=0;i\u003ccarousels.length;i++)initCarousel(carousels[i]);\n\n  var videos=root.querySelectorAll('.ppd-video');\n  for(var v=0;v\u003cvideos.length;v++){\n    (function(btn){\n      btn.addEventListener('click',function(){\n        if(btn.dataset.loaded)return;\n        btn.dataset.loaded='1';\n        var f=document.createElement('iframe');\n        f.src=btn.dataset.src;\n        f.allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';\n        f.allowFullscreen=true;\n        btn.innerHTML='';btn.appendChild(f);btn.style.cursor='default';\n      });\n    })(videos[v]);\n  }\n\n  if(!reduced\u0026\u0026'IntersectionObserver' in window){\n    var io=new IntersectionObserver(function(entries){\n      entries.forEach(function(en){\n        if(en.isIntersecting){en.target.classList.add('is-visible');io.unobserve(en.target);}\n      });\n    },{threshold:.08});\n    var reveals=root.querySelectorAll('.ppd-reveal');\n    for(var j=0;j\u003creveals.length;j++)io.observe(reveals[j]);\n  }else{\n    var all=root.querySelectorAll('.ppd-reveal');\n    for(var k=0;k\u003call.length;k++)all[k].classList.add('is-visible');\n  }\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e","brand":"FLOSSLO","offers":[{"title":"Black \/ 1 Light","offer_id":48959650824448,"sku":"40944","price":136.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ 2 Lights","offer_id":48959650857216,"sku":"40945","price":185.0,"currency_code":"USD","in_stock":true},{"title":"Black \/ 3 Lights","offer_id":48959650889984,"sku":"40946","price":259.0,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ 1 Light","offer_id":48959650922752,"sku":"40947","price":136.0,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ 2 Lights","offer_id":48959650955520,"sku":"40948","price":185.0,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ 3 Lights","offer_id":48959650988288,"sku":"40949","price":259.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0831\/8291\/1744\/files\/53850094b5468c0aaf6f8d99a82a18d9.jpg?v=1783475761","url":"https:\/\/flosslo.com\/products\/theodore-vintage-opal-glass-wall-sconce","provider":"flosslo.com","version":"1.0","type":"link"}