/* ===== Plumbio motion (shared) ===== */
.pb-btn .elementor-button,.pb-form .elementor-button{position:relative;overflow:hidden;z-index:0;transition:color .4s ease}
.pb-btn .elementor-button:after,.pb-form .elementor-button:after{content:"";position:absolute;height:0;left:50%;top:50%;width:150%;z-index:-1;
transition:all .35s ease 0s;background:var(--e-global-color-secondary);transform:translateX(-50%) translateY(-50%) rotate(-25deg)}
.pb-btn .elementor-button:hover:after,.pb-form .elementor-button:hover:after{height:450%;transition:all 1s ease 0s}
.pb-btn--accent .elementor-button:after,.pb-form .elementor-button:after{background:#fff}
.pb-btn .elementor-button-content-wrapper,.pb-form .elementor-button-content-wrapper{position:relative;z-index:1}
.pb-header{transition:box-shadow .3s}
.pb-header.elementor-sticky--effects{box-shadow:0 20px 30px rgba(26,54,85,.1)!important}
.pb-header.elementor-sticky--effects .pb-topbar{display:none!important}
.pb-header.elementor-sticky--effects .pb-logo-panel{clip-path:polygon(0 0,100% 0,81% 100%,0 100%);padding-top:8px!important;padding-bottom:8px!important}
.pb-header.elementor-sticky--effects .pb-logo img{max-width:70px}
.pb-logo img{transition:max-width .3s}
/* ===== Plumbio motion (home) ===== */
/* hero slider */
.pb-hero-box{position:relative;overflow:hidden}
.pb-hero-box > .pb-slide{position:absolute!important;inset:0;opacity:0;visibility:hidden;transform:translateX(15%);
transition:opacity 1s ease,transform 1.2s cubic-bezier(.25,.8,.25,1),visibility 1s}
.pb-hero-box > .pb-slide.is-active{opacity:1;visibility:visible;transform:none;z-index:1}
.pb-hero-box > .pb-slide.from-left{transform:translateX(-15%);transition:none}
.pb-hero-box > .pb-slide.from-right{transform:translateX(15%);transition:none}
.pb-hero-box > .pb-slide.is-leaving.to-left{transform:translateX(-15%)}
.pb-hero-box > .pb-slide.is-leaving.to-right{transform:translateX(15%)}
.pb-slide-text{opacity:0;transform:translateY(40px);transition:opacity .8s ease .45s,transform .8s ease .45s}
.pb-slide.is-active .pb-slide-text{opacity:1;transform:none}
.pb-slide-title{position:relative;padding-left:50px}
.pb-slide-title:before{content:"";position:absolute;left:0;top:0;width:2px;height:100%;background:var(--e-global-color-pbsky)}
.pb-slide-text .elementor-widget-text-editor{padding-left:50px}
.elementor-editor-active .pb-hero-box > .pb-slide{position:relative!important;opacity:1;visibility:visible;transform:none;min-height:554px}
.elementor-editor-active .pb-slide-text{opacity:1;transform:none}
/* arrows (corner-draw hover) */
.pb-arrows{display:flex;background:#fff}
.pb-arrow{position:relative;width:80px;height:72px;display:flex;align-items:center;justify-content:center;border:0;background:#fff;
color:var(--e-global-color-secondary);cursor:pointer;padding:0}
.pb-arrow:before,.pb-arrow:after{content:"";position:absolute;inset:14px;transform:scale(0);transition:.4s;pointer-events:none}
.pb-arrow:before{border-bottom:2px solid currentColor;border-left:2px solid currentColor;transform-origin:0 100%}
.pb-arrow:after{border-top:2px solid currentColor;border-right:2px solid currentColor;transform-origin:100% 0}
.pb-arrow:hover:before,.pb-arrow:hover:after{transform:scale(1)}
/* play button: ring + pulse */
.pb-play .elementor-icon{position:relative;overflow:visible;box-shadow:0 5px 10px rgba(30,96,170,.2)!important;transition:background-color .2s linear}
.pb-play .elementor-icon:after{content:"";position:absolute;top:-8px;left:-8px;width:calc(100% + 16px);height:calc(100% + 16px);
border:1px solid rgba(81,172,251,.6);border-radius:50%;pointer-events:none}
.pb-play .elementor-icon:before{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;
background:rgba(81,172,251,.4);transform:translate(-50%,-50%);animation:pbPulse 1.4s ease-out infinite;pointer-events:none;z-index:-1}
.pb-play .elementor-icon:hover{background-color:var(--e-global-color-primary)!important}
@keyframes pbPulse{0%{width:100%;height:100%;opacity:.8}50%{width:140%;height:140%;opacity:0}100%{width:100%;height:100%;opacity:0}}
/* video modal */
.pb-modal{position:fixed;inset:0;z-index:99999;background:rgba(8,24,48,.88);display:flex;align-items:center;justify-content:center;animation:pbFade .3s ease}
.pb-modal__inner{position:relative;width:min(960px,92vw);aspect-ratio:16/9}
.pb-modal__inner iframe{width:100%;height:100%;border:0}
.pb-modal__close{position:absolute;top:-46px;right:0;background:none;border:0;color:#fff;font-size:40px;line-height:1;cursor:pointer}
@keyframes pbFade{from{opacity:0}to{opacity:1}}
/* image ripple (Plumbio "circle") */
.pb-ripple,.pb-blog-cards .elementor-post__thumbnail{position:relative;overflow:hidden}
.pb-ripple:before,.pb-blog-cards .elementor-post__thumbnail:before{content:"";position:absolute;top:50%;left:50%;z-index:2;width:0;height:0;
background:rgba(255,255,255,.2);border-radius:50%;transform:translate(-50%,-50%);opacity:0;pointer-events:none}
.pb-ripple:hover:before,.pb-svc:hover .pb-ripple:before,.pb-blog-cards .elementor-post:hover .elementor-post__thumbnail:before{animation:pbCircle 1.15s ease}
@keyframes pbCircle{0%{opacity:1}40%{opacity:1}100%{width:200%;height:200%;opacity:0}}
/* service cards hover panel */
.pb-svc{position:relative}
.pb-svc-box{transition:opacity .3s ease}
.pb-svc-box .elementor-icon-box-title a,.pb-svc-box .elementor-icon-box-title span{position:relative}
.pb-svc-box .elementor-icon-box-title a:before,.pb-svc-box .elementor-icon-box-title span:before{content:"";position:absolute;left:0;right:0;bottom:0;margin:auto;width:0;height:2px;background:currentColor;transition:width .2s linear}
.pb-svc-box:hover .elementor-icon-box-title a:before,.pb-svc-box:hover .elementor-icon-box-title span:before{width:100%}
.pb-svc-hover{position:absolute!important;inset:0;z-index:5;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s}
.pb-svc-hover > *{transform:translateY(20px);transition:transform .5s ease}
.pb-svc:hover .pb-svc-hover{opacity:1;visibility:visible}
.pb-svc:hover .pb-svc-hover > *{transform:none}
.pb-svc:hover .pb-svc-box{opacity:0}
.pb-svc-cta .elementor-heading-title a{color:#fff}
.pb-svc-cta .elementor-heading-title a:hover{color:var(--e-global-color-pbsky)}
@media(max-width:1360px){.pb-svc-hover{display:none!important}.pb-svc:hover .pb-svc-box{opacity:1}}
.elementor-editor-active .pb-svc-hover{display:none!important}
/* tabs */
.pb-tab{cursor:pointer;transition:background-color .3s linear,transform .3s}
.pb-tab.is-active{background-color:var(--e-global-color-secondary)!important;box-shadow:none!important}
.pb-tab.is-active .elementor-heading-title{color:#fff!important}
.pb-tab-title .elementor-heading-title{position:relative;display:inline-block}
.pb-tab-title .elementor-heading-title:before{content:"";position:absolute;left:0;right:0;bottom:-1px;margin:auto;width:0;height:2px;background:currentColor;transition:width .2s linear}
.pb-tab:hover .pb-tab-title .elementor-heading-title:before{width:100%}
.pb-panel{display:none!important}
.pb-panel.is-active{display:flex!important;animation:pbPanel .6s ease}
@keyframes pbPanel{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.elementor-editor-active .pb-panel{display:flex!important}
/* carousel */
.pb-carousel{overflow-x:auto;overflow-y:visible;scroll-snap-type:x mandatory;scrollbar-width:none;padding-top:26px!important;margin-top:-26px}
.pb-carousel::-webkit-scrollbar{display:none}
.pb-carousel > .e-con{flex:0 0 calc((100% - 54px) / 4)!important;scroll-snap-align:start}
@media(max-width:1024px){.pb-carousel > .e-con{flex-basis:calc((100% - 18px) / 2)!important}}
@media(max-width:767px){.pb-carousel{flex-direction:row!important}.pb-carousel > .e-con{flex-basis:100%!important}}
.pb-dots{display:flex;gap:14px;margin-top:34px}
.pb-dots button{width:6px;height:6px;padding:0;border:0;border-radius:0;background:var(--e-global-color-pbsky);opacity:.35;cursor:pointer;transition:.3s}
.pb-dots button.is-active{opacity:1;background:var(--e-global-color-secondary);box-shadow:0 0 0 5px #E6F0FB}
/* blog titles */
.pb-blog-cards .elementor-post__title a,.pb-blog-list .elementor-post__title a{transition:color .3s ease}
.pb-blog-cards .elementor-post__title a:hover,.pb-blog-list .elementor-post__title a:hover{color:var(--e-global-color-pbsky)!important}
/* ---------- Proud Plumbing home ---------- */
body{overflow-x:hidden}
.pb-iso{isolation:isolate;position:relative}
.pb-wm{pointer-events:none;white-space:nowrap}
.pb-sub .elementor-heading-title{display:inline-flex;align-items:center;gap:18px}
.pb-sub .elementor-heading-title:before{content:"";width:38px;height:1px;background:var(--e-global-color-pbsky)}
.pb-line-after:after{content:"";display:block;width:38px;height:2px;margin-top:26px;background:var(--e-global-color-pbsky)}
.pb-drop .elementor-icon{border-radius:50% 0 50% 50%!important;transform:rotate(-45deg)}
.pb-drop .elementor-icon i,.pb-drop .elementor-icon svg{transform:rotate(45deg)}
.pb-drop .elementor-icon{box-shadow:0 12px 25px rgba(12,76,147,.18)}
/* hero */
.pb-hero{isolation:isolate}
.pb-hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:55.6%;z-index:-1;
background:var(--e-global-color-pbsky);clip-path:polygon(0 0,100% 0,65% 100%,0 100%)}
.pb-hero-man{bottom:-38px!important}
.pb-hero-arrows .elementor-icon-list-items{gap:22px}
/* service cards */
.pb-svc-box{box-shadow:0 20px 50px rgba(12,76,147,.10)}
/* counters */
.pb-counter .elementor-counter-number-suffix{font-size:.55em;align-self:flex-end;margin-bottom:.35em}
.pb-counter .elementor-counter-title{text-align:left}
/* tabs */
.pb-tab{transition:.3s}
.pb-tab:hover{transform:translateY(-4px)}
/* additional services */
.pb-addsvc{isolation:isolate}
.pb-addsvc:before{content:"";position:absolute;left:0;top:110px;width:67%;height:745px;z-index:-1;
background:var(--e-global-color-primary);
clip-path:polygon(0 0,100% 0,95.8% 12%,36.5% 12%,36.5% 100%,0 100%)}
.pb-svc-card .pb-drop{margin-top:-20px}
/* steps */
.pb-step-img img{box-shadow:0 20px 40px rgba(12,76,147,.15);border:8px solid #fff}
.pb-faucet img{box-shadow:0 30px 60px rgba(12,76,147,.25)}
.pb-step-num{line-height:1!important}
/* quote form */
.pb-form .elementor-field-textual,.pb-form select{min-height:50px;padding:0 18px!important;border:0!important}
.pb-form .elementor-field-group .elementor-select-wrapper:before{color:var(--e-global-color-secondary);font-size:12px}
.pb-form .elementor-button{padding:18px 30px!important}
.pb-badge .elementor-icon-box-title{margin-bottom:0!important}
/* faq */
.pb-faq .elementor-accordion-item{border:0!important;margin-bottom:22px}
.pb-faq .elementor-tab-title{background:var(--e-global-color-pblight);border:0!important}
.pb-faq .elementor-tab-content{border:0!important;background:transparent}
.pb-faq .elementor-accordion-icon{border-left:1px solid var(--e-global-color-pbsky);padding-left:20px;
width:auto!important;line-height:34px}
/* testimonials */
.pb-testi{isolation:isolate}
.pb-testi:before{content:"";position:absolute;left:34%;right:0;top:0;bottom:0;z-index:-1;
background:var(--e-global-color-primary);clip-path:polygon(0 0,100% 0,100% 100%,41.7% 100%)}
.pb-testi-img{clip-path:polygon(0 0,59% 0,100% 100%,0 100%)}
.pb-testi-car .swiper-pagination{position:relative;text-align:left;margin-top:30px}
.pb-testi-car .swiper-pagination-bullet{border-radius:0;width:6px;height:6px;margin:0 12px 0 0!important;
background:var(--e-global-color-pbsky);opacity:.35}
.pb-testi-car .swiper-pagination-bullet-active{opacity:1;background:var(--e-global-color-secondary);
box-shadow:0 0 0 5px #E6F0FB}
.pb-testi-car .elementor-testimonial__footer{margin-top:18px}
/* blog */
.pb-blog-list .elementor-post{margin-bottom:34px}
.pb-blog-list .elementor-post__meta-data{order:-1;margin-bottom:8px}
.pb-blog-list .elementor-post__text{display:flex;flex-direction:column}
.pb-blog-cards .elementor-post__thumbnail__link{margin-bottom:0!important}
.pb-blog-cards .elementor-post__text{position:relative;background:#fff;margin:-62px 22px 0 0;
padding:38px 24px 30px;z-index:2}
.pb-blog-cards .elementor-post__read-more{font-size:0!important}
.pb-blog-cards .elementor-post__read-more:after{content:"\2192";font-size:20px;color:var(--e-global-color-secondary)}
/* partners */
.pb-logo-box img{max-height:46px;width:auto!important}
@media(max-width:1024px){
.pb-hero:before,.pb-addsvc:before,.pb-testi:before{display:none}
.pb-testi-img{clip-path:none}
}
@media(max-width:767px){
.pb-blog-cards .elementor-post__text{margin:-40px 12px 0 0}
}
/* ===== inner pages ===== */
.pb-ptitle{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(#e9ecef,#fff)}
.pb-ptitle:before{content:"";position:absolute;top:0;left:-15.66%;width:67.3%;height:100%;background:var(--e-global-color-pbsky);
transform:skew(-26deg);z-index:-1}
.pb-crumbs a{color:#fff;transition:color .2s}.pb-crumbs a:hover{color:var(--e-global-color-pbsky)}
.pb-crumbs .sep{margin:0 10px;opacity:.7}
/* aside menu (Plumbio tt-aside-menu) */
.pb-aside ul{list-style:none;margin:0;padding:0;background:var(--e-global-color-pblight)}
.pb-aside li{position:relative}
.pb-aside li:before{content:"\2192";position:absolute;left:25px;top:50%;transform:translateY(-50%);color:var(--e-global-color-secondary);z-index:1;pointer-events:none}
.pb-aside li a{position:relative;display:block;border-bottom:1px solid #fff;padding:16px 20px 16px 54px;color:var(--e-global-color-secondary);
font-family:var(--e-global-typography-primary-font-family);font-weight:800;font-size:15px;transition:background .2s,color .2s}
.pb-aside li a:before,.pb-aside li a:after{content:"";position:absolute;inset:0;z-index:3;transform:scale(0);transition:.4s;pointer-events:none}
.pb-aside li a:before{border-bottom:2px solid var(--e-global-color-secondary);border-left:2px solid var(--e-global-color-secondary);transform-origin:0 100%}
.pb-aside li a:after{border-top:2px solid var(--e-global-color-secondary);border-right:2px solid var(--e-global-color-secondary);transform-origin:100% 0}
.pb-aside li a:hover:before,.pb-aside li a:hover:after{transform:scale(1)}
.pb-aside li.is-active a{background:var(--e-global-color-secondary);color:#fff}
.pb-aside li.is-active:before{color:#fff}
.pb-aside li.is-active a:before,.pb-aside li.is-active a:after{display:none}
.pb-area-list .elementor-icon-list-items{columns:2;column-gap:30px}
.pb-area-list .elementor-icon-list-item{break-inside:avoid}
.pb-sticky-side{position:sticky;top:130px}
@media(max-width:767px){.pb-area-list .elementor-icon-list-items{columns:1}}
.pb-quote-box{position:relative;overflow:hidden}
.pb-quote-box:after{content:"\201D";position:absolute;right:24px;bottom:-40px;font-size:180px;line-height:1;color:rgba(255,255,255,.08);font-family:Georgia,serif}
.pb-btn--light .elementor-button:after{background:#fff}
.pb-fbox .elementor-icon-box-icon{margin-top:-58px}
.pb-fbox{overflow:visible}
(function(){
if(document.body.classList.contains('elementor-editor-active'))return;
function ready(fn){document.readyState==='loading'?document.addEventListener('DOMContentLoaded',fn):fn();}
ready(function(){
/* hero slider */
var box=document.querySelector('.pb-hero-box');
if(box){
var slides=[].slice.call(box.querySelectorAll('.pb-slide')),i=0,t;
function go(n,dir){
var cur=slides[i]; i=(n+slides.length)%slides.length; var nxt=slides[i]; if(cur===nxt)return;
slides.forEach(function(s){s.classList.remove('from-left','is-leaving','to-left','to-right')});
nxt.classList.add(dir<0?'from-left':'from-right');
void nxt.offsetWidth;
cur.classList.remove('is-active'); cur.classList.add('is-leaving', dir40){go(i+(dx<0?1:-1),dx1)play();
}
/* video lightbox */
document.querySelectorAll('.pb-play a[href*="youtu"]').forEach(function(a){
a.addEventListener('click',function(e){
e.preventDefault();
var m=a.href.match(/(?:v=|youtu\.be\/|embed\/)([\w-]{11})/); if(!m)return;
var o=document.createElement('div');o.className='pb-modal';
o.innerHTML='
×
';
o.addEventListener('click',function(ev){if(ev.target===o||ev.target.classList.contains('pb-modal__close'))o.remove()});
document.body.appendChild(o);
});
});
/* tabs */
var tabs=[].slice.call(document.querySelectorAll('.pb-tab'));
tabs.forEach(function(tb){
tb.addEventListener('click',function(){
var k=(tb.className.match(/pb-tab-(\d)/)||[])[1]; if(!k)return;
tabs.forEach(function(x){x.classList.toggle('is-active',x===tb)});
document.querySelectorAll('.pb-panel').forEach(function(pn){pn.classList.toggle('is-active',pn.classList.contains('pb-panel-'+k))});
});
});
/* carousels */
document.querySelectorAll('.pb-carousel').forEach(function(tr){
var items=[].slice.call(tr.children), k=0, t;
var dots=document.createElement('div');dots.className='pb-dots';tr.parentNode.insertBefore(dots,tr.nextSibling);
function per(){var w=window.innerWidth;return w<768?1:(w<1025?2:4)}
function pages(){return Math.max(1,items.length-per()+1)}
function draw(){dots.innerHTML='';for(var j=0;j1?'':'none'}
function go(j){k=(j+pages())%pages();tr.scrollTo({left:items[k].offsetLeft-items[0].offsetLeft,behavior:'smooth'});[].forEach.call(dots.children,function(d,x){d.classList.toggle('is-active',x===k)})}
function play(){clearInterval(t);t=setInterval(function(){go(k+1)},5000)}
tr.addEventListener('mouseenter',function(){clearInterval(t)});tr.addEventListener('mouseleave',play);
window.addEventListener('resize',function(){if(k>=pages())k=0;draw()});
draw();play();
});
});
})();