body{container-type:inline-size}.hero{grid-template-columns:46% 54%}.hero-copy h1{font-size:clamp(38px,3.6vw,62px);line-height:1.05;letter-spacing:-.025em}.drop{background:none!important;transform:none!important;border-radius:0!important;width:46px;height:54px;display:inline-flex;align-items:center}.drop svg{width:46px;height:54px}.hero-copy .actions{flex-wrap:wrap}.hero-copy .actions .button{white-space:normal}
@container(max-width:900px){.hero{grid-template-columns:1fr}.hero-copy h1{font-size:clamp(38px,7cqw,56px)}}
.card-crop{position:relative!important;overflow:hidden;container-type:inline-size;background:#faf9f4;aspect-ratio:var(--crop-w)/var(--crop-h);height:auto!important;min-height:0!important}.card-crop>img{position:absolute!important;max-width:none!important;width:calc(var(--source-w)/var(--crop-w)*100%)!important;height:auto!important;left:calc(-1*var(--crop-x)/var(--crop-w)*100%);top:calc(-1*var(--crop-y)/var(--crop-w)*100cqw);object-fit:initial!important;mix-blend-mode:normal!important;margin:0!important}

.laval-hero-photo,.laval-service-photo{width:100%;min-width:0;align-self:start}.services .laval-service-photo{grid-column:1/3;grid-row:1;padding:0!important}.services .laval-service-photo img{height:auto}.services a{box-shadow:none}.laval-hero-photo img{height:auto!important}.hero-copy .actions svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.9;flex:none}.hero-copy .actions .button{gap:14px}.area .map-city{position:absolute;right:14%;top:36%;font-size:27px;font-weight:700}
@container(min-width:1001px){.hero{grid-template-columns:45.573% 54.427%;height:444px;min-height:444px;background:#edf7fd}.hero-copy{align-self:start;padding:38px 0 0 5.34cqw;min-width:0}.hero-copy h1{font-size:54px;line-height:1.05;font-weight:750;letter-spacing:-.025em;margin-bottom:16px;max-width:100%;white-space:nowrap}.hero-copy>p{font-size:20px;line-height:1.3;margin-bottom:18px;max-width:590px}.hero-copy .actions .button{height:54px;min-height:54px;padding:12px 26px;font-size:18px;font-weight:650}.services{padding:18px 4.035cqw 18px;gap:19px;min-height:230px}.services a{grid-template-rows:142px 52px;border-radius:5px}.services strong{font-size:16px;padding:14px 16px;line-height:1.3}.services a>span:last-child{font-size:30px;padding:10px 16px}.lower{grid-template-columns:66.2% 33.8%}.area,.how{padding:25px 5.4cqw}.lower h2{font-size:30px;line-height:1.2;margin-bottom:10px}.lower p{font-size:16px;line-height:1.35}.area li{padding-block:3px;font-size:15px}.how{padding-left:3cqw;padding-right:3cqw}.how li{gap:22px;margin-bottom:18px}.how strong{font-size:16px}.how p{font-size:14px}}
@container(max-width:1000px){.hero{height:auto;min-height:0;grid-template-columns:minmax(0,1fr)}.hero-copy{padding:36px 24px}.hero-copy h1{white-space:normal;font-size:clamp(36px,6.5cqw,56px)}.laval-hero-photo{height:auto!important}.services{grid-template-columns:repeat(2,minmax(0,1fr))}.services a{grid-template-rows:auto auto}.services .laval-service-photo{height:auto!important}.area .map-city{font-size:22px}.lower{grid-template-columns:minmax(0,1fr)}}
@container(max-width:600px){.services{grid-template-columns:minmax(0,1fr)}.hero-copy .actions .button{max-width:100%;white-space:normal}.hero-copy h1{font-size:34px}.hero-copy .actions{gap:12px}}

/* Scoped readability correction; selected artwork and destinations retained. */
.area>p,main>section:not(.hero) p{max-width:65ch}

/* V3 restores selected header scale and lower-map/process composition. */
.more-guides{display:flex;flex-wrap:wrap;gap:16px 28px;padding:25px 5.4vw;font-size:16px;background:#e6f3fb}
.mast .phone svg,.mast .header-quote svg{width:24px;height:26px;flex:none}
.hero-copy .enquiry-note{font-size:13px;line-height:1.5;margin:12px 0 0;max-width:600px}
@container(min-width:1251px){
header.mast{position:relative;height:75px;min-height:75px;padding:0 5.4cqw;gap:0}
header.mast .brand{font-size:32px;font-weight:750;letter-spacing:-.025em}
header.mast .brand .drop{width:38px;height:50px}
header.mast .brand .drop svg{width:38px;height:50px}
header.mast>nav{position:absolute;left:29.753cqw;top:27px;flex:none;width:auto;font-size:14px;gap:33px}
header.mast>.phone{position:absolute;right:19.86cqw;top:12px;height:50px;min-height:50px;width:174px;font-size:18px;padding:10px}
header.mast>.header-quote{position:absolute;right:5.273cqw;top:12px;height:50px;width:212px;font-size:17px;padding:10px;gap:10px}
.hero-copy{padding-top:35px}
.hero-copy>p:not(.enquiry-note){margin-bottom:21px;line-height:1.3;font-weight:400;white-space:nowrap}
.hero-copy .actions{gap:20px}
.hero-copy .actions .button:first-child{width:238px}
.hero-copy .actions .button:last-child{width:255px}
.services{min-height:229px}
.area:after{right:0;top:0;bottom:auto;width:28.841cqw;height:17.969cqw;background-image:url('/assets/selected-card-image.webp');background-repeat:no-repeat;background-size:100cqw auto;background-position:-37.37cqw -48.698cqw;opacity:1}
.area .map-city{display:none}
.area h2,.area p,.area ul{position:relative;z-index:1}
.area{padding-top:24px;padding-right:0}
.area p{max-width:560px;line-height:1.35;margin-bottom:14px}
.area ul{max-width:480px;width:480px}
.area li{font-size:15px;padding-block:3px}
.how{padding-top:24px}
.how ol{margin-top:12px}
.how li{padding:0 0 0 75px;min-height:49px;margin-bottom:13px}
.how li:before{width:40px;height:40px;font-size:18px}
.how li strong{font-size:15px;line-height:1.35;margin-bottom:3px}
.how li span{font-size:14px;line-height:1.3;max-width:310px}
}

@container(min-width:1251px){
.area:after{clip-path:polygon(30% 0,100% 0,100% 100%,0 100%,0 26%,30% 26%)}
header.mast>.header-quote{font-size:16.5px;white-space:nowrap!important;padding-inline:8px}
.hero-copy .actions .button:last-child{white-space:nowrap;padding-inline:12px}
.hero-copy .actions svg{width:24px;height:28px}
}

.hero-copy .enquiry-note{max-width:500px}

/* V4: preserve native reference geometry; use a DOM-order header and
   content-sized hero when available width or text spacing needs more room. */
header.mast .brand .drop{flex:none;min-width:46px;width:46px}
header.mast .brand{column-gap:14px}
header.mast nav a[aria-current]{color:var(--blue);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
@container(max-width:1535px){
 header.mast{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);height:auto;min-height:75px;padding:16px clamp(20px,4cqw,64px);gap:16px 20px}
 header.mast>.brand{grid-column:1/-1;order:0!important;min-width:0;white-space:normal;flex-wrap:nowrap}
 header.mast>nav{position:static;left:auto;top:auto;right:auto;grid-column:1/-1;order:1!important;width:100%;min-width:0;max-width:100%;margin:0;padding:0;flex-wrap:wrap!important;justify-content:flex-start;gap:12px 24px;font-size:14px}
 header.mast>.phone,header.mast>.header-quote{position:static;left:auto;right:auto;top:auto;order:2!important;width:100%;height:auto;min-height:50px;margin:0;padding:12px;white-space:normal!important;min-width:0}
 header.mast>.header-quote{order:3!important}
 header.mast .brand .drop svg{width:46px;height:54px}
}
@container(max-width:600px){
 header.mast{grid-template-columns:minmax(0,1fr)}
 header.mast>.phone,header.mast>.header-quote{grid-column:1/-1}
}
@container(min-width:1536px){
 header.mast .brand .drop{width:38px;min-width:38px}
 header.mast .brand{column-gap:10px}
}
@container(min-width:1001px){
 .hero{height:auto;min-height:444px;align-items:start}
 .hero-copy{padding-right:24px;padding-bottom:16px}
 .hero-copy h1{white-space:normal;overflow-wrap:normal}
 .hero-copy>p:not(.enquiry-note){white-space:normal;max-width:100%}
 .hero-copy .actions .button{height:auto;min-height:54px;padding-block:11px;white-space:normal!important;max-width:100%}
}
@container(min-width:1001px) and (max-width:1535px){
 .hero-copy h1{font-size:clamp(36px,3.515625cqw,54px)}
}

/* Intrinsic native-row sizing also accommodates visitor text spacing. */
@container(min-width:1536px){
 header.mast{display:flex;align-items:center;gap:20px;height:auto;min-height:75px;padding:12px 5.4cqw}
 header.mast>nav{position:static;left:auto;top:auto;right:auto;order:1!important;flex:1 1 480px;width:auto;min-width:min(100%,480px);max-width:100%;margin:0;padding:0;justify-content:center;gap:12px 33px}
 header.mast>.phone,header.mast>.header-quote{position:static;left:auto;right:auto;top:auto;flex:none;width:max-content;height:auto;min-height:50px;margin:0}
 header.mast>.phone{min-width:174px;order:2!important}
 header.mast>.header-quote{min-width:212px;order:3!important}
}

/* Match the closing layout to content width during reflow as well as narrow windows. */
@container(max-width:700px){
 .contact{display:block;padding:45px 22px}
 .contact .button{margin-top:22px;max-width:100%;white-space:normal}
}

/* V5: intrinsic compact desktop header, with a two-row mid-width fallback. */
@container(min-width:1001px){
 header.mast{display:grid;grid-template-columns:auto 1fr auto auto;height:auto;min-height:75px;padding:12px 5.4cqw;gap:12px 20px;align-items:center}
 header.mast>.brand{grid-column:1;grid-row:1;order:0!important;white-space:nowrap;font-size:clamp(24px,2.083333cqw,32px);column-gap:10px}
 header.mast .brand .drop{width:38px;min-width:38px}
 header.mast .brand .drop svg{width:38px;height:50px}
 header.mast>nav{grid-column:2;grid-row:1;position:static;order:1!important;min-width:0;width:auto;flex:none;justify-content:center;font-size:clamp(12px,.911458cqw,14px);gap:12px clamp(12px,2.148438cqw,33px);padding:0;margin:0}
 header.mast>.phone,header.mast>.header-quote{position:static;grid-column:3;grid-row:1;order:2!important;width:max-content;min-width:0;max-width:300px;height:auto;min-height:50px;padding:10px 8px;white-space:normal!important;font-size:clamp(14px,1.171875cqw,18px)}
 header.mast>.header-quote{grid-column:4;order:3!important;font-size:clamp(13px,1.074219cqw,16.5px);gap:10px}
 .hero{height:auto;min-height:444px;align-items:stretch}
 .laval-hero-photo{align-self:stretch;aspect-ratio:auto;container-type:size;min-height:444px!important}

 .services a{grid-template-rows:auto minmax(52px,auto)}
 .services a>span:last-child{align-self:center;padding-block:0;line-height:1}
 .area{overflow:hidden}
}
@container(min-width:1001px) and (max-width:1250px){
 header.mast{grid-template-columns:auto 1fr;gap:10px 16px}
 header.mast>nav{grid-column:2;grid-row:1;justify-content:flex-start}
 header.mast>.phone{grid-column:1;grid-row:2;justify-self:start}
 header.mast>.header-quote{grid-column:2;grid-row:2;justify-self:start}
}
@container(min-width:1536px){
 header.mast{grid-template-columns:auto 1fr 174px 212px;padding-left:5.4cqw;padding-right:5.273cqw;gap:12px}
 header.mast>.phone{width:174px}
 header.mast>.header-quote{width:212px}
 header.mast>nav{justify-content:flex-start;padding-left:77px;gap:33px}
}

@container(min-width:1251px){.area:after{max-height:100%}}





/* Reuse the exact source rectangle, covering only its plumbing photo at adaptive widths. */
body{container-name:laval-page}
.laval-hero-photo>.v5-hero-fill{display:none;position:absolute;inset:0;width:100%;height:100%;stroke:none}
@container laval-page (min-width:1001px){
 .laval-hero-photo>img{display:none}
 .laval-hero-photo>.v5-hero-fill{display:block}
}


/* Keep the notch at the reference-art scale when the map panel is height-capped. */
@container(min-width:1251px){.area:after{clip-path:polygon(30% 0,100% 0,100% 100%,0 100%,0 4.67194cqw,30% 4.67194cqw)}}

/* V6: preserve the native photo until visitor text makes its row taller. */
.laval-hero-photo{container-name:laval-photo}
@container laval-page (min-width:1536px) and (max-width:1536px){
 .laval-hero-photo>img{display:block}
 .laval-hero-photo>.v5-hero-fill{display:none}
}
@container laval-photo (min-height:445px){
 .laval-hero-photo>img{display:none}
 .laval-hero-photo>.v5-hero-fill{display:block}
}
@container laval-page (max-width:600px){.hero-copy h1{font-size:clamp(30px,10cqw,34px);overflow-wrap:normal;hyphens:none}}

/* Let the narrow enquiry grid and call text reflow within the available track. */
@container laval-page (max-width:700px){
 .lp-quotepage>.wrap{grid-template-columns:minmax(0,1fr)}
 .lp-quotepage>.wrap>*{min-width:0}
 .lp-quotepage .call-panel{grid-template-columns:minmax(0,1fr)}
 .lp-quotepage .call-panel a{min-width:0;white-space:normal;overflow-wrap:anywhere}
}

/* V7 source proposal: preserve phone tokens and leave room for enlarged labels. */
.phone-number{white-space:nowrap}
.skip:focus{position:fixed}
.services a{scroll-margin-block:8px}
[data-world="laval-handbook"] .side-cta{min-width:0}
@container laval-page (min-width:1536px){
 header.mast{grid-template-columns:auto minmax(0,1fr) minmax(174px,max-content) minmax(212px,max-content)}
 header.mast>.phone{width:auto;min-width:174px}
}
@container laval-page (max-width:600px){
 [data-world="laval-handbook"] .lp-cta h2{font-size:clamp(26px,8.5cqw,32px)}
}
/* Keep copy in a separate lane; use only the existing selected map art.
   Fade the decorative crop's edges instead of leaving an abrupt bottom cut. */
@container laval-page (min-width:1001px){
 .area{padding-right:0;--area-map-width:28.841cqw;--area-text-lane:calc(100% - var(--area-map-width) - 20px)}
 .lower .area>h2,.lower .area>p{max-width:var(--area-text-lane)}
 .lower .area>ul{width:min(480px,var(--area-text-lane));max-width:var(--area-text-lane);columns:initial;display:grid;grid-auto-flow:column;grid-template-rows:repeat(4,auto);grid-template-columns:repeat(2,minmax(0,1fr));column-gap:26px}
 .area li a{display:inline-block;max-width:100%;vertical-align:middle}
 .area:after{right:0;top:0;bottom:auto;width:var(--area-map-width);height:17.969cqw;max-height:100%;background-image:url('/assets/selected-card-image.webp');background-size:100cqw auto;background-position:-37.37cqw -48.698cqw;opacity:1;clip-path:polygon(30% 0,100% 0,100% 100%,0 100%,0 4.67194cqw,30% 4.67194cqw);mask-image:linear-gradient(to right,transparent,#000 18px),linear-gradient(to bottom,#000 calc(100% - 24px),transparent);mask-composite:intersect}
 .area .map-city{display:none}
 .area h2{color:#051570}
 .services a{box-shadow:0 3px 12px rgb(9 40 88 / 6%)}
 .services a>span:last-child{display:flex;align-items:center;justify-content:center}
 .services .service-chevron{display:block;width:12px;height:20px;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none}
 .how{background:#f7fbfe}
 .how li:before{left:8px}
 .area li{padding-left:37px}
 .area li:before{width:22px;height:22px;font-size:12px;top:50%;transform:translateY(-50%)}
}
[data-world="laval-handbook"] .lp-services li>.service-current{min-height:76px;display:flex;align-items:center;color:var(--lp-ink);padding:18px 0}
/* The SVG chevron remains centred on narrow tile labels too. */
.services .service-chevron{display:block;width:12px;height:20px;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none}
.services a>span:last-child{display:flex;align-items:center;justify-content:center}

/* V8: keep contact controls inside the existing sidebar lane.
   Preserve the complete phone number; its prefix may reflow separately. */
[data-world="laval-handbook"] .side-cta{grid-template-columns:minmax(0,1fr)}
[data-world="laval-handbook"] .side-cta>*{min-width:0;max-width:100%}
[data-world="laval-handbook"] .side-cta .sc-phone{flex-wrap:wrap;row-gap:0}
[data-world="laval-handbook"] .side-cta .btn{white-space:normal;overflow-wrap:normal;hyphens:auto}
/* Only dark contact/footer hosts change indicator colour. Keep the existing
   width/offset and the passing blue indicators on light surfaces. */
.contact :focus-visible,footer :focus-visible,
[data-world="laval-handbook"] .lp-cta :focus-visible,
[data-world="laval-handbook"] .lp-foot :focus-visible{outline-color:#fff!important}

/* Leave room for the existing offset outline when keyboard focus scrolls. */
.contact a,footer a,[data-world="laval-handbook"] .lp-cta a{scroll-margin-block:12px}

/* V9 reference reconciliation: retain source artwork and match native text scale.
   Wide-only text tuning leaves narrow whole-word and inner-page rules intact. */
@container laval-page (min-width:1251px){
 .hero-copy{padding-top:38px}
 .hero-copy h1{font-size:clamp(36px,3.515625cqw,54px);line-height:1.05;font-weight:750}
 .hero-copy>p:not(.enquiry-note){color:#617080}
 .hero-copy .actions{gap:20px}
 .services strong{font-weight:650}
 .area:after{mask-image:none}
 .area li a{text-decoration:none}
}

@container laval-page (min-width:1251px){.services strong{font-size:16px}.services .service-chevron{stroke-width:1.8}}

/* Use the selected source logotype artwork, not a reconstructed drop or font.
   The home link keeps its explicit accessible brand/destination name. */
header.mast .brand{gap:0;margin-left:-1px}
header.mast .reference-brand{display:block;width:clamp(190px,17.838542cqw,274px);height:auto;aspect-ratio:274/54;max-width:100%}

@container laval-page (min-width:1251px){header.mast{padding-block:0;min-height:75px}.services a:last-child strong{font-size:15.5px;padding-right:8px}}

@container laval-page (min-width:1536px){header.mast nav{font-size:14px}}

/* The map has an empty upper-left notch: the heading may use it; paragraph and links retain their safe lane. */
@container laval-page (min-width:1001px){.lower .area>h2{max-width:calc(var(--area-text-lane) + 70px)}}

/* V10: measured native reference baselines; small-width reflow remains intact. */
@container laval-page (min-width:1251px){
 .hero-copy{padding-top:39px}
 .hero-copy h1{line-height:1.08;margin-bottom:6px}
 .services strong{font-weight:700}
 .area,.how{padding-top:21px}
 .lower h2{margin-bottom:7px}
 .area p{margin-bottom:10px}
 .area li{line-height:1.466667}
 .how ol{margin-top:10px}
 .how li{min-height:45px;margin-bottom:10px}
 .how li span{line-height:1.2}
 .hero-copy .enquiry-note{max-width:590px}
}

/* Match measured native line widths without substituting or stretching glyphs. */
@container laval-page (min-width:1251px){.hero-copy h1 .reference-line:nth-of-type(2){letter-spacing:-.0417em}.hero-copy h1 .reference-line:nth-of-type(3){letter-spacing:-.0148em}}
