/* =========================================================
   SPA CATEGORY pattern - /residential-spa-heat-pumps/
   Figma frame 704:4989 "Spa Heat Pumps - Approved", 1920 x 11012.

   Every number below was read off a layer of 704:4989 with
   get_design_context, not eyeballed. The frame is 1920 wide starting at
   0,0, so a Figma y IS the page y this file produces and the y the spec
   in scripts/figma-gate/specs/patterns/spa-category/ asserts.

   This file also holds what used to be the template's inline <style>
   block (declared in scripts/figma-gate/migrated/spa-category.json so the
   render harness strips the deployed copy). Rules are scoped to
   ".evo-tpl-page-residential-spa-heat-pumps" so they cannot reach the
   other pages that share these class names.

   SHAPE OF THE FRAME. Like the pool category, this design is not a flow
   of padded bands: the sections are hand-placed layers and several
   overlap. Each section this pattern owns is a fixed-height block with
   its children absolutely positioned at the Figma offset, and the bands
   that overlap abut where the upper layer stops being visible:

     hero             0     h 962   photo 0-721, white lip from 684
     contact card     544   h 706   straddles the hero edge (shared)
     intro            816   h 552   h2 + body (starts inside the hero)
     product range    1368  h 1080  grey band, the cta band begins on its edge
     evaluation cta   2448  h 767   white lip from 3108 (shared component)
     reviews          3215  h 592   shared component, page rhythm only
     leaders band     3807  h 733   navy, radius 28
     browse by sol    4540  h 1032  heading 4678, cards 4799
     benefits 2x2     5572  h 1191  grey, radius 28 top / 60x56.05 bottom
     testimonial 1    6763  h 679   on WHITE: this frame has no grey panel
     navy band        7442  h 664   navy panel, radius 28
     testimonial 2    8106  h 697   Figma panel starts 8075, navy covers 31
     logos            8803  h 512   shared component, page rhythm only
     faq              9315  h 607   shared component, box heights only
     footer           9922          shared component

   Two differences from the pool category frame worth naming, because
   they look like mistakes and are not:

   1. The first testimonial has NO grey panel behind it. 704:5233 is bare
      content on the page white, while the second one (704:5250) does get
      its 1920x728 #f4f4f4 panel. Reproduced as drawn.
   2. Because of that the navy band's top corners sit on white and its
      bottom corners sit on the grey of testimonial two, which starts 31px
      before the navy ends. One flat colour cannot do both, so the section
      paints white down to 633 and #f4f4f4 for the last 31.

   All fixed-pixel geometry is inside @media(min-width:1201px). Below that
   the base rules give the fluid layout the template always had, so 375px
   has no horizontal scroll. There are no mobile frames in Figma.
   ========================================================= */

/* ---------------------------------------------------------
   BASE / FLUID  (all widths, exact geometry overrides below)
   --------------------------------------------------------- */
