/* Contact Us: original 1440px reference with responsive forms and contact cards. */
.contact-page{--page-bleed:max(0px,calc((100vw - 1440px)/2))}
.contact-page .ct-hero h1{top:21px;left:115px;font-size:157.06px;letter-spacing:31.41px;line-height:1.18}
.contact-page .b-hero-copy{width:650px}
.contact-page .b-hero-copy h2,.contact-page .b-hero-copy h2 em{letter-spacing:-3.56px}
.contact-page .b-hero-photo{left:645px;top:11px;width:787px;height:665px}
.contact-page .b-hero-photo>img{width:100%;height:100%;object-fit:contain}
.contact-page .b-credentials{left:755px;width:567px}
.ct-hero-reviews{margin:22px 0 0 -2px;display:flex;flex-direction:column;align-items:flex-start;gap:29px}
.ct-hero-reviews a{display:block}
.ct-hero-reviews img{display:block}
.ct-hero-reviews a:nth-child(2){margin-left:4px}
.contact-page .b-hero .hero-rating{margin-top:5px}
.ct-contact-inner{max-width:1440px;margin:auto;height:1158px;padding:95px 126px 73px 123px}
.ct-intro{margin-left:-2px}
.contact-page .ct-intro h2{font-size:36px;line-height:36px;margin-top:10px}
.ct-intro>p:last-child{font-size:18px;line-height:22px;color:#141414;font-weight:850;margin:14px 0 0 -2px;width:480px}
.ct-callback-layout{display:grid;grid-template-columns:632px 532px;gap:27px;margin-top:46px}
.ct-form{position:relative;min-width:0;height:794px;background:white;border-radius:20px;box-shadow:0 4px 4px #0004,0 -4px 5.7px #0004;padding:33px 29px 50px 22px}
.contact-page .ct-form h2{font-size:36px;line-height:43px;font-weight:850;white-space:nowrap;margin-bottom:37px}
.ct-fields{display:grid;gap:25px}
.ct-field{display:grid;grid-template-columns:142px 1fr;align-items:center}
.ct-field label,.ct-message label{font-size:18px;line-height:22px;font-weight:700}
.ct-field input,.ct-message textarea{display:block;border:1px solid #a3a3a3;border-radius:10px;background:white;color:var(--navy);font:500 18px/22px Eurostile,Arial,sans-serif;padding:10px 12px;width:100%;min-width:0}
.ct-field input{height:46px}
.ct-field input:focus-visible,.ct-message textarea:focus-visible{outline:3px solid var(--green);outline-offset:3px}
.ct-message{margin-top:37px}
.ct-message label{display:block}
.ct-message textarea{margin-top:21px;height:136px;min-height:136px;resize:vertical}
.contact-page .ct-submit.b-button.supplied-button{display:block;width:147px;height:53px;min-height:0;min-width:0;margin:24px 0 0 1px;padding:0;border:0;cursor:pointer}
.ct-submit:disabled{opacity:.65;cursor:wait}
.ct-form-status:empty{display:none}
.ct-form-status{font-size:15px;line-height:20px;margin-top:10px}
.ct-privacy{font-size:18px;line-height:18px;font-weight:700;margin:43px 0 0 2px}
.ct-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.ct-contact-cards{display:grid;gap:37px}
.ct-card-reveal{height:159px}
.ct-card-reveal:last-child{height:208px}
.ct-contact-card{position:relative;display:block;width:100%;height:100%;color:white}
.ct-contact-card:hover{color:white}
.ct-card-bg{position:absolute;inset:0;width:100%;height:100%}
.ct-card-badge{position:absolute;left:15px;top:16px;width:134px;height:127px}
.ct-contact-card--4 .ct-card-badge{top:17px;height:174px}
.ct-card-icon{position:absolute;left:45px;top:42px;object-fit:contain}
.ct-contact-card--2 .ct-card-icon{left:42px;top:50px}
.ct-contact-card--3 .ct-card-icon{left:37px;top:35px}
.ct-contact-card--4 .ct-card-icon{left:54px;top:66px}
.ct-contact-card h3{position:absolute;left:174px;top:25px;font-size:36px;line-height:36px;font-weight:700;white-space:nowrap}
.ct-contact-card>p{position:absolute;left:176px;top:80px;font-size:36px;line-height:36px;font-weight:700;color:var(--green);white-space:nowrap}
.ct-contact-card--4 h3{left:172px}
.ct-contact-card--4>p{left:174px}
.ct-services{background:var(--navy);color:white}
.ct-services-inner{max-width:1440px;margin:auto;height:775px;padding:47px 90px 44px 152px}
.contact-page .ct-services h2{font-size:36px;line-height:36px;margin:23px 0 0 -2px}
.ct-services-description{font-size:18px;line-height:22px;font-weight:700;margin-top:23px}
.ct-service-grid{display:grid;grid-template-columns:628px 554px;grid-template-rows:235px 235px;gap:26px 16px;margin-top:44px}
.ct-service{position:relative;display:block;border-radius:10px;overflow:hidden;color:var(--navy);background:#ececec}
.ct-service:hover{color:var(--navy)}
.ct-service-photo{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill}
.ct-service:after{content:'';position:absolute;inset:0;background:linear-gradient(90.0517deg,#ececec 53.845%,#ececec00 63.456%)}
.ct-service--boilers{grid-row:span 2;color:white}
.ct-service--boilers:hover{color:white}
.ct-service--boilers:after{background:linear-gradient(90deg,#0000008c 0%,#6660 54.009%)}
.ct-service-copy{position:relative;z-index:1;padding:42px 0 0 27px}
.ct-service h3{font-size:30px;line-height:30px;font-weight:700;white-space:nowrap}
.ct-service-copy p{font-size:20px;line-height:24px;margin-top:17px;font-weight:500}
.ct-service-copy span{display:inline-flex;align-items:center;gap:12px;font-size:20px;line-height:22px;font-weight:850;margin-top:36px;white-space:nowrap}
.ct-service-copy span img{width:12px;height:18px}
.ct-service--care .ct-service-copy{padding-top:45px;padding-left:26px}
.ct-service--care .ct-service-copy p{margin-top:19px}
.ct-service--care .ct-service-copy span{margin-top:13px}
.ct-service--boilers .ct-service-copy{padding:327px 0 0 39px}
.ct-service--boilers .ct-service-copy p{margin:20px 0 0 3px}
.ct-service--boilers .ct-service-copy span{margin:23px 0 0 3px}
.ct-hours{position:relative;max-width:1440px;height:624px;margin:auto}
.ct-hours-photo{position:absolute;left:-2px;top:76px;width:781px;height:490px}
.ct-team-photo{position:absolute;left:0;top:11px;width:781px;height:479px;max-width:none;mask:url('assets/contact/team-mask.svg') center/100% 100% no-repeat}
.ct-team-curve{position:absolute;left:84.507042%;top:0;width:105px;height:84px}
.ct-hours-heading{position:absolute;left:765px;top:87px}
.ct-hours-heading>.b-eyebrow{margin-left:2px}
.contact-page .ct-hours-heading h2{font-size:36px;line-height:36px;margin-top:8px;white-space:nowrap}
.ct-hours-box{position:absolute;left:692px;top:182px;width:763px;height:370px}
.ct-hours-bg{position:absolute;inset:0;width:763px;height:370px;max-width:none}
.ct-opening,.ct-emergency{position:absolute;left:223px;top:34px}
.ct-hours-icon{position:absolute;left:-119px;top:-14px;max-width:none}
.ct-hours-box h3{font-size:36px;line-height:36px;white-space:nowrap}
.ct-hours-box p{font-size:28px;line-height:28px;font-weight:700;white-space:nowrap;margin-top:22px}
.ct-emergency{top:187px}
.ct-emergency .ct-hours-icon{left:-126px;top:-2px}
.ct-emergency p{margin-top:17px}
.ct-emergency p+p{margin-top:20px}
.ct-local{position:relative;max-width:1440px;margin:auto;height:602px;display:grid;grid-template-columns:589px 851px}
.ct-local-copy{padding:73px 0 0 121px}
.contact-page .ct-local h2{font-size:36px;line-height:36px;margin-top:7px}
.ct-local-copy>p:not(.b-eyebrow){font-size:18px;line-height:22px;font-weight:700;margin-top:20px;width:520px}
.ct-locations{display:flex;align-items:flex-start;gap:22px;margin-top:39px;width:460px}
.ct-locations>img{display:block;width:37px;height:52px;flex:0 0 37px}
.ct-locations p{font-size:22px;line-height:44px;font-weight:850;white-space:nowrap}
.ct-local-photo{position:relative;margin-top:7px;width:851px;height:493px}
.ct-local-image{position:absolute;top:14px;left:1.527615%;width:98.472385%;height:479px;max-width:none}
.ct-local-curve{position:absolute;left:13.984724%;top:0;width:105px;height:84px}
.ct-thanks{padding:120px 24px;max-width:900px;margin:auto;min-height:65vh}
.ct-thanks h1{font-size:48px;line-height:1.1}
.ct-thanks p{font-size:22px;margin:25px 0}
.ct-thanks a{text-decoration:underline;font-size:20px}
@media(min-width:1441px){
 .ct-hours{width:1440px}
 .ct-hours-photo{left:calc(-2px - var(--page-bleed));width:calc(781px + var(--page-bleed));height:auto;aspect-ratio:781/490}
 .ct-team-photo{width:100%;height:auto;aspect-ratio:781/479;top:2.244898%}
 .ct-team-curve{left:84.507042%;width:13.444302%;height:auto}
 .ct-hours-box{width:calc(763px + var(--page-bleed))}
 .ct-hours-bg{width:100%}
 .ct-local{width:1440px;height:auto;min-height:602px;padding-bottom:102px}
 .ct-local-photo{width:calc(851px + var(--page-bleed));height:auto;aspect-ratio:851/493}
 .ct-local-image{height:97.160243%}
 .ct-local-curve{width:12.338426%;height:auto}
}
@media(min-width:1251px) and (max-width:1439px){
 .contact-page .b-hero-photo{left:44.791667%;width:54.652778%;height:auto;aspect-ratio:787/665}
 .ct-contact-inner{padding-left:8.541667vw;padding-right:8.75vw}
 .ct-callback-layout{grid-template-columns:43.888889vw 36.944444vw;gap:1.875vw}
 .ct-form{padding-left:1.527778vw;padding-right:2.013889vw}
 .ct-field{grid-template-columns:9.861111vw 1fr}
 .ct-privacy{font-size:1.25vw}
 .ct-card-badge{left:1.041667vw;width:9.305556vw}
 .ct-card-icon{left:3.125vw}
 .ct-contact-card--2 .ct-card-icon{left:2.916667vw}
 .ct-contact-card--3 .ct-card-icon{left:2.569444vw}
 .ct-contact-card--4 .ct-card-icon{left:3.75vw}
 .ct-contact-card h3,.ct-contact-card--4 h3{left:12.083333vw;font-size:2.5vw}
 .ct-contact-card>p,.ct-contact-card--4>p{left:12.222222vw;font-size:2.5vw}
 .ct-services-inner{padding-left:10.555556vw;padding-right:6.25vw}
 .ct-service-grid{grid-template-columns:43.611111vw 38.472222vw;gap:26px 1.111111vw}
 .ct-service h3{font-size:2.083333vw}
 .ct-service-copy p,.ct-service-copy span{font-size:1.388889vw}
 .ct-hours-photo{width:54.236111vw;height:auto;aspect-ratio:781/490}
 .ct-team-photo{width:100%;height:auto;aspect-ratio:781/479;top:2.244898%}
 .ct-team-curve{width:13.444302%;height:auto}
 .ct-hours-heading{left:53.125vw}
 .contact-page .ct-hours-heading h2{font-size:2.5vw}
 .ct-hours-box{left:48.055556vw;width:52.986111vw}
 .ct-hours-bg{width:100%}
 .ct-opening,.ct-emergency{left:15.486111vw}
 .ct-hours-box h3{font-size:2.5vw}
 .ct-hours-box p{font-size:1.944444vw}
 .ct-local{grid-template-columns:40.902778% 59.097222%}
 .ct-local-copy{padding-left:8.402778vw}
 .ct-local-photo{width:100%;height:auto;aspect-ratio:851/493}
 .ct-local-image{height:97.160243%}
 .ct-local-curve{width:12.338426%;height:auto}
}
@media(max-width:1439px){
 .contact-page .ct-hero h1{position:relative;left:auto;top:auto;font-size:10.5vw;letter-spacing:1.55vw}
 .contact-page .b-hero-copy{width:65%}
 .contact-page .b-hero-copy h2{font-size:6.6vw;line-height:1.04}
 .contact-page .b-hero-photo{left:auto;right:1%;top:40px;width:52%;height:auto;aspect-ratio:787/665}
 .contact-page .b-credentials{left:auto;right:6%;width:46%}
 .ct-contact-inner{height:auto;padding:60px 32px 65px}
 .ct-callback-layout{grid-template-columns:1.1fr 1fr;gap:25px}
 .ct-form{height:auto;padding:30px 22px}
 .contact-page .ct-form h2{font-size:27px;line-height:34px}
 .ct-field{grid-template-columns:1fr;gap:8px}
 .ct-fields{gap:18px}
 .ct-message{margin-top:24px}
 .ct-message textarea{margin-top:10px}
 .ct-privacy{font-size:16px;line-height:20px;margin-top:30px}
 .ct-privacy br{display:none}
 .ct-contact-cards{gap:25px;align-content:start}
 .ct-card-reveal{height:150px}
 .ct-card-reveal:last-child{height:200px}
 .ct-card-badge{width:105px;height:120px;left:12px;top:15px}
 .ct-contact-card--4 .ct-card-badge{height:165px}
 .ct-card-icon{left:28px;top:44px;width:65px;height:65px}
 .ct-contact-card--2 .ct-card-icon{left:25px;top:48px;width:75px;height:55px}
 .ct-contact-card--3 .ct-card-icon{left:23px;top:43px;width:72px;height:73px}
 .ct-contact-card--4 .ct-card-icon{left:37px;top:65px;width:50px;height:67px}
 .ct-contact-card h3,.ct-contact-card--4 h3{left:135px;font-size:27px;line-height:32px}
 .ct-contact-card>p,.ct-contact-card--4>p{left:135px;font-size:25px;line-height:29px;top:78px}
 .ct-services-inner{height:auto;padding:45px 32px}
 .contact-page .ct-services h2{font-size:30px;line-height:35px}
 .ct-service-grid{grid-template-columns:1.1fr 1fr;grid-template-rows:235px 235px;margin-top:35px}
 .ct-service h3{font-size:25px;line-height:29px}
 .ct-service-copy{padding-left:20px}
 .ct-service-copy p,.ct-service-copy span{font-size:18px;line-height:22px}
 .ct-service--boilers .ct-service-copy{padding-left:25px}
 .ct-service--care .ct-service-copy{padding-left:20px}
 .ct-hours{height:auto;min-height:520px}
 .ct-hours-photo{width:54%;height:auto;aspect-ratio:781/490;top:70px}
 .ct-team-photo{width:100%;height:auto;aspect-ratio:781/479;top:2.244898%}
 .ct-team-curve{width:13.444302%;height:auto}
 .ct-hours-heading{left:53%;top:55px}
 .contact-page .ct-hours-heading h2{font-size:25px;line-height:30px;white-space:normal}
 .ct-hours-box{left:48%;width:53%;height:340px;top:150px}
 .ct-hours-bg{width:100%;height:100%}
 .ct-opening,.ct-emergency{left:140px;top:35px}
 .ct-hours-box h3{font-size:25px;line-height:30px}
 .ct-hours-box p{font-size:20px;line-height:25px;white-space:normal;margin-top:15px}
 .ct-opening .ct-hours-icon{left:-100px;top:0;width:65px;height:65px}
 .ct-emergency{top:170px}
 .ct-emergency .ct-hours-icon{left:-110px;top:0;width:90px;height:90px}
 .ct-emergency p+p{margin-top:15px}
 .ct-local{height:auto;min-height:500px;grid-template-columns:45% 55%;padding-bottom:55px}
 .ct-local-copy{padding:55px 25px 0 32px}
 .contact-page .ct-local h2{font-size:30px;line-height:32px}
 .ct-local-copy>p:not(.b-eyebrow){width:auto}
 .ct-local-copy .pdf-line{display:inline;white-space:normal}
 .ct-locations{width:auto;gap:15px;margin-top:30px}
 .ct-locations p{font-size:20px;line-height:30px;white-space:normal}
 .ct-local-photo{width:100%;height:auto;aspect-ratio:851/493;margin-top:45px}
 .ct-local-image{height:97.160243%}
 .ct-local-curve{width:12.338426%;height:auto}
}
@media(max-width:760px){
 .contact-page .b-hero-copy{width:100%;padding-top:32px}
 .contact-page .b-hero-copy h2,.contact-page .b-hero-copy h2 em{font-size:clamp(40px,10.5vw,69px);line-height:1.04;letter-spacing:-1.5px}
 .contact-page .b-hero-description br{display:none}
 .ct-hero-reviews{margin-top:25px;gap:20px}
 .ct-hero-reviews img{max-width:100%;height:auto}
 .contact-page .b-hero .hero-rating{margin-top:20px}
 .contact-page .b-hero-photo{position:relative;left:auto;right:auto;top:auto;width:min(100%,440px);height:auto;aspect-ratio:787/665;margin:25px auto 0}
 .contact-page .b-credentials{position:relative;left:auto;right:auto;top:auto;width:calc(100% - 30px);max-width:440px;height:125px;margin:-25px auto 0}
 .ct-contact-inner{padding:45px 20px}
 .ct-intro>p:last-child{width:auto;line-height:22px;font-size:17px}
 .ct-intro .pdf-line{display:inline;white-space:normal}
 .ct-callback-layout{display:flex;flex-direction:column;gap:35px;margin-top:35px}
 .ct-form{padding:28px 20px}
 .contact-page .ct-form h2{font-size:27px;line-height:34px;margin-bottom:28px}
 .ct-privacy{font-size:16px;line-height:20px}
 .ct-contact-cards{gap:20px}
 .ct-contact-card h3,.ct-contact-card--4 h3{font-size:26px;line-height:30px;left:130px}
 .ct-contact-card>p,.ct-contact-card--4>p{font-size:23px;line-height:28px;left:130px}
 .ct-services-inner{padding:45px 20px}
 .contact-page .ct-services h2{font-size:30px;line-height:34px;margin-top:12px}
 .ct-services-description{font-size:17px;line-height:22px;margin-top:18px}
 .ct-service-grid{display:flex;flex-direction:column;gap:25px;margin-top:30px}
 .ct-service{height:235px}
 .ct-service--boilers{height:390px}
 .ct-service--boilers .ct-service-copy{padding-top:235px}
 .ct-service h3{font-size:26px;line-height:30px}
 .ct-service-copy p{font-size:18px;line-height:22px}
 .ct-hours{min-height:0;padding:45px 20px;display:flex;flex-direction:column;gap:28px}
 .ct-hours-heading{position:static;order:0}
 .contact-page .ct-hours-heading h2{font-size:28px;line-height:32px;margin-top:12px}
 .ct-hours-box{position:relative;left:auto;top:auto;order:1;width:calc(100% + 40px);margin-left:-20px;height:360px;background:var(--green)}
 .ct-hours-bg{display:none}
 .ct-opening,.ct-emergency{left:125px;right:20px}
 .ct-hours-box h3{font-size:25px;line-height:30px;white-space:normal}
 .ct-hours-box p{font-size:21px;line-height:27px}
 .ct-emergency{top:180px}
 .ct-hours-photo{position:relative;left:auto;top:auto;order:2;width:calc(100% + 20px);margin-left:-20px}
 .ct-local{display:flex;flex-direction:column;padding:0 20px 45px;gap:30px;min-height:0}
 .ct-local-copy{padding:0;width:100%}
 .ct-local-photo{width:calc(100% + 20px);margin-top:0}
 .ct-local-copy>p:not(.b-eyebrow){font-size:17px;line-height:22px}
 .ct-locations p{font-size:20px;line-height:32px}
}
.ct-services .b-eyebrow{line-height:18px}
.ct-hours-photo{top:74px}
.ct-team-photo{top:13px}
.ct-team-curve{left:84.455826%}
.ct-local-photo{margin-top:5px;height:495px}
.ct-local-image{top:16px}
.ct-local-curve{left:13.760282%}
@media(min-width:1441px){.ct-team-photo{top:2.653061%}.ct-local-photo{height:auto;aspect-ratio:851/495}.ct-local-image{top:3.232323%;height:96.767677%}}
@media(min-width:1251px) and (max-width:1439px){.ct-team-photo{top:2.653061%}.ct-local-photo{height:auto;aspect-ratio:851/495}.ct-local-image{top:3.232323%;height:96.767677%}}
@media(max-width:1439px){.ct-hours-photo{top:70px}.ct-team-photo{top:2.653061%}.ct-local-photo{margin-top:45px;height:auto;aspect-ratio:851/495}.ct-local-image{top:3.232323%;height:96.767677%}}
@media(max-width:760px){.ct-hours-photo{top:auto}.ct-local-photo{margin-top:0}}
/* PDF curve is rotated about its right edge; retain its rendered position. */
.ct-team-curve{left:71.638924%}
@media(max-width:760px){.ct-service-photo{object-fit:cover;object-position:right center}}
/* Allow validation messages and a resized message field to move later sections. */
.ct-contact-inner{height:auto;min-height:1158px}
.ct-form{height:auto;min-height:794px;align-self:start}
@media(min-width:1441px){
 .ct-hours{height:calc(624px + var(--page-bleed)*.627401)}
 .ct-hours-heading{top:calc(87px + var(--page-bleed)*.3137)}
 .ct-hours-box{top:calc(182px + var(--page-bleed)*.3137)}
}
@media(max-width:1439px){.ct-contact-inner,.ct-form{min-height:0}}
@media(max-width:760px){
 .ct-hours-box{height:auto;min-height:0;padding:35px 20px 35px 125px}
 .ct-opening,.ct-emergency{position:relative;left:auto;right:auto;top:auto}
 .ct-emergency{margin-top:35px}
}

/* Match the homepage service cards: only titles and links turn green. */
.ct-service h3,.ct-service-copy span{transition:color 160ms ease}
.ct-service:is(:hover,:focus-visible) h3,.ct-service:is(:hover,:focus-visible) .ct-service-copy span{color:var(--green)}
/* Preserve the sloping left edge while continuing the green to the viewport. */
@media(min-width:761px){
 .ct-hours-box{width:calc(100% - 692px + var(--page-bleed,0px))}
 .ct-hours-box:before{content:'';position:absolute;inset:0 0 0 40%;background:#a1e757}
 .ct-hours-bg{width:763px;height:100%}
}
@media(min-width:761px) and (max-width:1439px){.ct-hours-box{width:51.944444vw}}
@media(min-width:761px) and (max-width:1439px){.ct-hours-box{width:52%}.ct-hours-bg{width:100%;object-fit:fill}}