.evo-tpl-page-residential-spa-heat-pumps .php-hero{position:relative;min-height:700px;overflow:visible;color:#fff;background:#0a4a7a;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg{position:absolute;inset:0;z-index:0;overflow:hidden;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg img{position:relative;z-index:0;width:100%;height:100%;object-fit:cover;}
/* 704:4992 "Overlay" is a 1920x747 rectangle with a 1px black stroke and no
   fill, drawn over the photo. The 20% black wash the hero carries is a second
   FILL on the photo node 704:4991 itself, so it is already in hero.png and
   must not be painted twice. */
/* the stroke is a 1920 artboard detail: below 1201 there is no Figma frame to
   match and a hairline around a fluid hero is not a design, so it is off */
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg .ov{position:absolute;inset:0;z-index:1;background:transparent;border:0;}
/* Figma's layer order inside the hero, bottom to top: photo 704:4991, the
   overlay stroke 704:4992, the txt block, then the white panel 704:5002. The
   contact card 704:5017 and the intro 704:5014 are NOT inside the banner
   frame, so they sit above the panel: hence z-index 4 (site.css) and 5. */
.evo-tpl-page-residential-spa-heat-pumps .php-hero .lip{position:absolute;left:0;right:0;bottom:-1px;height:56px;background:#fff;border-radius:28px 28px 0 0;z-index:3;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .container{position:relative;z-index:2;padding-top:380px;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .eyebrow{font-weight:400;font-size:20px;line-height:normal;margin-bottom:6px;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero h1{font-weight:700;font-size:40px;line-height:1.15;letter-spacing:-1.5px;}

.evo-tpl-page-residential-spa-heat-pumps .php-intro{position:relative;z-index:5;padding:60px 0 70px;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap{max-width:777px;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro h2{font-weight:700;font-size:32px;line-height:1.1;letter-spacing:-1.5px;color:#27272d;margin-bottom:24px;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro p{font-weight:300;font-size:20px;line-height:26px;color:#000;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro p+p{margin-top:26px;}

.evo-tpl-page-residential-spa-heat-pumps .php-range{background:#f4f4f4;padding:60px 0 70px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range h2{text-align:center;font-weight:700;font-size:32px;line-height:1.16;letter-spacing:-1px;color:#27272d;margin-bottom:40px;}

.evo-tpl-page-residential-spa-heat-pumps .php-leaders{background:#002b54;color:#fff;padding:70px 0;text-align:center;border-radius:28px;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders h2{font-weight:700;font-size:30px;line-height:1.2;letter-spacing:-0.96px;margin:0 auto 32px;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders h2 .blue{color:#2ca9e3;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders .badges2{margin:0 auto 32px;background:none;padding:0;min-height:0;border-radius:0;}
/* site.css caps every .badges2 img at 80px tall for the interior pages that
   share the class; Figma 704:5167 is 1348x179, so the cap is released here. */
.evo-tpl-page-residential-spa-heat-pumps .php-leaders .badges2 img{width:auto;max-width:100%;height:auto;max-height:none;object-fit:contain;margin:0 auto;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders p{font-weight:300;font-size:20px;line-height:1.4;letter-spacing:-0.56px;color:#fff;margin:0 auto;}

.evo-tpl-page-residential-spa-heat-pumps .php-sol{padding:60px 0;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol h2{text-align:center;font-weight:700;font-size:32px;line-height:1.34;letter-spacing:-1px;color:#27272d;margin-bottom:40px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row{display:grid;grid-template-columns:1fr;gap:24px;}
.evo-tpl-page-residential-spa-heat-pumps .php-scard{position:relative;display:block;aspect-ratio:481/629;border-radius:40px;overflow:hidden;}
.evo-tpl-page-residential-spa-heat-pumps .php-scard .sol-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;}
.evo-tpl-page-residential-spa-heat-pumps .php-scard .sol-photo{position:absolute;left:0;top:0;width:100%;height:78.06%;object-fit:cover;z-index:2;}
.evo-tpl-page-residential-spa-heat-pumps .php-scard .sol-unit{position:absolute;left:22.66%;top:44.51%;width:56.55%;height:auto;z-index:3;}
.evo-tpl-page-residential-spa-heat-pumps .php-scard .cap{position:absolute;left:13.93%;bottom:12%;z-index:4;font-weight:500;font-size:24px;line-height:1.2;letter-spacing:-1.44px;color:#fff;background:none;padding:0;}

.evo-tpl-page-residential-spa-heat-pumps .spa-benefits{background:#f4f4f4;padding:60px 0 70px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .eyb{text-align:center;font-family:var(--font-display);font-weight:400;font-size:18px;line-height:normal;letter-spacing:-0.36px;color:#27272d;margin-bottom:12px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits h2{text-align:center;font-weight:700;font-size:32px;line-height:1.2;letter-spacing:-0.96px;color:#27272d;margin-bottom:40px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .grid{display:grid;grid-template-columns:1fr;gap:24px;max-width:none;margin:0;align-items:stretch;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .photo{border-radius:30px;overflow:hidden;background:#cdd6df;min-height:320px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .photo img{width:100%;height:100%;object-fit:cover;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards{display:grid;grid-template-columns:1fr;gap:24px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard{position:relative;background:#fff;border-radius:30px;padding:36px 34px 40px;display:flex;flex-direction:column;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard .ic{display:block;width:36px;height:auto;margin-bottom:26px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard h3{font-weight:500;font-size:28px;line-height:1.2;letter-spacing:-0.72px;color:#27272d;margin:0 0 14px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard p{font-weight:300;font-size:17px;line-height:22px;color:#27272d;margin:0;}

.evo-tpl-page-residential-spa-heat-pumps .php-alt{position:relative;background:#fff;padding:50px 0;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey{background:#f4f4f4;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .grid{display:grid;grid-template-columns:1fr;gap:32px;align-items:center;max-width:none;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .pimg2{display:block;height:auto;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .pimg2 img{width:100%;height:auto;max-height:none;object-fit:contain;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .stars{display:flex;gap:17.649px;margin-bottom:24px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .stars img{width:29.881px;height:30px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt blockquote{font-weight:300;font-size:20px;line-height:34px;color:#27272d;margin-bottom:22px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .who{font-family:var(--font-display);font-weight:700;font-size:18px;line-height:normal;color:#000;}

.evo-tpl-page-residential-spa-heat-pumps .php-navy{position:relative;background:#002b54;color:#fff;padding:60px 0;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .grid{display:grid;grid-template-columns:1fr;gap:32px;align-items:center;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy h2{font-weight:700;font-size:30px;line-height:1.2;letter-spacing:-0.96px;margin-bottom:22px;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .copy .sub{font-weight:300;font-size:22px;line-height:1.4;letter-spacing:-0.56px;color:#fff;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .copy .body{font-weight:300;font-size:18px;line-height:1.5;letter-spacing:-0.56px;color:#fff;margin:24px 0 0;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .chart{background:none;border-radius:0;min-height:0;display:block;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .chart img{width:100%;height:auto;max-width:100%;object-fit:contain;}

.evo-tpl-page-residential-spa-heat-pumps .php-faq .fbtn{font-size:16px;}

/* Figma sets its own line breaks inside two text nodes on this frame: 704:5291
   breaks after "you may have." and 704:5162 after "low carbon emissions,".
   Chromium sets Circular Std a shade narrower than Figma does, so without them
   the build re-wraps and the lines do not land where the design draws them.
   The breaks are the design's, not a nudge, and they are released below 1201
   where there is no Figma frame to match. */
.evo-tpl-page-residential-spa-heat-pumps br.fxbr{display:none;}

/* ---------------------------------------------------------
   EXACT FIGMA GEOMETRY  (the 1920 artboard)
   --------------------------------------------------------- */
@media(min-width:1201px){

/* the design's own line breaks inside 704:5291 and 704:5162 */
.evo-tpl-page-residential-spa-heat-pumps br.fxbr{display:inline;}

/* ---- HERO 704:4990 --------------------------------------------------
   962 tall, overflow clipped. The photo 704:4991 is 1920x721 at 0,0 and
   carries its own rgba(0,0,0,0.2) fill, so hero.png is the node as drawn.
   704:4992 "Overlay" is a 1920x747 box with a 1px black stroke over it;
   its left and right edges are visible down to the white panel's rounded
   corner and its bottom edge is hidden under the panel. The white panel
   704:5002 starts at 684 with a 28 radius and is 915 tall inside the
   clip, so only its rounded top and the 278 down to the hero's edge ever
   show; it is built at that visible height so it cannot paint over the
   intro below it. */
/* No overflow clip here: the white panel is built at the 278px that is
   actually visible, and the contact card 704:5017 runs 288px past the hero's
   bottom edge because Figma draws it OUTSIDE the banner frame. */
.evo-tpl-page-residential-spa-heat-pumps .php-hero{height:962px;min-height:0;overflow:visible;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg{inset:auto;left:0;right:0;top:0;height:721px;overflow:visible;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg img{width:1920px;height:721px;object-fit:fill;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .bg .ov{inset:auto;left:0;top:0;width:1920px;height:747px;border:1px solid #000;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .lip{top:684px;bottom:auto;height:278px;}
.evo-tpl-page-residential-spa-heat-pumps .php-hero .container{position:static;padding:0;max-width:none;}
/* 704:4995 Book 20, auto leading, box centred on y409. The node is two lines,
   an empty one and the copy, so the ink IS the second line: 409 to 434.6.
   The box is built at that line's own height so the ink lands on Figma's row
   without carrying a blank line in the markup. */
.evo-tpl-page-residential-spa-heat-pumps .php-hero .eyebrow{position:absolute;left:201px;top:409px;height:25.6px;z-index:2;margin:0;font-weight:400;font-size:20px;line-height:25.6px;letter-spacing:normal;}
/* 704:4994 Bold 75/89, tracking -1.5, box centred on y473.5 */
.evo-tpl-page-residential-spa-heat-pumps .php-hero h1{position:absolute;left:195px;top:429px;z-index:2;margin:0;font-weight:700;font-size:75px;line-height:89px;letter-spacing:-1.5px;white-space:nowrap;}
/* 704:5018 the contact card straddles the hero edge: 1115,544 to 1719,1250 */
.evo-tpl-page-residential-spa-heat-pumps .php-hero .php-contact{top:544px;right:201px;}

/* ---- CONTACT CARD 704:5017, the form inside it ----------------------
   The shared component in site.css gives the card its box, its border and
   the type of a field, but nothing about the layout INSIDE it, so the
   fields shrink to their content, the two column rows stack, the phone
   line inherits the hero's white and the button lands 96px high. Figma
   places every layer by hand, so they are placed here the same way,
   against the card's own 1115,544 origin:

     word 704:5023    1248,596   (the wordmark 704:5024 sits 13px higher)
     wordmark 704:5024 1402,583  196x59
     phone 704:5022   1301,640   Bold 40/50 -1.2 #27272d
     first name       1149,719   535x62   rows every 78
     last name        1149,797   535x62
     email / phone    1149 / 1423.16, 875   260.84x62 each
     state / postcode 1150 / 1424.16, 953
     method / time    1149 / 1423.16, 1031
     submit 704:5020  1149,1130  534x65

   Every offset below is the Figma page position minus the card's origin
   (1115,544) minus its own 1px border, which is where an absolutely
   placed child of the card starts. They come out identical to the pool
   category's, because it is the same component drawn 26px higher on this
   frame. The form's children are h2, .ph, two inputs, three .row2 and the
   button, so the rows are addressed by nth-child: .ph is a div too, which
   makes nth-of-type off by one. */
.evo-tpl-page-residential-spa-heat-pumps .php-contact h2{display:block;height:0;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact h2 .ch{position:absolute;left:132px;top:51px;height:50px;display:flex;flex-direction:column;justify-content:center;font-weight:700;font-size:40px;line-height:50px;letter-spacing:-1.2px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact h2 img{position:absolute;left:286px;top:38px;width:196px;height:59px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .ph{position:absolute;left:185px;top:95px;height:50px;display:flex;flex-direction:column;justify-content:center;margin:0;font-family:var(--font-display);font-weight:700;font-size:40px;line-height:50px;letter-spacing:-1.2px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .fld2{position:absolute;width:534.999px;padding:0 30.52px;letter-spacing:-0.18px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact>.fld2:nth-of-type(1){left:33px;top:174px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact>.fld2:nth-of-type(2){left:33px;top:252px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2{display:block;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2 .fld2{width:260.836px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(5) .fld2:nth-child(1){left:33px;top:330px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(5) .fld2:nth-child(2){left:307.16px;top:330px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(6) .fld2:nth-child(1){left:34px;top:408px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(6) .fld2:nth-child(2){left:308.16px;top:408px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(7) .fld2:nth-child(1){left:33px;top:486px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(7) .fld2:nth-child(2){left:307.16px;top:486px;}
/* the chevrons 704:5044 / 704:5048 / 704:5053 / 704:5057 are the Figma vector,
   hand placed on each select rather than evenly inset, and the native arrow is
   removed so only the design's own mark shows */
.evo-tpl-page-residential-spa-heat-pumps .php-contact select.fld2{appearance:none;-webkit-appearance:none;background-image:url("/wp-content/themes/evoheat/assets/img/figma/spa-category/field-chevron.svg");background-repeat:no-repeat;background-size:9.65146px 5.26476px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(6) .fld2:nth-child(1){background-position:right 18.08px top 30.07px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(6) .fld2:nth-child(2){background-position:right 22.59px top 32.07px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(7) .fld2:nth-child(1){background-position:right 18.08px top 30.07px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .row2:nth-child(7) .fld2:nth-child(2){background-position:right 20.69px top 32.07px;}
.evo-tpl-page-residential-spa-heat-pumps .php-contact .sbtn{position:absolute;left:33px;top:585px;width:534px;height:65px;}

/* ---- INTRO 704:5014 -------------------------------------------------
   The heading and the body are page-level layers that start at y816,
   inside the hero's last 146px, so the section is pulled up by 146 and
   ends where the product band starts (1368). This frame carries NO awards
   badge above the heading; the pool category frame does. */
.evo-tpl-page-residential-spa-heat-pumps .php-intro{height:552px;margin-top:-146px;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro>.container{max-width:none;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap{max-width:none;}
/* 704:5016 Bold 50/50, tracking -1.5, 777 wide, three lines centred on y891 */
.evo-tpl-page-residential-spa-heat-pumps .php-intro h2{position:absolute;left:201px;top:0;width:777px;height:150px;margin:0;font-weight:700;font-size:50px;line-height:50px;letter-spacing:-1.5px;color:#27272d;}
/* 704:5015 Light 20/26, 783 wide, and BLACK, not the #27272d of the heading.
   The node is two paragraphs with an empty 26px line between them. */
.evo-tpl-page-residential-spa-heat-pumps .php-intro p{position:static;width:783px;max-width:none;margin:0;font-weight:300;font-size:20px;line-height:26px;letter-spacing:normal;color:#000;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap>p:first-of-type{position:absolute;left:206px;top:169px;}
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap>p:first-of-type+p{position:absolute;left:206px;top:247px;margin:0;}

/* ---- PRODUCT RANGE 704:5058 -----------------------------------------
   Band 704:5059 is #f4f4f4 1920x1080 from 1368, and the cta image band
   starts exactly where it ends, so nothing is covered. Heading 704:5087
   Bold 50/58 tracking -1 at y1520, card row at y1655. The cards are the
   shared product-card component and its card-relative offsets are already
   this frame's: badge (99,341), name 455, sub 495, button (88,548). */
.evo-tpl-page-residential-spa-heat-pumps .php-range{padding:152px 0 148px;}
/* 704:5087 is a nowrap line centred on the artboard, so a full width centred
   box puts the glyphs exactly where the design draws them. */
.evo-tpl-page-residential-spa-heat-pumps .php-range h2{width:auto;max-width:none;margin:0 0 77px;height:58px;text-align:center;font-weight:700;font-size:50px;line-height:58px;letter-spacing:-1px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row{display:grid;grid-template-columns:repeat(3,480px);gap:40px;max-width:none;margin:0;}

/* ---- EVALUATION CTA 704:5088 (shared component, page rhythm + band art)
   Content block at y2606 (padding 158), band 767 tall. 704:5090 lays a
   50% gradient over the photo's top 684 and 704:5100 lays the white
   rounded lip from 3108; both are band art, not component internals. */
.evo-tpl-page-residential-spa-heat-pumps main>section.ctaform .cf-inner{padding:158px 0 242px;}
/* 704:5089 "Image" is the band box itself and carries a rgba(0,0,0,0.2) fill
   of its own on top of the photo, so cta-bg.png IS the band as drawn and the
   component's separate .ov would paint the wash twice. Cleared for this page
   only; raised for the component in docs/fleet-issues/spa-category.md. */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbg>img{object-fit:fill;}
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbg .ov{background:transparent;}
/* This frame draws the whole cta row 18px left of the home frame's: card
   704:5091 at x197 (home 215), copy 704:5092 at x700 (home 718), badge
   704:5098 at x1423 (home 1441). The row is a flex line, so pulling the first
   child 18px left carries the copy and the badge with it. */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfcard{margin-left:-3px;}
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbg::before{content:"";position:absolute;left:0;right:0;top:0;height:684px;background:linear-gradient(to bottom,rgba(0,0,0,.8) 0%,rgba(0,0,0,0) 50%);opacity:.5;z-index:1;pointer-events:none;}
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbg::after{content:"";position:absolute;left:0;right:0;top:660px;height:329px;background:#fff;border-radius:28px;z-index:3;pointer-events:none;}
/* 704:5097 Medium 48, AUTO leading, two lines centred in a 648x114 box */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfhead{width:648px;height:114px;line-height:61px;display:flex;flex-direction:column;justify-content:center;}
/* 704:5093 Book 20, AUTO leading, three lines in a 677x84 box */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbody{height:84px;line-height:25.4px;}

/* ---- REVIEWS 704:5101 (shared component, page rhythm only)
   Heading 704:5158 at 3240, badge 704:5159 349x69 at 794,3325, the four
   review columns at 3501. The section runs 3215 to 3807. */
.evo-tpl-page-residential-spa-heat-pumps main>section.reviews{padding:25px 0 121px;}
/* Neither the heading nor the badge is centred on the artboard on this frame:
   704:5158 is centred on 968 and 704:5159 starts at x794, both 8px right of
   centre. The heading keeps a full width centred box shifted 8px so the line
   lands on Figma's centre; its own width is the glyph advance, not a design
   decision, so it is not asserted. */
.evo-tpl-page-residential-spa-heat-pumps section.reviews .rh{margin:0 -8px 22px 8px;height:63px;}
.evo-tpl-page-residential-spa-heat-pumps section.reviews .rlogo{margin:0 auto 107px 594px;}
/* The four review columns are not evenly spaced either: 704:5102 / 704:5116 /
   704:5130 / 704:5144 sit at 172, 582, 987 and 1402, so the gaps are 410, 405
   and 415. The shared grid distributes them evenly, which lands the third
   column 4px right; it is nudged back without changing its 346 wide box. */
.evo-tpl-page-residential-spa-heat-pumps .rev-row .rcell:nth-child(3){position:relative;left:-4px;}
/* Figma puts the name box on the cell top (3501), the five 22.262px stars on
   3528 and the first line of every body on 3573, in all four columns - the
   body boxes have different tops only because Figma fixes each one at 106 and
   centres the copy in it. The component's own margins (16 and 20) put the
   stars 11px and the bodies 5px low. Cell two's name 704:5118 is also drawn
   4px right of its column, unlike the other three. */
.evo-tpl-page-residential-spa-heat-pumps .rev-row .rcell .rname{line-height:23px;margin-bottom:4px;}
.evo-tpl-page-residential-spa-heat-pumps .rev-row .rcell .rstars{margin-bottom:22.738px;}
.evo-tpl-page-residential-spa-heat-pumps .rev-row .rcell:nth-child(2) .rname{padding-left:4px;}

/* ---- INDUSTRY LEADERS 704:5160 --------------------------------------
   Navy 704:5161 3807 h733 radius 28 on white. Heading 704:5163 Bold 48
   auto-leading tracking -0.96 in a 1035x108 box centred on 960.5; awards
   row 704:5167 1348x179 at 4071; body 704:5162 Light 28/39 tracking
   -0.56 in a 1190x152 box centred on 964. */
.evo-tpl-page-residential-spa-heat-pumps .php-leaders{position:relative;height:733px;padding:0;background:#002b54;border-radius:28px;text-align:left;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders>.container{max-width:none;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders h2{position:absolute;left:443px;top:99px;width:1035px;height:108px;margin:0;text-align:center;font-weight:700;font-size:48px;line-height:61px;letter-spacing:-0.96px;color:#fff;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders .badges2{position:absolute;left:266px;top:264px;width:1348px;height:179px;margin:0;padding:0;background:none;border-radius:0;min-height:0;display:block;color:inherit;font-size:inherit;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders .badges2 img{width:1348px;height:179px;max-width:none;max-height:none;object-fit:cover;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-leaders p{position:absolute;left:369px;top:468px;width:1190px;height:152px;margin:0;max-width:none;text-align:center;font-weight:300;font-size:28px;line-height:39px;letter-spacing:-0.56px;color:#fff;}

/* ---- BROWSE BY SOLUTIONS 704:5168 -----------------------------------
   Heading 704:5199 Bold 50/67 tracking -1 at 4678. Three 481x629 cards
   radius 40 at 4799, left 199 / 718 / 1239 - Figma's gaps are 38 then 40,
   not a grid, so each card is placed on its own x. Card art, in Figma's
   own order: a 0.2 black rectangle (cards 2 and 3 only, fully covered by
   the photo above it), the card photo, and on card 1 a second 491-tall
   photo, then the product render and the caption. */
.evo-tpl-page-residential-spa-heat-pumps .php-sol{position:relative;height:1032px;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol>.container{max-width:none;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol h2{position:absolute;left:0;right:0;top:138px;width:auto;box-sizing:border-box;height:67px;margin:0;text-align:center;font-weight:700;font-size:50px;line-height:67px;letter-spacing:-1px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row{display:block;gap:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard{position:absolute;top:259px;width:481px;height:629px;aspect-ratio:auto;border-radius:40px;overflow:hidden;background:none;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(1){left:199px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(2){left:718px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(3){left:1239px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(2)::before,
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(3)::before{content:"";position:absolute;inset:0;border-radius:40px;background:rgba(0,0,0,.2);z-index:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard .sol-bg{position:absolute;inset:auto;left:0;top:0;width:481px;height:629px;border-radius:40px;object-fit:cover;z-index:1;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard .sol-photo{position:absolute;left:0;top:0;width:480px;height:491px;border-radius:40px;object-fit:cover;z-index:2;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard .sol-unit{position:absolute;z-index:3;object-fit:contain;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(1) .sol-unit{left:109px;top:280px;width:272px;height:198px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(2) .sol-unit{left:111px;top:290px;width:257px;height:199px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(3) .sol-unit{left:158px;top:266px;width:155px;height:225px;}
/* captions 704:5173 / 704:5179 / 704:5191 Medium 36 tracking -1.44. Figma's
   boxes are 46 tall with the line centred in them (centres 5330 and 5332);
   card 3's is a 330 box, 50 tall, with 50 leading. Each is built at Figma's
   own height so the box and the line both land as drawn. */
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard .cap{position:absolute;bottom:auto;height:46px;display:flex;flex-direction:column;justify-content:center;background:none;padding:0;margin:0;font-weight:500;font-size:36px;line-height:normal;letter-spacing:-1.44px;color:#fff;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(1) .cap{left:67px;top:508px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(2) .cap{left:57px;top:510px;}
.evo-tpl-page-residential-spa-heat-pumps .php-sol .row .php-scard:nth-child(3) .cap{left:81px;top:508px;width:330px;height:50px;line-height:50px;}

/* ---- BENEFITS 2x2  704:5206 -----------------------------------------
   704:5207 is not a rectangle but a vector: two #f4f4f4 rounded rects on
   one path, a 1920x1191 with a 60 x 56.0471 elliptical corner and a
   1920x319.468 with a 28 corner over its top. Their union is what the
   frame draws: 28 at the top, 60 x 56.0471 at the bottom.
   Eyebrow 704:5232 Book 18 auto tracking -0.36 in a 278x23.019 box
   centred on 958 / 5688.6. Heading 704:5231 Bold 48/53 tracking -0.96 in
   an 871x106.089 box centred on 957.5 at 5709.12. Photo 704:5208 488 x
   726.61 radius 30 at 194,5898.27. Four 492 x 353.297 cards radius 30 at
   710 / 1224 and 5898.27 / 6275.59, each with its icon, heading and body
   hand placed inside it. */
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits{position:relative;height:1191px;padding:0;background:#f4f4f4;border-radius:28px 28px 60px 60px / 28px 28px 56.0471px 56.0471px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits>.container{max-width:none;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .eyb{position:absolute;left:819px;top:105.09px;width:278px;height:23.019px;margin:0;display:flex;flex-direction:column;justify-content:center;text-align:center;font-family:var(--font-display);font-weight:400;font-size:18px;line-height:normal;letter-spacing:-0.36px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits h2{position:absolute;left:522px;top:137.12px;width:871px;height:106.089px;margin:0;text-align:center;font-weight:700;font-size:48px;line-height:53px;letter-spacing:-0.96px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .grid{display:block;gap:0;max-width:none;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .photo{position:absolute;left:194px;top:326.27px;width:488px;height:726.61px;min-height:0;border-radius:30px;overflow:hidden;background:#cdd6df;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .photo img{width:488px;height:726.61px;object-fit:cover;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards{display:block;gap:0;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard{position:absolute;width:492px;height:353.297px;padding:0;border-radius:30px;background:#fff;display:block;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(1){left:710px;top:326.27px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(2){left:1224px;top:326.27px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(3){left:710px;top:703.59px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(4){left:1224px;top:703.59px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard .ic{position:absolute;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard h3{position:absolute;margin:0;font-family:var(--font-display);font-weight:500;font-size:36px;line-height:36px;letter-spacing:-0.72px;color:#27272d;}
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard p{position:absolute;margin:0;font-weight:300;font-size:17px;line-height:22px;letter-spacing:normal;color:#27272d;}
/* 704:5213 / 704:5219 / 704:5225 / 704:5230: four different icons at four
   different sizes and four different insets. Card three's mark is the OTHER
   brand blue (#2baae3 against the #2ca9e3 of the rest); both ship. */
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(1) .ic{left:46.99px;top:56.06px;width:30.055px;height:40.96px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(2) .ic{left:48px;top:62.73px;width:36.015px;height:36.015px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(3) .ic{left:47.99px;top:41.04px;width:33.015px;height:33.013px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(4) .ic{left:46.99px;top:41.04px;width:36.932px;height:34.091px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(1) h3{left:47px;top:134.12px;width:277px;height:36.03px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(2) h3{left:47px;top:134.12px;width:206px;height:36.03px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(3) h3{left:47px;top:132.11px;width:335px;height:78.066px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(4) h3{left:47px;top:129.11px;width:349px;height:74.062px;line-height:37px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(1) p{left:47px;top:186.16px;width:398px;height:110.092px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(2) p{left:47px;top:186.16px;width:373px;height:110.092px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(3) p{left:47px;top:216.18px;width:398px;height:66.055px;}
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(4) p{left:47px;top:216.18px;width:398px;height:74.062px;}

/* ---- TESTIMONIAL BAND 1  704:5233 -----------------------------------
   Unlike the pool category frame, this one draws NO panel behind the
   first testimonial: the content sits on the page white between the
   benefits band (ends 6763) and the navy band (starts 7442). Quote
   704:5237 is lorem ipsum in Figma: the build's real review keeps the
   Figma box, first line on Figma's first line. */
.evo-tpl-page-residential-spa-heat-pumps .php-alt{height:679px;padding:0;background:#fff;overflow:hidden;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt>.container{max-width:none;padding:0;position:static;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .grid{display:block;gap:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .pimg2{position:absolute;left:271px;top:74px;width:615px;height:506px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .pimg2 img{width:615px;height:506px;max-width:none;max-height:none;object-fit:cover;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt .stars{position:absolute;left:970px;top:202.89px;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt blockquote{position:absolute;left:970px;top:266px;width:671px;margin:0;font-weight:300;font-size:26px;line-height:34px;letter-spacing:normal;color:#27272d;}
/* 704:5238 is a 69x23 box at 970,7197 with the name centred in it both ways
   (the export centres on 1004.5 / 7208.5), so the box is built at Figma's
   size rather than hugging the glyphs. */
.evo-tpl-page-residential-spa-heat-pumps .php-alt .who{position:absolute;left:970px;top:434px;width:69px;height:23px;display:flex;flex-direction:column;justify-content:center;text-align:center;margin:0;}

/* ---- NAVY BAND 704:5267 ---------------------------------------------
   704:5268 navy 7442 h664 radius 28. Its top corners sit on the page
   white and its bottom corners on the grey panel of testimonial two,
   which starts 31px before the navy ends, so the section paints white
   down to 633 and #f4f4f4 for the last 31. Heading 704:5270 Bold 48 auto
   tracking -0.96 at x220 y7613; 704:5269 is ONE text node: Light 28/39,
   an empty 28/39 line, then Light 20/30, all tracking -0.56, so the
   second paragraph carries a 39px top margin. Chart 704:5274 606x410 at
   1094,7589. */
.evo-tpl-page-residential-spa-heat-pumps .php-navy{height:664px;padding:0;background:linear-gradient(to bottom,#ffffff 0,#ffffff 633px,#f4f4f4 633px,#f4f4f4 664px);}
/* 704:5268 as a real element rather than a pseudo, so the gate measures it */
.evo-tpl-page-residential-spa-heat-pumps .php-navy>.container{max-width:none;padding:0;position:static;width:1920px;height:664px;background:#002b54;border-radius:28px;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .grid{display:block;gap:0;}
/* 704:5270 is a nowrap line whose box top IS 7613; auto leading at 48 is 61 */
.evo-tpl-page-residential-spa-heat-pumps .php-navy h2{position:absolute;left:220px;top:171px;height:61px;display:flex;flex-direction:column;justify-content:center;margin:0;font-weight:700;font-size:48px;line-height:61px;letter-spacing:-0.96px;color:#fff;white-space:nowrap;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .copy{position:absolute;left:220px;top:272px;width:771px;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .copy .sub{font-weight:300;font-size:28px;line-height:39px;letter-spacing:-0.56px;color:#fff;margin:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .copy .body{font-weight:300;font-size:20px;line-height:30px;letter-spacing:-0.56px;color:#fff;margin:39px 0 0;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .chart{position:absolute;left:1094px;top:147px;width:606px;height:410px;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy .chart img{width:606px;height:410px;max-width:none;max-height:none;object-fit:cover;}

/* ---- TESTIMONIAL BAND 2  704:5250 -----------------------------------
   Panel 704:5251 8075 h728 radius 28 at x0, its first 31px covered by the
   navy band, so the section runs 8106 to 8803 and only its bottom corners
   round. */
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey{height:697px;background:#fff;padding:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey>.container{width:1920px;height:697px;background:#f4f4f4;border-radius:0 0 28px 28px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey .pimg2{left:1063px;top:105px;width:608px;height:479px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey .pimg2 img{width:608px;height:479px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey .stars{left:273px;top:201px;}
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey blockquote{left:273px;top:273px;width:643px;}
/* 704:5255 is a 61x23 box at 277,8547: 4px right of the stars and the quote
   above it, which start at 273. Reproduced as drawn. */
.evo-tpl-page-residential-spa-heat-pumps .php-alt.grey .who{left:277px;top:441px;width:61px;}

/* ---- LOGOS 704:5275 (shared component, page rhythm only)
   Heading 704:5276 at 8941 in a 33 tall box at x784, pills at 9027, the
   FAQ begins at 9315. The strip is full bleed and wider than the canvas:
   the first pill starts at -100 and the last runs past 1920, so the
   section clips at the artboard as the frame does. */
.evo-tpl-page-residential-spa-heat-pumps main>section.logos{padding:138px 0 193px;overflow:hidden;}
.evo-tpl-page-residential-spa-heat-pumps section.logos .lh{width:367px;max-width:100%;height:33px;display:flex;flex-direction:column;justify-content:center;margin:0 0 53px 784px;}
/* every logo's baseline is 25px up from the pill's outer bottom edge; the
   component measures that inset from inside its own 2px border, which left all
   six sitting 2px high. 75 + the border puts the last logo on Figma's x1847. */
.evo-tpl-page-residential-spa-heat-pumps .logo-row .lpill{padding-bottom:23px;}
.evo-tpl-page-residential-spa-heat-pumps .logo-row .lpill:nth-child(6){justify-content:flex-start;padding-left:75px;}
/* 704:5285 Radisson is drawn at x727 in a pill that runs 648..997; centred in
   that pill a 188.571 wide logo lands on 728.219. Nudged back onto Figma's x.
   It is also the one logo on this strip with no luminosity blend. */
.evo-tpl-page-residential-spa-heat-pumps .logo-row .lpill:nth-child(3) img{position:relative;left:-1.219px;mix-blend-mode:normal;}

/* ---- FAQ 704:5290 (shared component, box heights only)
   This frame puts the block at x212, 20px left of the pool category's
   x232, so the component's 32px indent becomes 12. The left column's two
   Figma boxes are 98 and 91 tall (the heading's two 55px lines are
   centred in a box shorter than they are, as drawn); with the component's
   own 23 and 14 margins that puts the More FAQs button on Figma's y9541
   exactly. Row 1 is open: its answer box 704:5296 is 126 tall starting
   20px above the summary's bottom edge. */
.evo-tpl-page-residential-spa-heat-pumps main>section.php-faq{padding:0 0 104px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq .grid{margin-left:12px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq h2{height:98px;display:flex;flex-direction:column;justify-content:center;margin:0 0 23px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq .lead2{height:91px;margin:0 0 14px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:first-of-type .fb{height:164px;margin-top:-20px;padding:0 0 38px;}
/* Figma draws the row dividers 704:5299 / 704:5304 / 704:5309 at 9527, 9624
   and 9714, i.e. 212 below the open row's top and 75 below a closed row's,
   not on the row's own bottom edge, and the fourth line is hidden. The shared
   component hangs them off the details border, which lands them 21 and 14
   lower. The border keeps its 1px so the row pitch is unchanged (rows stay on
   Figma's 9315 / 9549 / 9639 / 9729) and the visible line is redrawn at the
   Figma offset. */
.evo-tpl-page-residential-spa-heat-pumps .php-faq details{position:relative;border-bottom-color:transparent;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details::after{content:"";position:absolute;left:2px;width:741px;height:1px;background:var(--line);}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(1)::after{top:212px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(2)::after{top:75px;left:0;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(3)::after{top:75px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(4)::after{display:none;}
/* The component centres the 56px question line and the 58px toggle in the
   89px row; Figma hangs both off the row's TOP edge. Figma also draws each
   question at its own x (957 / 959 / 961 / 960) and rows 2 and 4 pull the
   toggle 2px and 1px in; reproduced as drawn. */
.evo-tpl-page-residential-spa-heat-pumps .php-faq summary{align-items:flex-start;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq summary::after{top:0;transform:none;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(1) summary::after{top:11px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(2) summary{padding-left:2px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(2) summary::after{right:2px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(3) summary{padding-left:4px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(4) summary{padding-left:3px;}
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:nth-of-type(4) summary::after{right:1px;}

/* ---- PRODUCT CARD names and subs 704:5064/5065, 5072/5073, 5081/5082
   The component centres both lines in the 480 card. Figma hand-places
   every one of them, none on the card's centre: name x352 / 879 / 1371
   and sub x364 / 878 / 1365, which is up to 17px from where a centred
   line lands. The box is made to hug the line so the gate can assert the
   x the design draws. Card three's pair also sits a pixel lower than the
   other two (2111 and 2151 against 2110 and 2150). */
.evo-tpl-page-residential-spa-heat-pumps .php-range .php-pcard h3,
.evo-tpl-page-residential-spa-heat-pumps .php-range .php-pcard .psub{width:max-content;max-width:100%;text-align:left;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(1) h3{margin-left:152px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(1) .psub{margin-left:164px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(2) h3{margin-left:159px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(2) .psub{margin-left:158px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(3) h3{margin-left:131px;margin-top:1px;}
.evo-tpl-page-residential-spa-heat-pumps .php-range .row .php-pcard:nth-child(3) .psub{margin-left:125px;margin-top:1px;}

/* ---- FOOTER LEAD-IN 704:5317 ----------------------------------------
   Figma draws the footer frame at y9827 with its photo 704:5319 inset
   95px inside it (9922, h1141) and its content 110px below that photo:
   eyebrow 704:5372 on 10032, headline 704:5373 on 10068, sub 704:5374 on
   10316, phone 704:5375 on 10385, form 704:5352 with its rows on 10049 /
   10144 / 10239 / 10326 and Submit on 10514, link columns on 10794, logo
   704:5351 on 10800, copyright 704:5350 on 10894 and the social row on
   10916.99.

   site.css measures the component's 205px lead-in from the footer
   ELEMENT's top, which on this page is the photo top, so every layer
   inside it ships 95px low. 110 puts all fourteen of them on Figma's y.
   Page scoped: neither the partial nor site.css is touched. */
.evo-tpl-page-residential-spa-heat-pumps .ft-top{padding-top:110px;}
/* The four layers of the footer's left column are not flush with each other in
   Figma: 704:5372 and 704:5374 start on x206, 704:5373 and 704:5375 on x203.
   The component starts all four on the column's own x200. */
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .ftgit{margin-left:6px;}
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .fthead{margin-left:3px;width:689px;max-width:none;}
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .ftsub{margin-left:6px;}
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .ftphone{margin-left:3px;}

/* =====================================================================
   VERIFY PASS. Everything below was found by measuring the 1920 render
   against the frame export band by band, ink row by ink row, and is a
   place where the BOX was on Figma's number but the ink inside it was
   not. Figma centres a line in its box using the font's own cap metrics
   and Chromium splits the leading evenly, which sets Circular Std 2 to 5
   px high in the same box. The boxes below stay exactly where the design
   puts them, and where the spec asserts them: `*{box-sizing:border-box}`
   in site.css means a padding-top moves the line without moving the box.
   A flex centred box splits its padding, so it gets twice the shift.
   Each value is the measured render-minus-Figma delta, reversed.
   ===================================================================== */
.evo-tpl-page-residential-spa-heat-pumps .php-hero .eyebrow{padding-top:3px;}      /* 704:4995  ink 412 -> 415 */
.evo-tpl-page-residential-spa-heat-pumps .php-hero h1{height:89px;padding-top:3px;} /* 704:4994  ink 425 -> 428 */
.evo-tpl-page-residential-spa-heat-pumps .php-intro h2{padding-top:3px;}           /* 704:5016  ink 819 -> 822 */
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap>p:first-of-type,
.evo-tpl-page-residential-spa-heat-pumps .php-intro .wrap>p:first-of-type+p{padding-top:1px;} /* 704:5015 */
.evo-tpl-page-residential-spa-heat-pumps .php-range h2{padding-top:2px;}           /* 704:5087  ink 1528 -> 1530 */
.evo-tpl-page-residential-spa-heat-pumps .php-range .php-pcard h3{padding-top:2px;} /* 704:5064/5072/5081 */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfhead{padding-top:6px;} /* 704:5097  centred, +3 */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbody{padding-top:3px;} /* 704:5093  ink 2780 -> 2783 */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbtn{padding-top:6px;}  /* 704:5096  centred, +3 */
.evo-tpl-page-residential-spa-heat-pumps section.reviews .rh{padding-top:4px;}     /* 704:5158  ink 3249 -> 3253 */
.evo-tpl-page-residential-spa-heat-pumps .php-leaders h2{padding-top:3px;}         /* 704:5163  ink 3916 -> 3919 */
.evo-tpl-page-residential-spa-heat-pumps .php-sol h2{padding-top:4px;}             /* 704:5199  ink 4689 -> 4693 */
.evo-tpl-page-residential-spa-heat-pumps .php-sol .php-scard .cap{padding-top:4px;} /* 704:5173 etc, centred, +2 */
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits h2{padding-top:2px;}        /* 704:5231  ink 5715 -> 5717 */
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard h3{padding-top:2px;}           /* 704:5211 etc */
.evo-tpl-page-residential-spa-heat-pumps .spa-bcard p{padding-top:2px;}            /* 704:5212 etc */
/* The bottom row's two bodies start on a box whose Figma top is 6491.77 where
   the top row's is 6084.43: Chromium rounds the .77 box a pixel further down
   than the .43 one, so the same 2px padding lands their ink on 6502 against
   the frame's 6500. Cards one and two are on Figma's row, these two are not,
   so they take 1px instead. Measured, not guessed: 704:5223 and 704:5229. */
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(3) p,
.evo-tpl-page-residential-spa-heat-pumps .spa-benefits .cards .spa-bcard:nth-child(4) p{padding-top:1px;}
.evo-tpl-page-residential-spa-heat-pumps .php-navy h2{padding-top:4px;}            /* 704:5270  centred, +2 */
.evo-tpl-page-residential-spa-heat-pumps .php-faq h2{padding-top:8px;}             /* 704:5292  centred, +4 */
.evo-tpl-page-residential-spa-heat-pumps .php-faq .lead2{padding-top:1px;}         /* 704:5291 */
.evo-tpl-page-residential-spa-heat-pumps .php-faq summary{padding-top:1px;}        /* 704:5295 etc */
.evo-tpl-page-residential-spa-heat-pumps .php-faq details:first-of-type .fb{padding-top:1px;} /* 704:5296 */
.evo-tpl-page-residential-spa-heat-pumps .php-leaders p{padding-top:1px;}          /* 704:5162 */
.evo-tpl-page-residential-spa-heat-pumps section.logos .lh{padding-top:1px;}       /* 704:5276 */
/* 704:5093's three lines land on 2783 / 2808 / 2833, a 25px pitch measured off
   the frame; the 25.4 the home frame uses rounds the third line 2px low here. */
.evo-tpl-page-residential-spa-heat-pumps section.ctaform .cfbody{line-height:25px;}
/* The footer's own eyebrow and headline sit 3 and 5 px high in their boxes for
   the same reason. .ftgit has no fixed height, so its 11px bottom margin gives
   back what its padding adds and the headline stays on Figma's 10068. Belongs
   in the component: see docs/fleet-issues/spa-category.md. */
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .ftgit{padding-top:3px;margin-bottom:8px;}
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .fthead{height:219px;padding-top:5px;}
/* 704:5374 is two lines at 24px with AUTO leading (30.72) in a 629x48 box, so
   its second line overflows the box by 13 and the pair sits centred in it. The
   component sets a flat 24px leading, which closes that gap by 7px a line. */
.evo-tpl-page-residential-spa-heat-pumps .ft-intro .ftsub{height:48px;line-height:30.72px;display:flex;flex-direction:column;justify-content:center;}
/* footer photo 704:5319: footer-bg.jpg is 1740x1160, so cover scales it to
   1920x1280 in the 1920x1141 band and centres the 139px of overflow. Figma
   hangs the same photo 35.4px above the band's top edge (top -3.1%), which is
   25.45% of that overflow, not 50%. Page scoped; the component needs it on
   every pool page. See docs/fleet-issues/spa-category.md. */
.evo-tpl-page-residential-spa-heat-pumps .footer .ftbg img{object-position:50% 25.45%;}

}
