{"title":"SERVICES","description":"","products":[{"product_id":"service-de-fermeture","title":"Pool and Spa Closure","description":"\u003cdiv id=\"afi-fermeture\" class=\"afi-fm\" lang=\"en\" data-fm-of=\"of\"\u003e\n\n\u003cp class=\"fm-lede\"\u003eAn AFI technician closes your pool or spa, following procedures suited to fiberglass pools and Quebec winters. The $330 package covers labour, the service call and winterizing materials. For a spa, only the jet plugs are extra, at $5 each.\u003c\/p\u003e\n\n\u003cdiv class=\"fm-hero\"\u003e\n  \u003cp class=\"fm-eyebrow\"\u003eAFI pool and spa closing service\u003c\/p\u003e\n  \u003cp class=\"fm-display\"\u003e\u003cspan class=\"fm-dl\"\u003eOne visit.\u003c\/span\u003e \u003cspan class=\"fm-dl\"\u003eAll the materials.\u003c\/span\u003e \u003cspan class=\"fm-dl fm-dl-ice\"\u003eProtected \u003cspan class=\"fm-nw\"\u003efrom freezing.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n  \u003cul class=\"fm-stats\"\u003e\n    \u003cli\u003e\u003cstrong class=\"fm-n\"\u003e\u003cspan class=\"fm-u\"\u003e$\u003c\/span\u003e330\u003c\/strong\u003e \u003cspan class=\"fm-sl\"\u003epackage: labour, service call and materials\u003c\/span\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003cstrong class=\"fm-n\"\u003e\u003cspan class=\"fm-u\"\u003e$\u003c\/span\u003e5\u003c\/strong\u003e \u003cspan class=\"fm-sl\"\u003eper jet plug, for spas only\u003c\/span\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003cstrong class=\"fm-n\"\u003eFall\u003c\/strong\u003e \u003cspan class=\"fm-sl\"\u003eservice period\u003c\/span\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003cstrong class=\"fm-n\"\u003e6 \u003cspan class=\"fm-u\"\u003eareas\u003c\/span\u003e\u003c\/strong\u003e \u003cspan class=\"fm-sl\"\u003eQuébec City, Lévis, Montréal, Laval, Longueuil and \u003cspan class=\"fm-nw\"\u003eSaint-Hubert\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003cp class=\"fm-cta\"\u003e\u003ca class=\"fm-btn fm-btn-main\" href=\"#MainContent\" data-fm-book\u003eBook my closing\u003c\/a\u003e \u003ca class=\"fm-btn fm-btn-ghost\" href=\"tel:+14188710658\"\u003e(418) 871-0658\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cnav class=\"fm-toc\" aria-label=\"On this page\"\u003e\n  \u003cp class=\"fm-toc-t\"\u003eOn this page\u003c\/p\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-eau\"\u003eWater level\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-kit\"\u003eMaterials supplied\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-prix\"\u003ePricing\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-jour\"\u003eWho does what\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-res\"\u003eHow to book\u003c\/a\u003e\u003c\/li\u003e\n    \u003cli\u003e\u003ca href=\"#fm-h-faq\"\u003eFrequently asked questions\u003c\/a\u003e\u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/nav\u003e\n\n\u003csection class=\"fm-sec fm-water\" aria-labelledby=\"fm-h-eau\"\u003e\n  \u003cdiv class=\"fm-water-txt\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003eOn the morning of your appointment\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-eau\" class=\"fm-rv\"\u003eLower the water, but never drain \u003cspan class=\"fm-nw\"\u003ethe pool or spa\u003c\/span\u003e\u003c\/h2\u003e\n    \u003cp class=\"fm-big\"\u003e\u003cstrong\u003eOn the morning of your appointment, lower the water to just below the returns for a pool, or just below the jets for a spa.\u003c\/strong\u003e If it hasn’t been done when we arrive, our technician takes care of it and $50 is added to your invoice.\u003c\/p\u003e\n    \u003cp class=\"fm-warn\"\u003e\u003cstrong\u003eNever drain the pool or spa.\u003c\/strong\u003e A fiberglass shell can deform under groundwater pressure. Just below the returns or the jets is enough; any lower is risky.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cfigure class=\"fm-fig\"\u003e\n    \u003csvg class=\"fm-svg\" viewBox=\"0 0 640 380\" role=\"img\" aria-labelledby=\"fm-svg-t fm-svg-d\" focusable=\"false\"\u003e\n      \u003ctitle id=\"fm-svg-t\"\u003eSimplified diagram of a pool: how far to lower the water\u003c\/title\u003e\n      \u003cdesc id=\"fm-svg-d\"\u003eThe water goes down from its usual level to just below the return. Under the shell, groundwater exerts pressure: never drain the pool.\u003c\/desc\u003e\n      \u003cdefs\u003e\n        \u003cclipPath id=\"fm-hull-clip\"\u003e\u003cpath d=\"M78 86 L82 180 Q84 206 110 210 L300 228 Q326 231 342 252 L366 286 Q376 300 396 300 L528 300 Q556 300 560 272 L566 86 Z\"\/\u003e\u003c\/clipPath\u003e\n        \u003clinearGradient id=\"fm-wg\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"\u003e\u003cstop offset=\"0\" class=\"s-w1\" stop-color=\"#a6dcf7\"\/\u003e\u003cstop offset=\"1\" class=\"s-w2\" stop-color=\"#2b8fd0\"\/\u003e\u003c\/linearGradient\u003e\n      \u003c\/defs\u003e\n      \u003crect class=\"s-ground\" x=\"0\" y=\"86\" width=\"640\" height=\"294\" fill=\"#eef2f5\"\/\u003e\n      \u003cpath class=\"s-gwz\" fill=\"#dcecf7\" d=\"M0 262 q20 -7 40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 V380 H0 Z\"\/\u003e\n      \u003cpath class=\"s-gwl\" fill=\"none\" stroke=\"#6fb3e0\" stroke-width=\"2\" stroke-dasharray=\"6 6\" d=\"M0 262 q20 -7 40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0 t40 0\"\/\u003e\n      \u003cpath class=\"s-pipe\" fill=\"none\" stroke=\"#c9d4dd\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M72 140 H36 V380\"\/\u003e\n      \u003cpath class=\"s-pipe\" fill=\"none\" stroke=\"#c9d4dd\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M604 128 V380\"\/\u003e\n      \u003cpath class=\"s-pipe\" fill=\"none\" stroke=\"#c9d4dd\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M460 302 V334 H604\"\/\u003e\n      \u003cpath class=\"s-air\" fill=\"#ffffff\" d=\"M78 86 L82 180 Q84 206 110 210 L300 228 Q326 231 342 252 L366 286 Q376 300 396 300 L528 300 Q556 300 560 272 L566 86 Z\"\/\u003e\n      \u003cg clip-path=\"url(#fm-hull-clip)\"\u003e\n        \u003cg id=\"fm-water\"\u003e\n          \u003crect x=\"50\" y=\"156\" width=\"540\" height=\"170\" fill=\"url(#fm-wg)\"\/\u003e\n          \u003cpath class=\"s-surf\" fill=\"none\" stroke=\"#e9f7ff\" stroke-width=\"3\" stroke-opacity=\".85\" d=\"M50 156 q15 -4 30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0 t30 0\"\/\u003e\n        \u003c\/g\u003e\n      \u003c\/g\u003e\n      \u003cpath class=\"s-hull\" fill=\"none\" stroke=\"#8fa6b8\" stroke-width=\"7\" stroke-linejoin=\"round\" stroke-linecap=\"round\" d=\"M78 86 L82 180 Q84 206 110 210 L300 228 Q326 231 342 252 L366 286 Q376 300 396 300 L528 300 Q556 300 560 272 L566 86\"\/\u003e\n      \u003cpath class=\"s-deck\" fill=\"none\" stroke=\"#8fa6b8\" stroke-width=\"7\" stroke-linecap=\"round\" d=\"M0 86 H76 M568 86 H640\"\/\u003e\n      \u003crect class=\"s-skim\" fill=\"#ffffff\" stroke=\"#8fa6b8\" stroke-width=\"3\" x=\"566\" y=\"94\" width=\"46\" height=\"34\" rx=\"5\"\/\u003e\n      \u003crect class=\"s-noz\" fill=\"#2a4563\" x=\"70\" y=\"133\" width=\"18\" height=\"14\" rx=\"3\"\/\u003e\n      \u003crect class=\"s-noz\" fill=\"#2a4563\" x=\"448\" y=\"295\" width=\"24\" height=\"7\" rx=\"2\"\/\u003e\n      \u003ctext class=\"s-lbl\" fill=\"#2a4563\" stroke=\"#ffffff\" stroke-width=\"5\" stroke-linejoin=\"round\" paint-order=\"stroke\" font-size=\"21\" font-weight=\"600\" x=\"636\" y=\"72\" text-anchor=\"end\"\u003eSkimmer\u003c\/text\u003e\n      \u003ctext class=\"s-lbl\" fill=\"#2a4563\" stroke=\"#ffffff\" stroke-width=\"5\" stroke-linejoin=\"round\" paint-order=\"stroke\" font-size=\"21\" font-weight=\"600\" x=\"98\" y=\"131\"\u003eReturn\u003c\/text\u003e\n      \u003cpath class=\"s-old\" fill=\"none\" stroke=\"#6f8292\" stroke-width=\"2\" stroke-dasharray=\"8 7\" d=\"M94 108 H516\"\/\u003e\n      \u003ccircle class=\"s-num\" fill=\"#0b72b9\" cx=\"536\" cy=\"108\" r=\"16\"\/\u003e\u003ctext class=\"s-numt\" fill=\"#ffffff\" font-size=\"19\" font-weight=\"700\" text-anchor=\"middle\" x=\"536\" y=\"115\"\u003e1\u003c\/text\u003e\n      \u003cg class=\"fm-drop\"\u003e\u003cpath class=\"s-drop\" fill=\"none\" stroke=\"#e08600\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M330 112 V150 M322 141 L330 151 L338 141\"\/\u003e\u003c\/g\u003e\n      \u003ccircle class=\"fm-ring s-ring\" fill=\"none\" stroke=\"#e08600\" stroke-width=\"3.5\" cx=\"79\" cy=\"140\" r=\"18\"\/\u003e\n      \u003cg class=\"fm-target\"\u003e\n        \u003cpath class=\"s-tgt\" fill=\"none\" stroke=\"#e08600\" stroke-width=\"3\" stroke-linecap=\"round\" d=\"M92 155 H352\"\/\u003e\n        \u003ccircle class=\"s-num s-num-o\" fill=\"#b35f00\" cx=\"372\" cy=\"155\" r=\"16\"\/\u003e\u003ctext class=\"s-numt\" fill=\"#ffffff\" font-size=\"19\" font-weight=\"700\" text-anchor=\"middle\" x=\"372\" y=\"162\"\u003e2\u003c\/text\u003e\n        \u003ctext class=\"s-lbl s-lbl-o\" fill=\"#94540a\" stroke=\"#ffffff\" stroke-width=\"5\" stroke-linejoin=\"round\" paint-order=\"stroke\" font-size=\"21\" font-weight=\"700\" x=\"396\" y=\"152\"\u003eAim here\u003c\/text\u003e\n      \u003c\/g\u003e\n      \u003cg class=\"fm-gw\" data-dy=\"26\"\u003e\u003cpath class=\"s-arr\" fill=\"none\" stroke=\"#0b72b9\" stroke-width=\"4.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M420 356 V318 M410 329 L420 316 L430 329\"\/\u003e\u003c\/g\u003e\n      \u003cg class=\"fm-gw\" data-dy=\"26\"\u003e\u003cpath class=\"s-arr\" fill=\"none\" stroke=\"#0b72b9\" stroke-width=\"4.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M470 356 V318 M460 329 L470 316 L480 329\"\/\u003e\u003c\/g\u003e\n      \u003cg class=\"fm-gw\" data-dy=\"26\"\u003e\u003cpath class=\"s-arr\" fill=\"none\" stroke=\"#0b72b9\" stroke-width=\"4.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M520 356 V318 M510 329 L520 316 L530 329\"\/\u003e\u003c\/g\u003e\n      \u003cg class=\"fm-gw\" data-dx=\"26\"\u003e\u003cpath class=\"s-arr\" fill=\"none\" stroke=\"#0b72b9\" stroke-width=\"4.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M628 286 H578 M590 276 L576 286 L590 296\"\/\u003e\u003c\/g\u003e\n      \u003ccircle class=\"s-num\" fill=\"#0b72b9\" cx=\"38\" cy=\"300\" r=\"16\"\/\u003e\u003ctext class=\"s-numt\" fill=\"#ffffff\" font-size=\"19\" font-weight=\"700\" text-anchor=\"middle\" x=\"38\" y=\"307\"\u003e3\u003c\/text\u003e\n      \u003ctext class=\"s-lbl\" fill=\"#2a4563\" stroke=\"#ffffff\" stroke-width=\"5\" stroke-linejoin=\"round\" paint-order=\"stroke\" font-size=\"21\" font-weight=\"600\" x=\"62\" y=\"307\"\u003eGroundwater\u003c\/text\u003e\n      \u003cg class=\"fm-never\"\u003e\u003crect class=\"s-stamp\" fill=\"#c0392b\" x=\"40\" y=\"324\" width=\"214\" height=\"40\" rx=\"20\"\/\u003e\u003ctext class=\"s-stampt\" fill=\"#ffffff\" font-size=\"20\" font-weight=\"700\" text-anchor=\"middle\" x=\"147\" y=\"351\"\u003eNever drain\u003c\/text\u003e\u003c\/g\u003e\n    \u003c\/svg\u003e\n    \u003cfigcaption\u003e\n      \u003col class=\"fm-legend\"\u003e\n        \u003cli\u003eUsual water level during the season.\u003c\/li\u003e\n        \u003cli\u003eAim for just below the return (pool) or just below the jets (spa).\u003c\/li\u003e\n        \u003cli\u003eUnder the shell, groundwater exerts pressure: a drained pool can deform.\u003c\/li\u003e\n      \u003c\/ol\u003e\n      \u003cp class=\"fm-figcap\"\u003eSimplified diagram, for illustration only: the layout varies from one pool or spa to another.\u003c\/p\u003e\n    \u003c\/figcaption\u003e\n  \u003c\/figure\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-kit-sec\" aria-labelledby=\"fm-h-kit\"\u003e\n  \u003cdiv class=\"fm-head\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003eMaterials supplied\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-kit\" class=\"fm-rv\"\u003eAll winterizing materials \u003cspan class=\"fm-nw\"\u003eare supplied\u003c\/span\u003e\u003c\/h2\u003e\n    \u003cp class=\"fm-rv\"\u003eFor a pool, everything below is \u003cstrong\u003eincluded in the $330 package\u003c\/strong\u003e. The same goes for a spa, except the jet plugs, at $5 each. There’s nothing for you to buy in advance.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"fm-kit\"\u003e\n    \u003cdiv class=\"fm-card fm-rv\"\u003e\n      \u003cp class=\"fm-tag\"\u003ePool\u003c\/p\u003e\n      \u003ch3\u003eMaterials supplied \u003cspan class=\"fm-nw\"\u003efor a pool\u003c\/span\u003e\u003c\/h3\u003e\n      \u003cul class=\"fm-items\"\u003e\n        \u003cli\u003e\u003cstrong\u003e2 No. 10 plugs\u003c\/strong\u003e \u003cspan\u003eTo seal the 1½ in. outlets.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003e1 No. 11 plug\u003c\/strong\u003e \u003cspan\u003eTo seal the 2 in. outlet.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003e1 Gizzmo\u003c\/strong\u003e \u003cspan\u003eInstalled in the skimmer, it absorbs ice expansion and keeps the skimmer housing from cracking over the winter.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eAntifreeze\u003c\/strong\u003e \u003cspan\u003eUp to 2 gallons, depending on what your plumbing requires.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eStyrofoam\u003c\/strong\u003e \u003cspan\u003ePlaced in the main drain to absorb ice pressure.\u003c\/span\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"fm-card fm-rv\"\u003e\n      \u003cp class=\"fm-tag\"\u003eSpa\u003c\/p\u003e\n      \u003ch3\u003eMaterials supplied \u003cspan class=\"fm-nw\"\u003efor a spa\u003c\/span\u003e\u003c\/h3\u003e\n      \u003cul class=\"fm-items\"\u003e\n        \u003cli\u003e\u003cstrong\u003eAntifreeze\u003c\/strong\u003e \u003cspan\u003eUp to 2 gallons, depending on what your plumbing requires.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eSkimmer plug\u003c\/strong\u003e \u003cspan\u003eIncluded at no extra charge.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eMain drain plugs\u003c\/strong\u003e \u003cspan\u003eIncluded, however many your spa needs: the technician fits what is required.\u003c\/span\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"fm-card-x\"\u003e\u003cstrong\u003eExtra: jet plugs, $5 each\u003c\/strong\u003e \u003cspan\u003eOne per jet. They’re the only materials added to the $330 package (see pricing).\u003c\/span\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-price\" aria-labelledby=\"fm-h-prix\"\u003e\n  \u003cdiv class=\"fm-price-txt\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003ePricing\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-prix\" class=\"fm-rv\"\u003e$330, plus $5 per jet \u003cspan class=\"fm-nw\"\u003efor a spa\u003c\/span\u003e\u003c\/h2\u003e\n    \u003cp\u003e\u003cstrong\u003ePool: $330, all in.\u003c\/strong\u003e Labour, the service call and the materials listed above are included. When ordering, simply select “0” as the number of jets: the other options are for spas.\u003c\/p\u003e\n    \u003cp\u003e\u003cstrong\u003eSpa: $330 plus jet plugs.\u003c\/strong\u003e You only pay for the jet plugs, at $5 each, one per jet. The skimmer plug and the main drain plugs are included, however many are needed, as is the antifreeze.\u003c\/p\u003e\n    \u003cp\u003eIf you already own your jet plugs, select “0” and leave them within reach on the day of service.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"fm-price-box\"\u003e\n    \u003ctable class=\"fm-tbl\"\u003e\n      \u003cthead\u003e\u003ctr\u003e\u003cth scope=\"col\"\u003eYour pool or spa\u003c\/th\u003e \u003cth scope=\"col\"\u003ePrice\u003c\/th\u003e\u003c\/tr\u003e\u003c\/thead\u003e\n      \u003ctbody\u003e\n        \u003ctr\u003e\u003cth scope=\"row\" style=\"--w:57.9%;--b:100%\"\u003e\u003cspan class=\"fm-t\"\u003ePool, or spa with your own plugs\u003c\/span\u003e \u003cbr\u003e \u003cspan class=\"fm-d\"\u003e\u003cspan class=\"fm-k1\"\u003e$330 package\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e \u003ctd\u003e$330\u003c\/td\u003e\u003c\/tr\u003e\n        \u003ctr\u003e\u003cth scope=\"row\" style=\"--w:68.4%;--b:84.6%\"\u003e\u003cspan class=\"fm-t\"\u003eSpa with 12 jets\u003c\/span\u003e \u003cbr\u003e \u003cspan class=\"fm-d\"\u003e\u003cspan class=\"fm-k1\"\u003e$330\u003c\/span\u003e \u003cspan class=\"fm-k2\"\u003e+ 12 jet plugs at $5\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e \u003ctd\u003e$390\u003c\/td\u003e\u003c\/tr\u003e\n        \u003ctr\u003e\u003cth scope=\"row\" style=\"--w:75.4%;--b:76.7%\"\u003e\u003cspan class=\"fm-t\"\u003eSpa with 20 jets\u003c\/span\u003e \u003cbr\u003e \u003cspan class=\"fm-d\"\u003e\u003cspan class=\"fm-k1\"\u003e$330\u003c\/span\u003e \u003cspan class=\"fm-k2\"\u003e+ 20 jet plugs at $5\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e \u003ctd\u003e$430\u003c\/td\u003e\u003c\/tr\u003e\n        \u003ctr\u003e\u003cth scope=\"row\" style=\"--w:84.2%;--b:68.75%\"\u003e\u003cspan class=\"fm-t\"\u003eSpa with 30 jets\u003c\/span\u003e \u003cbr\u003e \u003cspan class=\"fm-d\"\u003e\u003cspan class=\"fm-k1\"\u003e$330\u003c\/span\u003e \u003cspan class=\"fm-k2\"\u003e+ 30 jet plugs at $5\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e \u003ctd\u003e$480\u003c\/td\u003e\u003c\/tr\u003e\n        \u003ctr\u003e\u003cth scope=\"row\" style=\"--w:100%;--b:57.9%\"\u003e\u003cspan class=\"fm-t\"\u003eSpa with 48 jets\u003c\/span\u003e \u003cbr\u003e \u003cspan class=\"fm-d\"\u003e\u003cspan class=\"fm-k1\"\u003e$330\u003c\/span\u003e \u003cspan class=\"fm-k2\"\u003e+ 48 jet plugs at $5\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e \u003ctd\u003e$570\u003c\/td\u003e\u003c\/tr\u003e\n      \u003c\/tbody\u003e\n    \u003c\/table\u003e\n    \u003cul class=\"fm-other\"\u003e\n      \u003cli\u003e\u003cstrong\u003eDon’t know how many jets you have?\u003c\/strong\u003e Select “other”: we’ll contact you to confirm the number of plugs and the price before the appointment.\u003c\/li\u003e\n      \u003cli\u003e\u003cstrong\u003eWater lowered by our technician: $50\u003c\/strong\u003e, if the water hasn’t been lowered when we arrive.\u003c\/li\u003e\n    \u003c\/ul\u003e\n    \u003cp class=\"fm-note\"\u003eTaxes (GST and QST) extra.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"fm-price-cta fm-rv\"\u003e\n    \u003cp class=\"fm-pc-l\"\u003eClosing package\u003c\/p\u003e\n    \u003cp class=\"fm-pc-n\"\u003e\u003cspan class=\"fm-u\"\u003e$\u003c\/span\u003e330\u003c\/p\u003e\n    \u003cp class=\"fm-pc-x\"\u003eLabour, service call and materials included. Spa: $5 per jet plug. Taxes extra.\u003c\/p\u003e\n    \u003cp class=\"fm-cta\"\u003e\u003ca class=\"fm-btn fm-btn-main\" href=\"#MainContent\" data-fm-book\u003eBook my closing\u003c\/a\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-day\" aria-labelledby=\"fm-h-jour\"\u003e\n  \u003cdiv class=\"fm-day-head\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003eStep by step\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-jour\" class=\"fm-rv\"\u003eWho does what, \u003cspan class=\"fm-nw\"\u003eand when\u003c\/span\u003e\u003c\/h2\u003e\n    \u003cp class=\"fm-rv\"\u003eWe confirm a service day with you, and the visit is guaranteed within that day. Here are the steps, from your order to the end of winter.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003col class=\"fm-steps\"\u003e\n    \u003cli class=\"fm-step\" style=\"--c:#0b72b9;--c2:#e08600\"\u003e\n      \u003cspan class=\"fm-node\" aria-hidden=\"true\"\u003e\u003csvg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M6.5 3h3l1.6 4.4-2.2 1.4a11 11 0 0 0 6.3 6.3l1.4-2.2L21 14.5v3a2 2 0 0 1-2.2 2A16.5 16.5 0 0 1 4.5 5.2 2 2 0 0 1 6.5 3z\"\/\u003e\u003c\/svg\u003e\u003c\/span\u003e\n      \u003cp class=\"fm-when\"\u003eAfter you order\u003c\/p\u003e\n      \u003ch3\u003eWe set your day\u003c\/h3\u003e\n      \u003cp\u003eOur team calls you to set the service day based on your area. \u003cstrong\u003eA day, not a time slot:\u003c\/strong\u003e we can’t give an exact time, because the number of stops and the conditions on site shift the schedule.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli class=\"fm-step\" style=\"--c:#e08600;--c2:#0b72b9\"\u003e\n      \u003cspan class=\"fm-node\" aria-hidden=\"true\"\u003e\u003csvg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M12 3v3M4.6 8.6l2 2M19.4 8.6l-2 2M2.5 17h19M7 17a5 5 0 0 1 10 0M6 21h12\"\/\u003e\u003c\/svg\u003e\u003c\/span\u003e\n      \u003cp class=\"fm-when\"\u003eMorning of your appointment\u003c\/p\u003e\n      \u003ch3\u003eYou prepare three things\u003c\/h3\u003e\n      \u003cul class=\"fm-pts\"\u003e\n        \u003cli\u003e\u003cstrong\u003eWater level lowered\u003c\/strong\u003e \u003cspan\u003eJust below the returns (pool) or just below the jets (spa). Otherwise, our technician does it and $50 is added.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eAccess to the breaker\u003c\/strong\u003e \u003cspan\u003eThe technician must be able to cut power to the pool or spa. Make sure the panel or breaker is accessible.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eClear access\u003c\/strong\u003e \u003cspan\u003eA clear path to the pool or spa and to the equipment, so the technician can work.\u003c\/span\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/li\u003e\n    \u003cli class=\"fm-step\" style=\"--c:#0b72b9;--c2:#2a4563\"\u003e\n      \u003cspan class=\"fm-node\" aria-hidden=\"true\"\u003e\u003csvg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M14.7 6.3a4 4 0 0 0-5.3 5.3L3.5 17.5l3 3 5.9-5.9a4 4 0 0 0 5.3-5.3l-2.5 2.5-2.6-.4-.4-2.6z\"\/\u003e\u003c\/svg\u003e\u003c\/span\u003e\n      \u003cp class=\"fm-when\"\u003eDuring the day\u003c\/p\u003e\n      \u003ch3\u003eThe technician closes your pool or spa\u003c\/h3\u003e\n      \u003cul class=\"fm-pts\"\u003e\n        \u003cli\u003e\u003cstrong\u003eService call and labour\u003c\/strong\u003e \u003cspan\u003eThe technician’s visit and the work on your equipment are included, with no additional travel charge.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eShutting down filtration\u003c\/strong\u003e \u003cspan\u003eSafe shutdown of the filtration system and related equipment.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eFreeze protection\u003c\/strong\u003e \u003cspan\u003eFitting the plugs, the Gizzmo, the antifreeze and the Styrofoam where they belong.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eVisual inspection\u003c\/strong\u003e \u003cspan\u003eA general check to confirm conditions are suitable at the time of closing.\u003c\/span\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"fm-small\"\u003e\u003cstrong\u003eYou don’t need to be home\u003c\/strong\u003e, as long as the water is lowered, the breaker is accessible and the path is clear. The technician’s visit is timed to serve every customer on the schedule that day, so there’s no training or demonstration on site.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli class=\"fm-step\" style=\"--c:#2a4563;--c2:#03b0ed\"\u003e\n      \u003cspan class=\"fm-node\" aria-hidden=\"true\"\u003e\u003csvg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M3 9.5c3-2 6 2 9 0s6-2 9 0M3 14.5c3-2 6 2 9 0s6-2 9 0M3 9.5v5M21 9.5v5\"\/\u003e\u003c\/svg\u003e\u003c\/span\u003e\n      \u003cp class=\"fm-when\"\u003eAfter the visit\u003c\/p\u003e\n      \u003ch3\u003eYou put on the winter cover\u003c\/h3\u003e\n      \u003cp\u003eInstalling the winter cover (the tarp) is up to you, after the technician’s visit.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli class=\"fm-step\" style=\"--c:#03b0ed\"\u003e\n      \u003cspan class=\"fm-node\" aria-hidden=\"true\"\u003e\u003csvg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M12 2.5v19M3.8 7.25l16.4 9.5M3.8 16.75l16.4-9.5M9.3 4.2 12 6l2.7-1.8M9.3 19.8 12 18l2.7 1.8\"\/\u003e\u003c\/svg\u003e\u003c\/span\u003e\n      \u003cp class=\"fm-when\"\u003eAll winter\u003c\/p\u003e\n      \u003ch3\u003eWhat remains your responsibility\u003c\/h3\u003e\n      \u003cul class=\"fm-pts\"\u003e\n        \u003cli\u003e\u003cstrong\u003eDewatering well\u003c\/strong\u003e \u003cspan\u003eMonitor the shell drain all winter long: this is essential with fiberglass.\u003c\/span\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eWater level\u003c\/strong\u003e \u003cspan\u003eNever drain the pool or spa, even partially, after closing.\u003c\/span\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"fm-note\"\u003eFollowing these instructions, including putting on the winter cover, is essential to keep your AFI warranty valid and to avoid any structural damage to your pool or spa.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-book-sec\" aria-labelledby=\"fm-h-res\"\u003e\n  \u003cdiv class=\"fm-head\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003eBooking\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-res\" class=\"fm-rv\"\u003eHow to book\u003c\/h2\u003e\n  \u003c\/div\u003e\n  \u003col class=\"fm-book\"\u003e\n    \u003cli class=\"fm-rv\"\u003e\u003ch3\u003eChoose\u003c\/h3\u003e \u003cp\u003eYour basin type. For a pool, always select “0”: the materials are already included. For a spa, select your number of jets, or “0” if you have your own plugs.\u003c\/p\u003e\u003c\/li\u003e\n    \u003cli class=\"fm-rv\"\u003e\u003ch3\u003eOrder\u003c\/h3\u003e \u003cp\u003ePaying online confirms your spot in the closing schedule.\u003c\/p\u003e\u003c\/li\u003e\n    \u003cli class=\"fm-rv\"\u003e\u003ch3\u003eWe call you\u003c\/h3\u003e \u003cp\u003eOur team contacts you to set the service day based on your area.\u003c\/p\u003e\u003c\/li\u003e\n    \u003cli class=\"fm-rv\"\u003e\u003ch3\u003eThat morning\u003c\/h3\u003e \u003cp\u003eLower the water to just below the returns (pool) or just below the jets (spa), then clear access to the pool or spa and to the breaker.\u003c\/p\u003e\u003c\/li\u003e\n  \u003c\/ol\u003e\n  \u003cdiv class=\"fm-book-foot fm-rv\"\u003e\n    \u003cp class=\"fm-zones\"\u003e\u003cstrong\u003eAreas served:\u003c\/strong\u003e Québec City, Lévis, Montréal, Laval, Longueuil and \u003cspan class=\"fm-nw\"\u003eSaint-Hubert\u003c\/span\u003e.\u003c\/p\u003e\n    \u003cp class=\"fm-cta\"\u003e\u003ca class=\"fm-btn fm-btn-main\" href=\"#MainContent\" data-fm-book\u003eChoose pool or spa and book\u003c\/a\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-faq-sec\" aria-labelledby=\"fm-h-faq\"\u003e\n  \u003cdiv class=\"fm-head\"\u003e\n    \u003cp class=\"fm-kicker fm-rv\"\u003eQuestions\u003c\/p\u003e\n    \u003ch2 id=\"fm-h-faq\" class=\"fm-rv\"\u003eFrequently asked questions\u003c\/h2\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"fm-faq\"\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhat’s supplied for a pool?\u003c\/h3\u003e \u003cp\u003eTwo No. 10 plugs (1½ in.), one No. 11 plug (2 in.), a Gizzmo for the skimmer, up to two gallons of antifreeze and the Styrofoam for the main drain. It’s all included in the $330: there’s nothing for you to buy.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eAnd for a spa?\u003c\/h3\u003e \u003cp\u003eThe antifreeze, the skimmer plug and the main drain plugs are included, however many are needed. You only pay for the jet plugs, at $5 each.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhat is a Gizzmo?\u003c\/h3\u003e \u003cp\u003eIt’s a part that threads into the skimmer for the winter. It absorbs ice expansion and keeps the skimmer housing from cracking: an expensive repair avoided for next to nothing.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eHow far down should I lower the water?\u003c\/h3\u003e \u003cp\u003eOn the morning of your appointment: just below the returns for a pool, just below the jets for a spa. Don’t go any lower, and never drain the pool or spa: a fiberglass shell can deform under groundwater pressure.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhat if I can’t lower the water myself?\u003c\/h3\u003e \u003cp\u003eOur technician takes care of it on site for $50 more. No problem: it’s simply a service added to the package.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhy do spas pay extra for plugs?\u003c\/h3\u003e \u003cp\u003eBecause a spa has many more outlets than a pool: it needs one plug per jet, and the number varies from one model to another. A pool has a standard number of outlets, already covered by the package.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eCan you give me an arrival time?\u003c\/h3\u003e \u003cp\u003eNo. We confirm a day and the visit is guaranteed within that day, but the exact time depends on the number of stops and the conditions we run into before reaching you.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhy do you need access to my breaker?\u003c\/h3\u003e \u003cp\u003eTo cut power to the pool or spa before working on the equipment. Without access to the electrical panel, the closing can’t be done safely.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eCan the technician show me how to do a closing?\u003c\/h3\u003e \u003cp\u003eNo, the visit is timed to serve every customer on the schedule that day. But we’re happy to answer your technical questions by phone or email.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eDoes the technician install the winter cover?\u003c\/h3\u003e \u003cp\u003eNo. Putting on the winter cover is up to you, after the technician’s visit.\u003c\/p\u003e\u003c\/div\u003e\n    \u003cdiv class=\"fm-qa fm-rv\"\u003e\u003ch3\u003eWhat happens if the weather prevents the visit?\u003c\/h3\u003e \u003cp\u003eWe reschedule the visit and let you know. Your booking stays valid.\u003c\/p\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"fm-sec fm-contact fm-rv\" aria-labelledby=\"fm-h-ctc\"\u003e\n  \u003cdiv class=\"fm-contact-txt\"\u003e\n    \u003ch2 id=\"fm-h-ctc\"\u003eA question before \u003cspan class=\"fm-nw\"\u003eyou book?\u003c\/span\u003e\u003c\/h2\u003e\n    \u003cp\u003e\u003cstrong\u003eWe’re happy to answer your questions.\u003c\/strong\u003e Tell us whether it’s a pool or a spa, and your area, and we’ll confirm everything with you before the appointment. For anything about winterizing or maintenance, write or call us: we take the time to answer properly.\u003c\/p\u003e\n    \u003cp class=\"fm-small\"\u003eMonday to Friday, 9 a.m. to 5 p.m. Email: \u003ca href=\"mailto:commercial@aquafibreinnovation.ca\"\u003ecommercial@aquafibreinnovation.ca\u003c\/a\u003e\u003c\/p\u003e\n    \u003cp class=\"fm-id\"\u003eAqua Fibre Innovation, a Quebec manufacturer of fiberglass pools\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"fm-cta fm-contact-b\"\u003e\u003ca class=\"fm-btn fm-btn-main\" href=\"mailto:commercial@aquafibreinnovation.ca\"\u003eEmail us\u003c\/a\u003e \u003ca class=\"fm-btn fm-btn-line\" href=\"tel:+14188710658\"\u003e(418) 871-0658\u003c\/a\u003e \u003ca class=\"fm-btn fm-btn-line\" href=\"tel:+18007087789\"\u003e\u003cspan\u003eToll-free: \u003cspan class=\"fm-nw\"\u003e1-800-708-7789\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/section\u003e\n\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n#afi-fermeture{--ink:#0f2236;--txt:#24323f;--mut:#3f4c58;--bt:#0b72b9;--ct:#0779a6;--line:#d6e1ea;--soft:#f3f8fc;--card:#ffffff;--card2:#f7fafc;--warm-bg:#fff6ea;--warm-line:#f2c98a;--warm-txt:#5c3f0f;--warm-st:#94540a;--red:#b8352a;--red-bg:#fdf0ee;--red-txt:#6b1f17;--g-ground:#eef2f5;--g-gwz:#dcecf7;--g-gwl:#6fb3e0;--g-air:#ffffff;--g-hull:#8fa6b8;--g-pipe:#c9d4dd;--g-noz:#2a4563;--g-old:#6f8292;--g-lbl:#2a4563;--g-halo:#ffffff;--g-w1:#a6dcf7;--g-w2:#2b8fd0;--g-arr:#0b72b9;--g-num:#0b72b9;\n  container-type:inline-size;container-name:fm;box-sizing:border-box;display:flex;flex-direction:column;width:100%;max-width:1200px;margin:28px 0 8px;padding:0;font-family:\"Bai Jamjuree\",-apple-system,\"Segoe UI\",Roboto,Arial,sans-serif;font-size:16px;line-height:1.6;letter-spacing:normal;color:var(--txt);text-align:left;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}\n#afi-fermeture *,#afi-fermeture *::before,#afi-fermeture *::after{box-sizing:border-box}\n#afi-fermeture.fm-wide{margin:56px auto 24px}\n#afi-fermeture p{margin:0 0 12px}\n#afi-fermeture strong{color:inherit;font-weight:700}\n#afi-fermeture sup{position:static;font-size:.68em;line-height:0;vertical-align:.42em}\n#afi-fermeture .fm-nw{white-space:nowrap}\n#afi-fermeture ul,#afi-fermeture ol{margin:0;padding:0;list-style:none}\n#afi-fermeture li{margin:0;list-style:none}\n#afi-fermeture h2,#afi-fermeture h3{font-family:inherit;font-style:normal;letter-spacing:-.01em;color:var(--ink);word-break:normal;overflow-wrap:break-word;hyphens:manual}\n#afi-fermeture h2{font-size:28px;line-height:1.12;font-weight:700;margin:0 0 14px;scroll-margin-top:130px}\n#afi-fermeture h2:focus:not(:focus-visible){outline:none}\n#afi-fermeture h3{font-size:19px;line-height:1.25;font-weight:700;margin:0 0 6px}\n#afi-fermeture a{color:var(--bt);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}\n#afi-fermeture br{display:none}\n\n\/* Accroche *\/\n#afi-fermeture .fm-lede{order:0;margin:22px 0 0;font-size:18px;line-height:1.55;font-weight:500;color:var(--ink);max-width:760px}\n\n\/* Sommaire *\/\n#afi-fermeture .fm-toc{margin:22px 0 0}\n#afi-fermeture .fm-toc-t{margin:0 0 10px;font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}\n#afi-fermeture .fm-toc ol{display:flex;flex-wrap:wrap;gap:8px}\n#afi-fermeture .fm-toc a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 15px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font-size:15.5px;line-height:1.2;font-weight:600;text-decoration:none;transition:border-color .2s,color .2s}\n#afi-fermeture .fm-toc a:hover{border-color:var(--bt);color:var(--bt)}\n@media (min-width:990px){\n  #afi-fermeture.fm-wide{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);column-gap:56px;align-items:start}\n  #afi-fermeture.fm-wide\u003e*{grid-column:1\/-1}\n  #afi-fermeture.fm-wide\u003e.fm-lede{grid-column:1}\n  #afi-fermeture.fm-wide\u003e.fm-toc{grid-column:2;margin-top:30px}\n  #afi-fermeture.fm-wide .fm-toc ol{display:block;border-top:1px solid var(--line)}\n  #afi-fermeture.fm-wide .fm-toc a{display:flex;min-height:0;padding:10px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font-size:16px}\n  #afi-fermeture.fm-wide .fm-toc a::after{content:\"\";margin-left:auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);opacity:.5;transition:transform .2s,opacity .2s}\n  #afi-fermeture.fm-wide .fm-toc a:hover::after{opacity:1;transform:translateX(3px) rotate(-45deg)}\n}\n#afi-fermeture .fm-now{display:none}\n\n\/* Bandeau d'ouverture *\/\n#afi-fermeture .fm-hero{order:-1;position:relative;overflow:hidden;isolation:isolate;border-radius:20px;padding:22px 18px 20px;color:#dcebf6;background:radial-gradient(110% 70% at 100% 0%,rgba(3,176,237,.38) 0,rgba(3,176,237,0) 62%),radial-gradient(90% 70% at 0% 100%,rgba(11,114,185,.5) 0,rgba(11,114,185,0) 70%),linear-gradient(165deg,#081321 0%,#0f2640 48%,#183c60 100%)}\n#afi-fermeture .fm-hero::after{content:\"\";position:absolute;z-index:-1;right:-70px;top:-60px;width:300px;height:300px;opacity:.13;background:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 100 100' fill='none' stroke='%23ffffff' stroke-width='1.1' stroke-linecap='round'%3E%3Cpath d='M50 4v92M10.2 27l79.6 46M10.2 73l79.6-46M50 4l-8 8M50 4l8 8M50 96l-8-8M50 96l8-8M10.2 27l3 11M10.2 27l11-3M89.8 73l-3-11M89.8 73l-11 3M10.2 73l11 3M10.2 73l3-11M89.8 27l-11-3M89.8 27l-3 11M50 24l-5 5M50 24l5 5M50 76l-5-5M50 76l5 5'\/%3E%3C\/svg%3E\") center\/contain no-repeat}\n#afi-fermeture .fm-eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:13px;line-height:1.3;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#8fdcff}\n#afi-fermeture .fm-eyebrow::before{content:\"\";flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:#03b0ed;box-shadow:0 0 0 4px rgba(3,176,237,.22)}\n#afi-fermeture .fm-display{margin:0 0 18px;font-size:34px;line-height:1.04;font-weight:700;letter-spacing:-.03em;color:#ffffff;font-kerning:none}\n#afi-fermeture .fm-dl{display:block}\n#afi-fermeture .fm-dl-ice{color:#8fdcff}\n#afi-fermeture .fm-stats{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 14px;margin:0 0 20px}\n#afi-fermeture .fm-stats li{padding-top:10px;border-top:1px solid rgba(255,255,255,.22)}\n#afi-fermeture .fm-n{display:block;color:#ffffff;font-size:28px;line-height:1.05;font-weight:700;letter-spacing:-.02em;white-space:nowrap}\n#afi-fermeture .fm-u{font-size:.6em;font-weight:600;letter-spacing:0;color:#bfe3f7}\n#afi-fermeture .fm-sl{display:block;margin-top:5px;font-size:15px;line-height:1.4;color:#c6dbeb}\n#afi-fermeture .fm-cta{display:flex;flex-wrap:wrap;gap:10px;margin:0}\n\n\/* Boutons *\/\n#afi-fermeture a.fm-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 22px;border-radius:999px;border:1px solid transparent;font-size:16px;line-height:1.2;font-weight:600;letter-spacing:.01em;text-decoration:none;text-align:center;transition:background-color .2s,border-color .2s,color .2s,transform .2s}\n#afi-fermeture a.fm-btn:hover{transform:translateY(-1px)}\n#afi-fermeture a.fm-btn-main{background:#0b72b9;border-color:#0b72b9;color:#ffffff}\n#afi-fermeture a.fm-btn-main:hover{background:#095f9b;border-color:#095f9b}\n#afi-fermeture a.fm-btn-ghost{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.42);color:#ffffff}\n#afi-fermeture a.fm-btn-ghost:hover{background:rgba(255,255,255,.14)}\n#afi-fermeture a.fm-btn-light{background:#ffffff;border-color:#ffffff;color:#0b5f9b}\n#afi-fermeture a.fm-btn-line{background:transparent;border-color:#a9cfe9;color:#0a65a4}\n#afi-fermeture a.fm-btn-line:hover{border-color:var(--bt)}\n#afi-fermeture a.fm-btn:focus-visible{outline:3px solid #03b0ed;outline-offset:3px}\n\n\/* Sections *\/\n#afi-fermeture .fm-sec{margin:56px 0 0}\n#afi-fermeture .fm-kicker{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--bt)}\n#afi-fermeture .fm-kicker::before{content:\"\";flex:0 0 26px;height:2px;border-radius:2px;background:linear-gradient(90deg,#0b72b9,#03b0ed)}\n#afi-fermeture .fm-head{margin:0 0 18px}\n#afi-fermeture .fm-big{font-size:17.5px;line-height:1.55}\n#afi-fermeture .fm-small{font-size:15.5px;line-height:1.55;color:var(--mut)}\n#afi-fermeture .fm-note{margin:14px 0 0;padding:12px 14px;border-left:3px solid #e08600;border-radius:0 10px 10px 0;background:var(--warm-bg);font-size:15.5px;line-height:1.55;color:var(--warm-txt)}\n\n\/* 01 Niveau d'eau *\/\n#afi-fermeture .fm-water{padding:22px 18px 18px;border:1px solid var(--warm-line);border-radius:22px;background:var(--warm-bg)}\n#afi-fermeture .fm-water .fm-kicker{color:var(--warm-st)}\n#afi-fermeture .fm-water .fm-kicker::before{background:linear-gradient(90deg,#e08600,#f5b65a)}\n#afi-fermeture .fm-water .fm-big{color:var(--warm-txt)}\n#afi-fermeture .fm-water .fm-big strong{color:var(--ink)}\n#afi-fermeture .fm-warn{margin:0;padding:12px 14px;border-left:4px solid var(--red);border-radius:0 12px 12px 0;background:var(--red-bg);font-size:16px;line-height:1.55;color:var(--red-txt)}\n#afi-fermeture .fm-warn strong{color:var(--red)}\n#afi-fermeture .fm-fig{margin:18px 0 0;padding:10px 10px 12px;border:1px solid var(--line);border-radius:16px;background:var(--g-air)}\n#afi-fermeture .fm-svg{display:block;width:100%;height:auto;overflow:visible}\n#afi-fermeture .fm-svg text{font-family:inherit;font-weight:600}\n#afi-fermeture .s-ground{fill:var(--g-ground)}\n#afi-fermeture .s-gwz{fill:var(--g-gwz)}\n#afi-fermeture .s-gwl{fill:none;stroke:var(--g-gwl);stroke-width:2;stroke-dasharray:6 6}\n#afi-fermeture .s-air{fill:var(--g-air)}\n#afi-fermeture .s-w1{stop-color:var(--g-w1)}\n#afi-fermeture .s-w2{stop-color:var(--g-w2)}\n#afi-fermeture .s-surf{fill:none;stroke:#e9f7ff;stroke-width:3;stroke-opacity:.85}\n#afi-fermeture .s-hull{fill:none;stroke:var(--g-hull);stroke-width:7;stroke-linejoin:round;stroke-linecap:round}\n#afi-fermeture .s-deck{fill:none;stroke:var(--g-hull);stroke-width:7;stroke-linecap:round}\n#afi-fermeture .s-pipe{fill:none;stroke:var(--g-pipe);stroke-width:6;stroke-linejoin:round}\n#afi-fermeture .s-skim{fill:var(--g-air);stroke:var(--g-hull);stroke-width:3}\n#afi-fermeture .s-noz{fill:var(--g-noz)}\n#afi-fermeture .s-old{fill:none;stroke:var(--g-old);stroke-width:2;stroke-dasharray:8 7}\n#afi-fermeture .s-tgt{fill:none;stroke:#e08600;stroke-width:3;stroke-linecap:round}\n#afi-fermeture .s-drop{fill:none;stroke:#e08600;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}\n#afi-fermeture .s-ring{fill:none;stroke:#e08600;stroke-width:3.5}\n#afi-fermeture .s-num{fill:var(--g-num)}\n#afi-fermeture .s-num-o{fill:#b35f00}\n#afi-fermeture .s-numt{fill:#ffffff;font-size:19px;font-weight:700;text-anchor:middle}\n#afi-fermeture .s-lbl{fill:var(--g-lbl);font-size:21px;paint-order:stroke;stroke:var(--g-halo);stroke-width:5px;stroke-linejoin:round}\n#afi-fermeture .s-lbl-o{fill:#94540a;font-weight:700}\n#afi-fermeture .s-arr{fill:none;stroke:var(--g-arr);stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round}\n#afi-fermeture .s-stamp{fill:#c0392b}\n#afi-fermeture .s-stampt{fill:#ffffff;font-size:20px;font-weight:700;text-anchor:middle;letter-spacing:.02em}\n#afi-fermeture .fm-legend{counter-reset:fmlg;display:grid;gap:6px;margin:10px 4px 0;font-size:15.5px;line-height:1.45;color:var(--txt)}\n#afi-fermeture .fm-legend li{counter-increment:fmlg;display:grid;grid-template-columns:26px 1fr;gap:10px;align-items:start;padding:6px 6px;border-radius:10px;transition:background-color .35s,color .35s}\n#afi-fermeture .fm-legend li::before{content:counter(fmlg);display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--g-num);color:#ffffff;font-size:13px;font-weight:700}\n#afi-fermeture .fm-legend li:nth-child(2)::before{background:#b35f00}\n#afi-fermeture .fm-legend li.is-on{background:var(--soft);color:var(--ink)}\n#afi-fermeture .fm-figcap{margin:8px 6px 0;padding-top:8px;border-top:1px solid var(--line);font-size:15px;line-height:1.45;font-style:italic;color:var(--mut)}\n\n\/* 02 Matériel *\/\n#afi-fermeture .fm-kit{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}\n#afi-fermeture .fm-card{padding:20px 18px 8px;border:1px solid var(--line);border-radius:18px;background:var(--soft)}\n#afi-fermeture .fm-tag{display:inline-block;margin:0 0 8px;padding:4px 11px;border-radius:999px;background:#0b72b9;color:#ffffff;font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.1em;text-transform:uppercase}\n#afi-fermeture .fm-card h3{margin-bottom:10px}\n#afi-fermeture .fm-items li{padding:12px 0;border-top:1px solid var(--line)}\n#afi-fermeture .fm-items strong{display:block;color:var(--bt);font-size:17px;line-height:1.3}\n#afi-fermeture .fm-items li\u003espan{display:block;margin-top:3px;font-size:16px;line-height:1.55;color:var(--mut)}\n#afi-fermeture .fm-card-x{margin:4px 0 12px;padding:12px 14px;border:1px dashed #03b0ed;border-radius:12px;background:var(--card)}\n#afi-fermeture .fm-card-x strong{display:block;color:var(--ct);font-size:17px;line-height:1.3}\n#afi-fermeture .fm-card-x span{display:block;margin-top:3px;font-size:16px;line-height:1.55;color:var(--mut)}\n\n\/* 03 Tarification *\/\n#afi-fermeture .fm-price-box{margin-top:6px}\n#afi-fermeture table.fm-tbl{width:100%;margin:0;border-collapse:collapse;border:0;table-layout:auto;font-size:16px;background:transparent;box-shadow:none}\n#afi-fermeture .fm-tbl tr{background:transparent}\n#afi-fermeture .fm-tbl th,#afi-fermeture .fm-tbl td{padding:14px 0;border:0;border-top:1px solid var(--line);background:transparent;vertical-align:top;text-align:left;hyphens:auto;overflow-wrap:break-word;word-break:normal}\n#afi-fermeture .fm-tbl thead th{padding:0 0 8px;border-top:0;font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}\n#afi-fermeture .fm-tbl thead th:last-child,#afi-fermeture .fm-tbl tbody td{text-align:right;padding-left:14px}\n#afi-fermeture .fm-tbl tbody th{width:100%;font-weight:400;color:var(--txt)}\n#afi-fermeture .fm-tbl tbody th::after{content:\"\";display:block;width:var(--w,0);height:8px;margin-top:9px;border-radius:4px;background:linear-gradient(90deg,#0b72b9 0,#0b72b9 var(--b,100%),#03b0ed var(--b,100%),#03b0ed 100%);transform:scaleX(var(--s,1));transform-origin:0 50%}\n#afi-fermeture .fm-tbl .fm-t{display:block;font-size:17px;line-height:1.3;font-weight:600;color:var(--ink)}\n#afi-fermeture .fm-tbl .fm-d{display:block;margin-top:3px;font-size:15px;line-height:1.45;color:var(--mut)}\n#afi-fermeture .fm-k1,#afi-fermeture .fm-k2{display:inline-flex;align-items:center;gap:6px;color:var(--txt);font-weight:600}\n#afi-fermeture .fm-k1::before,#afi-fermeture .fm-k2::before{content:\"\";flex:0 0 10px;width:10px;height:10px;border-radius:3px;background:#0b72b9}\n#afi-fermeture .fm-k2::before{background:#03b0ed}\n#afi-fermeture .fm-k2{display:inline;font-weight:500;color:var(--mut)}\n#afi-fermeture .fm-k2::before{display:inline-block;margin:0 6px 0 2px;vertical-align:-1px}\n#afi-fermeture .fm-tbl tbody td{font-size:22px;line-height:1.2;font-weight:700;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}\n#afi-fermeture .fm-other{margin:16px 0 0;display:grid;gap:10px}\n#afi-fermeture .fm-other li{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card2);font-size:16px;line-height:1.55}\n#afi-fermeture .fm-other strong{color:var(--ink)}\n#afi-fermeture .fm-price-cta{position:relative;overflow:hidden;isolation:isolate;margin:22px 0 0;padding:22px 20px;border-radius:20px;color:#dcebf6;background:radial-gradient(90% 90% at 100% 0%,rgba(3,176,237,.3) 0,rgba(3,176,237,0) 65%),linear-gradient(160deg,#0b1a2c 0%,#12304f 100%)}\n#afi-fermeture .fm-price-cta p{margin:0}\n#afi-fermeture .fm-pc-l{font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#8fdcff}\n#afi-fermeture .fm-price-cta .fm-pc-n{margin:4px 0 2px;font-size:48px;line-height:1.05;font-weight:700;letter-spacing:-.03em;color:#ffffff;white-space:nowrap}\n#afi-fermeture .fm-pc-x{max-width:440px;font-size:15.5px;line-height:1.5;color:#c6dbeb}\n#afi-fermeture .fm-price-cta .fm-cta{margin-top:16px}\n\n\/* 04 Journée *\/\n#afi-fermeture .fm-day{padding:24px 16px 6px;border-radius:24px;background:linear-gradient(180deg,#fff7ec 0%,#ffffff 28%,#ffffff 62%,#eaf5fd 100%);border:1px solid var(--line)}\n#afi-fermeture .fm-day-head{margin:0 0 20px}\n#afi-fermeture .fm-steps{position:relative;padding:0 0 0 58px}\n#afi-fermeture .fm-step{position:relative;padding:0 0 30px}\n#afi-fermeture .fm-step::before,#afi-fermeture .fm-step::after{content:\"\";position:absolute;left:-37px;top:51px;bottom:5px;width:3px;border-radius:3px}\n#afi-fermeture .fm-step::before{background:var(--line)}\n#afi-fermeture .fm-step::after{background:linear-gradient(180deg,var(--c) 0,var(--c2,var(--c)) 100%);transform:scaleY(var(--seg,1));transform-origin:50% 0}\n#afi-fermeture .fm-step:last-child::before,#afi-fermeture .fm-step:last-child::after{display:none}\n#afi-fermeture .fm-node{position:absolute;z-index:1;left:-58px;top:0;display:flex;align-items:center;justify-content:center;width:45px;height:45px;border-radius:50%;border:2px solid var(--c);background:var(--c);color:#ffffff;transition:background-color .45s,border-color .45s,color .45s,transform .45s}\n#afi-fermeture .fm-node svg{display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}\n#afi-fermeture .fm-when{margin:10px 0 2px;font-size:13px;line-height:1.3;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}\n#afi-fermeture .fm-step h3{font-size:20px;margin-bottom:8px}\n#afi-fermeture .fm-pts{display:grid;gap:8px;margin:4px 0 0}\n#afi-fermeture .fm-pts li{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}\n#afi-fermeture .fm-pts strong{display:block;color:var(--ink);font-size:17px;line-height:1.3}\n#afi-fermeture .fm-pts li\u003espan{display:block;margin-top:3px;font-size:16px;line-height:1.55;color:var(--mut)}\n#afi-fermeture .fm-step .fm-small{margin:12px 0 0}\n#afi-fermeture .fm-step .fm-small strong{color:var(--ink)}\n#afi-fermeture.fm-js .fm-step:not(.is-on) .fm-node{background:var(--card);border-color:var(--line);color:var(--mut);transform:scale(.86)}\n\n\/* 05 Réserver *\/\n#afi-fermeture .fm-book{counter-reset:fmbk;display:grid;grid-template-columns:minmax(0,1fr);gap:12px}\n#afi-fermeture .fm-book li{counter-increment:fmbk;position:relative;padding:18px 18px 8px;border:1px solid var(--line);border-radius:18px;background:var(--card)}\n#afi-fermeture .fm-book li::before{content:counter(fmbk,decimal-leading-zero);display:block;margin:0 0 6px;font-size:40px;line-height:1;font-weight:700;letter-spacing:-.03em;color:transparent;-webkit-text-stroke:1.5px #0b72b9}\n#afi-fermeture .fm-book p{font-size:16px;line-height:1.55;color:var(--mut)}\n#afi-fermeture .fm-book-foot{display:flex;flex-direction:column;gap:12px;margin:16px 0 0}\n#afi-fermeture .fm-zones{margin:0;font-size:16px;line-height:1.5}\n#afi-fermeture .fm-zones strong{color:var(--ink)}\n\n\/* Pack à faire soi-même *\/\n#afi-fermeture .fm-pack{display:flex;flex-direction:column;gap:14px;margin:48px 0 0;padding:22px 20px;border-radius:20px;background:linear-gradient(135deg,#0b6aac 0%,#0a5a94 100%);color:#eef6fc}\n#afi-fermeture .fm-pack p{margin:0}\n#afi-fermeture .fm-pack-txt p+p{margin-top:6px;font-size:16px;line-height:1.55}\n#afi-fermeture .fm-pack-t{font-size:20px;line-height:1.25;font-weight:700;color:#ffffff}\n\n\/* 06 FAQ *\/\n#afi-fermeture .fm-faq{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}\n#afi-fermeture .fm-qa{padding:16px 16px 6px;border:1px solid var(--line);border-radius:14px;background:var(--card)}\n#afi-fermeture .fm-qa h3{font-size:18px;line-height:1.3;color:var(--bt)}\n#afi-fermeture .fm-qa p{font-size:16px;line-height:1.6;color:var(--mut)}\n\n\/* Contact *\/\n#afi-fermeture .fm-contact{padding:24px 20px;border:1px solid var(--line);border-radius:22px;background:var(--soft)}\n#afi-fermeture .fm-contact h2{font-size:24px}\n#afi-fermeture .fm-contact-txt p{font-size:16.5px}\n#afi-fermeture .fm-contact-txt .fm-small{font-size:15.5px}\n#afi-fermeture .fm-contact-txt strong{color:var(--ink)}\n#afi-fermeture .fm-contact-txt .fm-id{margin:16px 0 18px;padding-top:12px;border-top:1px solid var(--line);font-size:15px;line-height:1.45;font-weight:600;color:var(--ink)}\n#afi-fermeture .fm-contact a:not(.fm-btn){overflow-wrap:anywhere}\n\n\/* Mise en page selon la largeur réelle du bloc *\/\n@container fm (max-width:519px){\n  #afi-fermeture .fm-hero a.fm-btn{flex:1 1 100%}\n  #afi-fermeture .fm-price-cta a.fm-btn{flex:1 1 100%}\n  #afi-fermeture .s-lbl{font-size:31px;stroke-width:7px}\n  #afi-fermeture .s-numt{font-size:25px}\n  #afi-fermeture .s-stampt{font-size:24px}\n  #afi-fermeture .fm-water{padding:22px 10px 18px}\n  #afi-fermeture .fm-water-txt{padding:0 6px}\n  #afi-fermeture .fm-fig{padding:4px 0 8px}\n  #afi-fermeture .fm-legend{margin:10px 6px 0}\n  \/* Chronologie : nœuds plus petits, points en liste à plat, pour élargir le texte *\/\n  #afi-fermeture .fm-day{padding:22px 12px 4px}\n  #afi-fermeture .fm-steps{padding-left:46px}\n  #afi-fermeture .fm-node{left:-46px;width:36px;height:36px}\n  #afi-fermeture .fm-node svg{width:18px;height:18px}\n  #afi-fermeture .fm-step::before,#afi-fermeture .fm-step::after{left:-29.5px;top:42px}\n  #afi-fermeture .fm-when{margin-top:9px}\n  #afi-fermeture .fm-pts{gap:0}\n  #afi-fermeture .fm-pts li{padding:12px 0 12px;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}\n  #afi-fermeture .fm-pts li:last-child{padding-bottom:4px}\n}\n@container fm (max-width:899px){\n  #afi-fermeture .fm-price{display:flex;flex-direction:column}\n  #afi-fermeture .fm-price-txt{display:contents}\n  #afi-fermeture .fm-price-box{order:1;margin:0 0 22px}\n  #afi-fermeture .fm-price-txt\u003ep:not(.fm-kicker){order:2}\n  #afi-fermeture .fm-price-cta{order:3}\n}\n@container fm (max-width:339px){\n  #afi-fermeture .fm-hero{padding:20px 16px 18px}\n  #afi-fermeture .fm-contact{padding:22px 14px}\n  #afi-fermeture .fm-contact .fm-small a{font-size:14px}\n  #afi-fermeture .fm-display{font-size:28px}\n  #afi-fermeture .fm-n{font-size:25px}\n  #afi-fermeture .fm-stats{gap:12px 12px}\n  #afi-fermeture .fm-sl{font-size:15px}\n}\n@container fm (min-width:520px){\n  #afi-fermeture .fm-hero{padding:34px 30px 30px;border-radius:22px}\n  #afi-fermeture .fm-display{font-size:54px;line-height:1.02;margin-bottom:24px}\n  #afi-fermeture .fm-n{font-size:36px}\n  #afi-fermeture .fm-stats{gap:18px 16px;margin-bottom:24px}\n  #afi-fermeture h2{font-size:34px}\n  #afi-fermeture .fm-lede{font-size:19px}\n  #afi-fermeture .fm-water{padding:28px 26px 24px}\n  #afi-fermeture .fm-kit{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}\n  #afi-fermeture .fm-book{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}\n  #afi-fermeture .fm-day{padding:30px 26px 8px}\n  #afi-fermeture .fm-pack{padding:26px 28px}\n  #afi-fermeture .fm-contact{padding:28px 28px}\n  #afi-fermeture .fm-price-cta{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:24px;align-items:center;padding:24px 26px}\n  #afi-fermeture .fm-pc-l{grid-column:1\/-1}\n  #afi-fermeture .fm-pc-n{grid-column:1;grid-row:2}\n  #afi-fermeture .fm-pc-x{grid-column:2;grid-row:2}\n  #afi-fermeture .fm-price-cta .fm-cta{grid-column:1\/-1}\n}\n@container fm (min-width:760px){\n  #afi-fermeture .fm-display{font-size:72px}\n  #afi-fermeture .fm-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}\n  #afi-fermeture .fm-hero{padding:46px 44px 40px;border-radius:28px}\n  #afi-fermeture .fm-hero::after{width:440px;height:440px;right:-90px;top:-90px}\n  #afi-fermeture .fm-lede{font-size:21px;margin-top:28px}\n  #afi-fermeture .fm-sec{margin-top:88px}\n  #afi-fermeture h2{font-size:40px}\n  #afi-fermeture .fm-faq{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}\n  #afi-fermeture .fm-qa:last-child:nth-child(odd){grid-column:1\/-1}\n  #afi-fermeture .fm-pack{flex-direction:row;align-items:center;justify-content:space-between;gap:28px;margin-top:72px;padding:30px 36px}\n  #afi-fermeture .fm-pack-b{flex:0 0 auto}\n  #afi-fermeture .fm-book-foot{flex-direction:row;align-items:center;justify-content:space-between;gap:24px}\n  #afi-fermeture .fm-contact{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:32px;align-items:center;padding:36px 40px}\n  #afi-fermeture .fm-contact .fm-cta{flex-direction:column;align-items:stretch}\n  #afi-fermeture .fm-contact h2{font-size:30px}\n  \/* Grand écran : texte courant un cran plus grand (lecteurs de 45 à 65 ans) *\/\n  #afi-fermeture .fm-sec,#afi-fermeture .fm-items li\u003espan,#afi-fermeture .fm-card-x span,#afi-fermeture .fm-pts li\u003espan,#afi-fermeture .fm-qa p,#afi-fermeture .fm-book p,#afi-fermeture .fm-other li,#afi-fermeture .fm-contact-txt p{font-size:17px}\n  #afi-fermeture .fm-small,#afi-fermeture .fm-note,#afi-fermeture .fm-legend,#afi-fermeture .fm-contact-txt .fm-small{font-size:16px}\n  #afi-fermeture .fm-pc-x{font-size:16px}\n}\n@container fm (min-width:900px){\n  #afi-fermeture .fm-display{font-size:88px}\n  #afi-fermeture .fm-n{font-size:44px}\n  #afi-fermeture .fm-water{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:40px;align-items:center;padding:40px 40px 36px;border-radius:28px}\n  #afi-fermeture .fm-fig{margin:0}\n  #afi-fermeture .fm-price{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-rows:auto 1fr;column-gap:48px;align-items:start}\n  #afi-fermeture .fm-price-txt{grid-column:1;grid-row:1}\n  #afi-fermeture .fm-price-box{grid-column:2;grid-row:1\/span 2;margin-top:0;padding:26px 28px;border:1px solid var(--line);border-radius:22px;background:var(--card)}\n  #afi-fermeture .fm-price-cta{grid-column:1;grid-row:2;margin-top:12px}\n  #afi-fermeture .fm-day{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:56px;padding:44px 44px 14px;border-radius:28px}\n  #afi-fermeture .fm-day-head{position:sticky;top:130px;align-self:start}\n  #afi-fermeture .fm-now{display:flex;align-items:baseline;gap:14px;margin:26px 0 0;padding-top:18px;border-top:1px solid var(--line)}\n  #afi-fermeture .fm-now-n{display:inline-block;font-size:64px;line-height:1;font-weight:700;letter-spacing:-.04em;color:var(--ink);font-variant-numeric:tabular-nums}\n  #afi-fermeture .fm-now-n b{display:inline-block;font-weight:700}\n  #afi-fermeture .fm-now-of{font-size:16px;font-weight:600;color:var(--mut)}\n  #afi-fermeture .fm-now-t{display:block;margin-top:4px;font-size:14px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--bt)}\n  #afi-fermeture .fm-book{grid-template-columns:repeat(4,minmax(0,1fr))}\n  #afi-fermeture .fm-book li::before{font-size:52px}\n  #afi-fermeture .fm-step h3{font-size:22px}\n}\n\n\/* Mode sombre (suit le réglage de l'appareil, comme le thème) *\/\n@media (prefers-color-scheme:dark){\n  html body #afi-fermeture{--ink:#f1f4f7;--txt:#dbe2e8;--mut:#b9c3cc;--bt:#5aaee8;--ct:#4fcdf8;--line:#36434f;--soft:#1b2229;--card:#1b2229;--card2:#222d38;--warm-bg:#2a2116;--warm-line:#5a4220;--warm-txt:#f0d3a6;--warm-st:#f5b65a;--red:#ff8a7a;--red-bg:#2e1a1a;--red-txt:#f3c2bb;--g-ground:#232c35;--g-gwz:#16314a;--g-gwl:#4f9fd6;--g-air:#161c22;--g-hull:#6f8597;--g-pipe:#3b4752;--g-noz:#9cc3e0;--g-old:#8b98a5;--g-lbl:#e8eaed;--g-halo:#161c22;--g-w1:#3c8fc4;--g-w2:#123f63;--g-arr:#5aaee8;--g-num:#0b72b9;color:var(--txt);background:#12161a;box-shadow:0 0 0 12px #12161a;border-radius:12px}\n  html body #afi-fermeture .fm-hero{background:radial-gradient(110% 70% at 100% 0%,rgba(3,176,237,.28) 0,rgba(3,176,237,0) 62%),radial-gradient(90% 70% at 0% 100%,rgba(11,114,185,.4) 0,rgba(11,114,185,0) 70%),linear-gradient(165deg,#060d16 0%,#0c1f33 48%,#14324f 100%);box-shadow:inset 0 0 0 1px #24323f}\n  html body #afi-fermeture .fm-price-cta{background:radial-gradient(90% 90% at 100% 0%,rgba(3,176,237,.22) 0,rgba(3,176,237,0) 65%),linear-gradient(160deg,#08121e 0%,#0f2740 100%);box-shadow:inset 0 0 0 1px #24323f}\n  html body #afi-fermeture .fm-day{background:linear-gradient(180deg,#241d14 0%,#1b2229 28%,#1b2229 62%,#132637 100%)}\n  html body #afi-fermeture .s-lbl-o{fill:#f5b65a}\n  html body #afi-fermeture .s-num-o,html body #afi-fermeture .fm-legend li:nth-child(2)::before{fill:#b35f00;background:#b35f00}\n  html body #afi-fermeture .s-surf{stroke:#9fdcff;stroke-opacity:.6}\n  html body #afi-fermeture .fm-warn strong{color:#ff9b8f}\n  html body #afi-fermeture .fm-note{border-left-color:#f5b65a}\n  html body #afi-fermeture .fm-book li::before{-webkit-text-stroke-color:#5aaee8}\n  html body #afi-fermeture a.fm-btn-line{border-color:#3d5163;color:#6cb9ee}\n  html body #afi-fermeture a.fm-btn-line:hover{border-color:#5aaee8}\n  html body #afi-fermeture .fm-pack{background:linear-gradient(135deg,#0b5f9b 0%,#0a3f66 100%);box-shadow:inset 0 0 0 1px #1d5f8f}\n  html body #afi-fermeture a.fm-btn-light{background:#ffffff;color:#0b5f9b}\n  html body #afi-fermeture .fm-legend li.is-on{background:#222d38}\n}\n\n\/* Moins d'animations : tout reste visible et immobile *\/\n@media (prefers-reduced-motion:reduce){\n  #afi-fermeture a.fm-btn,#afi-fermeture .fm-node,#afi-fermeture .fm-legend li{transition:none}\n  #afi-fermeture a.fm-btn:hover{transform:none}\n}\n\n\/* Impression : tout le texte, état final des schémas, fonds sombres conservés *\/\n@media print{\n  #afi-fermeture .fm-rv,#afi-fermeture .fm-stats li,#afi-fermeture .fm-display *,#afi-fermeture .fm-svg g,#afi-fermeture .fm-ring{opacity:1 !important;visibility:visible !important;transform:none !important}\n  #afi-fermeture .fm-tbl tbody th::after{transform:none !important}\n  #afi-fermeture .fm-hero,#afi-fermeture .fm-price-cta,#afi-fermeture .fm-pack,#afi-fermeture a.fm-btn,#afi-fermeture .fm-tag,#afi-fermeture .fm-svg{-webkit-print-color-adjust:exact;print-color-adjust:exact}\n  #afi-fermeture .fm-now{display:none !important}\n}\n\u003c\/style\u003e\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('afi-fermeture');\n  if (!root || root.getAttribute('data-fm') === 'on') return;\n  root.setAttribute('data-fm', 'on');\n  var reduce = !!(window.matchMedia \u0026\u0026 window.matchMedia('(prefers-reduced-motion: reduce)').matches);\n  var started = false, gaveUp = false, mm = null;\n\n  \/* Délai de secours, lancé dès l'analyse de ce script. Rien n'est masqué avant que GSAP soit chargé et prêt :\n     si GSAP n'a pas démarré en 2,5 s et que le bloc a déjà été vu à son arrivée, le bloc reste statique. *\/\n  var safety = setTimeout(function () { if (!started) gaveUp = true; }, 2500);\n  function fallback() {\n    clearTimeout(safety);\n    try { if (mm) mm.revert(); } catch (e) {}\n    mm = null;\n    root.classList.remove('fm-js');\n  }\n  \/* Impression : tout le texte, sans animation. *\/\n  window.addEventListener('beforeprint', fallback);\n\n  \/* Déjà à l'écran ou dépassé : jamais masqué ni rejoué. *\/\n  function seen(el) { return !!el \u0026\u0026 el.getBoundingClientRect().top \u003c (window.innerHeight || document.documentElement.clientHeight); }\n  function domReady(fn) { if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn); else fn(); }\n\n  \/* Focus après le défilement doux, sans redéfiler (clavier, lecteurs d'écran). *\/\n  function focusAfter(el) {\n    var done = false;\n    function go() {\n      if (done) return;\n      done = true;\n      window.removeEventListener('scrollend', go);\n      if (!el.matches('a[href],button,input,select,textarea,[tabindex]')) el.setAttribute('tabindex', '-1');\n      try { el.focus({ preventScroll: true }); } catch (e) { el.focus(); }\n    }\n    if (!reduce \u0026\u0026 'onscrollend' in window) window.addEventListener('scrollend', go);\n    setTimeout(go, reduce ? 0 : 1000);\n  }\n\n  \/* Boutons « Réserver » : ramènent au choix du bassin, sans toucher aux variantes. Sommaire : défilement doux. *\/\n  root.addEventListener('click', function (e) {\n    if (!e.target || !e.target.closest) return;\n    var book = e.target.closest('[data-fm-book]'), jump = e.target.closest('a[href^=\"#fm-\"]'), t = null, f = null;\n    if (book) {\n      var vs = document.querySelector('section[id*=\"__main\"] variant-selects');\n      t = vs || document.querySelector('section[id*=\"__main\"] .product__info-container');\n      if (vs) f = vs.querySelector('input[type=\"radio\"]:checked') || vs.querySelector('select, input[type=\"radio\"]');\n    } else if (jump) {\n      t = f = document.getElementById(jump.getAttribute('href').slice(1));\n    }\n    if (!t) return;\n    e.preventDefault();\n    window.scrollTo({ top: Math.max(0, t.getBoundingClientRect().top + window.pageYOffset - 120), behavior: reduce ? 'auto' : 'smooth' });\n    if (f) focusAfter(f);\n  });\n\n  \/* Tablette et ordinateur (750 px et plus, quand Dawn met la fiche sur deux colonnes) : le bloc passe en pleine\n     largeur sous la zone d'achat. Fait tout de suite, pendant l'analyse de la page (le bloc est complet quand ce\n     script s'exécute) : aucun saut plus tard, même si le CDN tarde. Seulement dans la fiche produit principale. *\/\n  var home = document.createElement('span');\n  home.hidden = true;\n  root.parentNode.insertBefore(home, root);\n  var grid = root.closest ? root.closest('section[id*=\"__main\"] .product') : null; \/* grille média + infos qui contient le bloc *\/\n  var wideQ = window.matchMedia ? window.matchMedia('(min-width: 750px)') : null;\n  function place() {\n    try {\n      if (wideQ \u0026\u0026 wideQ.matches \u0026\u0026 grid \u0026\u0026 grid.parentNode \u0026\u0026 grid.contains(home)) {\n        if (grid.nextElementSibling !== root) grid.parentNode.insertBefore(root, grid.nextSibling);\n        root.classList.add('fm-wide');\n      } else {\n        if (home.parentNode \u0026\u0026 home.nextSibling !== root) home.parentNode.insertBefore(root, home.nextSibling);\n        root.classList.remove('fm-wide');\n      }\n    } catch (e) {}\n    if (window.ScrollTrigger \u0026\u0026 mm) window.ScrollTrigger.refresh();\n  }\n  place();\n  domReady(place);\n  if (wideQ) { if (wideQ.addEventListener) wideQ.addEventListener('change', place); else if (wideQ.addListener) wideQ.addListener(place); }\n\n  function animate() {\n    var gsap = window.gsap, ST = window.ScrollTrigger, Split = window.SplitText;\n    if (reduce || !gsap || !ST) { fallback(); return; }\n    if (gaveUp \u0026\u0026 seen(root)) { fallback(); return; } \/* GSAP arrivé en retard, bloc déjà vu : il reste statique *\/\n    started = true;\n    clearTimeout(safety);\n    try {\n      gsap.registerPlugin(ST);\n      if (Split) gsap.registerPlugin(Split);\n      mm = gsap.matchMedia();\n      mm.add('(prefers-reduced-motion: no-preference)', function () {\n        var q = gsap.utils.selector(root);\n        var later = function (els) { return els.filter(function (el) { return !seen(el); }); };\n        root.classList.add('fm-js');\n\n        \/* 1. Titre du bandeau : chaque ligne monte dans son masque (SplitText). Sans SplitText : titre statique.\n           Chiffres clés : statiques, une seule entrée décalée des tuiles (opacité seulement : le texte reste lisible\n           par les lecteurs d'écran et la recherche dans la page). *\/\n        var disp = q('.fm-display')[0];\n        if (disp \u0026\u0026 Split \u0026\u0026 !seen(disp)) {\n          Split.create(disp, { type: 'lines', mask: 'lines', autoSplit: true, onSplit: function (s) {\n            gsap.set(s.masks, { paddingBottom: '0.2em', marginBottom: '-0.2em', paddingTop: '0.06em', marginTop: '-0.06em' }); \/* garde les jambages (p, j) *\/\n            return gsap.from(s.lines, { yPercent: 110, duration: 0.8, ease: 'power4.out', stagger: 0.08, scrollTrigger: { trigger: disp, start: 'top 88%', once: true } });\n          } });\n        }\n        var tiles = later(q('.fm-stats li'));\n        if (tiles.length) gsap.from(tiles, { opacity: 0, y: 16, duration: 0.6, ease: 'power3.out', stagger: 0.08, scrollTrigger: { trigger: tiles[0], start: 'top 94%', once: true } });\n\n        \/* 2. Schéma du bassin : l'eau descend avec le défilement, puis la nappe phréatique pousse. Le texte du schéma\n           (« Visez ici », « Ne jamais vider ») ne change jamais d'opacité : seuls l'eau et les tracés bougent.\n           L'animation se termine quand le schéma est au milieu de l'écran. *\/\n        var fig = q('.fm-fig')[0], legend = q('.fm-legend li');\n        if (fig \u0026\u0026 !seen(fig)) {\n          var tl = gsap.timeline({ defaults: { ease: 'none' }, scrollTrigger: { trigger: fig, start: 'top 85%', end: 'top 45%', scrub: 0.6,\n            onUpdate: function (self) { var k = self.progress \u003c 0.46 ? 0 : self.progress \u003c 0.62 ? 1 : 2; legend.forEach(function (li, i) { li.classList.toggle('is-on', i === k); }); } } });\n          if (legend[0]) legend[0].classList.add('is-on');\n          tl.from(q('#fm-water'), { y: -48, duration: 1 }, 0.2)\n            .from(q('.fm-drop'), { scaleY: 0, transformOrigin: '50% 0%', duration: 1 }, 0.2)\n            .from(q('.fm-ring'), { autoAlpha: 0, scale: 0.3, transformOrigin: '50% 50%', duration: 0.35 }, 1.1)\n            .from(q('.fm-target'), { x: -18, duration: 0.35 }, 1.2)\n            .from(q('.fm-gw'), { autoAlpha: 0, x: function (i, el) { return +(el.getAttribute('data-dx') || 0); }, y: function (i, el) { return +(el.getAttribute('data-dy') || 0); }, stagger: 0.07, duration: 0.4 }, 1.55)\n            .from(q('.fm-never'), { scale: 0.8, transformOrigin: '50% 50%', duration: 0.3 }, 1.95)\n            .to({}, { duration: 0.3 });\n        }\n\n        \/* 3. Prix : chaque barre = forfait (bleu) + bouchons de jets (turquoise), une seule fois *\/\n        var tbl = q('.fm-tbl')[0];\n        if (tbl \u0026\u0026 !seen(tbl)) gsap.fromTo(q('.fm-tbl tbody th'), { '--s': 0 }, { '--s': 1, duration: 1.1, ease: 'power3.out', stagger: 0.12, scrollTrigger: { trigger: tbl, start: 'top 82%', once: true } });\n\n        \/* 4. Étapes : le trait se remplit au défilement, chaque étape s'allume dès qu'elle est lisible *\/\n        var steps = q('.fm-step'), head = q('.fm-day-head')[0], now = null, setNow = function () {};\n        if (head \u0026\u0026 steps.length) {\n          var pad = function (n) { return (n \u003c 10 ? '0' : '') + n; };\n          now = document.createElement('p');\n          now.className = 'fm-now';\n          now.setAttribute('aria-hidden', 'true');\n          var nN = document.createElement('span'), nB = document.createElement('b'), nW = document.createElement('span'), nO = document.createElement('span'), nT = document.createElement('span');\n          nN.className = 'fm-now-n'; nO.className = 'fm-now-of'; nT.className = 'fm-now-t';\n          nN.appendChild(nB); nW.appendChild(nO); nW.appendChild(nT); now.appendChild(nN); now.appendChild(nW);\n          nO.textContent = (root.getAttribute('data-fm-of') || '\/') + ' ' + pad(steps.length);\n          head.appendChild(now);\n          setNow = function (i) { var w = steps[i].querySelector('.fm-when'); nB.textContent = pad(i + 1); nT.textContent = w ? w.textContent : ''; };\n          setNow(0);\n        }\n        var day = gsap.timeline({ defaults: { ease: 'none' }, scrollTrigger: { trigger: q('.fm-steps')[0], start: 'top 65%', end: 'bottom 65%', scrub: 0.5, invalidateOnRefresh: true } });\n        steps.forEach(function (s, i) {\n          if (i \u003c steps.length - 1) day.fromTo(s, { '--seg': 0 }, { '--seg': 1, duration: s.offsetHeight });\n          else day.to({}, { duration: s.offsetHeight });\n          ST.create({ trigger: s, start: 'top 80%', onEnter: function () { s.classList.add('is-on'); setNow(i); }, onLeaveBack: function () { s.classList.remove('is-on'); setNow(Math.max(0, i - 1)); } });\n        });\n\n        \/* 5. Apparitions douces et discrètes, en lot, seulement pour ce qui n'a pas encore été vu.\n           Opacité seulement (jamais visibility) : titres et questions restent dans l'arbre d'accessibilité. *\/\n        var rv = later(q('.fm-rv'));\n        if (rv.length) {\n          gsap.set(rv, { opacity: 0, y: 16 });\n          ST.batch(rv, { start: 'top 94%', once: true, onEnter: function (b) {\n            var vis = b.filter(function (el) { return el.getBoundingClientRect().bottom \u003e 0; }); \/* déjà dépassés : affichés sans attendre *\/\n            gsap.set(b.filter(function (el) { return vis.indexOf(el) \u003c 0; }), { opacity: 1, y: 0 });\n            gsap.to(vis, { opacity: 1, y: 0, duration: 0.6, ease: 'power2.out', stagger: Math.min(0.06, 0.4 \/ (vis.length || 1)), overwrite: true });\n          } });\n        }\n\n        return function () { root.classList.remove('fm-js'); if (now \u0026\u0026 now.parentNode) now.parentNode.removeChild(now); };\n      });\n      ST.refresh();\n    } catch (err) { fallback(); }\n  }\n\n  \/* GSAP 3.15.0 (cdnjs), chargé par le script lui-même : ne retarde ni l'affichage ni le DOMContentLoaded de la page.\n     Empreintes SRI : un fichier altéré est refusé et le bloc reste statique. Rien n'est chargé en mouvement réduit\n     ni quand le bloc est masqué (ajout rapide). *\/\n  var CDN = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.15.0\/';\n  var LIBS = [\n    ['gsap.min.js', 'sha384-XmJ9SoHtVOHoQUcKvFAzVXwdkKo1Ie3bhmSoIAkcdsHGaIrVJIkmozyq0FJeb\/Ly'],\n    ['ScrollTrigger.min.js', 'sha384-wl5TeDVvOWt30Pbf8aSo2ZrzsOjddu3avOBvHe+p+OhJt9gP6w9YXmDkN5DK2\/dF'],\n    ['SplitText.min.js', 'sha384-SWJ0lLVRoipvHh59xj0pL7uC7Ih51F+5smaFtrG+2nr+TlDZU5SYJHmxfolbeNTr']\n  ];\n  function load() {\n    if (reduce || !root.getClientRects().length) { fallback(); return; }\n    if (window.gsap \u0026\u0026 window.ScrollTrigger) { domReady(animate); return; }\n    var left = LIBS.length, head = document.head || document.documentElement;\n    LIBS.forEach(function (l) {\n      var s = document.createElement('script');\n      s.src = CDN + l[0];\n      s.integrity = l[1];\n      s.crossOrigin = 'anonymous';\n      s.async = false; \/* ordre d'exécution garanti : gsap, puis ScrollTrigger, puis SplitText *\/\n      s.onload = s.onerror = function () { if (--left === 0) domReady(animate); };\n      head.appendChild(s);\n    });\n  }\n  try { load(); } catch (e) { fallback(); }\n  window.addEventListener('load', function () { if (window.ScrollTrigger \u0026\u0026 mm) setTimeout(function () { window.ScrollTrigger.refresh(); }, 300); });\n})();\n\u003c\/script\u003e\n","brand":"AQUA FIBRE INNOVATION","offers":[{"title":"Pool \/ 0","offer_id":51870757257515,"sku":null,"price":330.0,"currency_code":"CAD","in_stock":true},{"title":"Pool \/ 12","offer_id":51870757290283,"sku":null,"price":390.0,"currency_code":"CAD","in_stock":true},{"title":"Pool \/ 20","offer_id":51870757323051,"sku":null,"price":430.0,"currency_code":"CAD","in_stock":true},{"title":"Pool \/ 30","offer_id":51870757355819,"sku":null,"price":480.0,"currency_code":"CAD","in_stock":true},{"title":"Pool \/ 48","offer_id":51870757388587,"sku":null,"price":570.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 0","offer_id":51870757454123,"sku":null,"price":330.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 12","offer_id":51870757486891,"sku":null,"price":390.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 20","offer_id":51870757519659,"sku":null,"price":430.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 30","offer_id":51870757552427,"sku":null,"price":480.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 48","offer_id":51870757585195,"sku":null,"price":570.0,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ other","offer_id":51870757617963,"sku":null,"price":330.0,"currency_code":"CAD","in_stock":true},{"title":"Pool \/ other","offer_id":51870879056171,"sku":null,"price":330.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0968\/6168\/4011\/files\/785d7641-f7e8-4c50-a589-d2d60d9b7378.png?v=1785951475"},{"product_id":"depot-sur-appel-de-service","title":"Service Call Deposit","description":"\u003cp\u003eThis $75 deposit confirms your appointment and reserves your slot in our service schedule.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e✅ Fully credited to your final invoice\u003c\/p\u003e\n\u003cp\u003e✅ Fully refunded if AFI cannot complete the scheduled service\u003c\/p\u003e\n\u003cp\u003e✅ Guarantees your place in regional scheduling\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eUpon receipt of the deposit, your file moves to planning, and an AFI team member will contact you to confirm the date and time.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eService rates (labor $110\/hr, travel $150\/$300 depending on the zone, plus taxes) are communicated to you when you request service. Any additional repairs are quoted and approved before execution.\u003c\/p\u003e","brand":"AQUA FIBRE INNOVATION","offers":[{"title":"Default Title","offer_id":51870707679531,"sku":null,"price":75.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0968\/6168\/4011\/files\/b31f5bfd-4ff4-42d7-8891-ab465dca4a1c.png?v=1769154254"},{"product_id":"entretien-piscine-spa-1","title":"Pool \u0026 Spa Maintenance","description":"\u003cstyle\u003e\n  .afi-container {\n    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n    color: #333;\n    max-width: 1000px;\n    margin: 40px auto;\n    padding: 20px;\n  }\n\n  .afi-header {\n    text-align: center;\n    margin-bottom: 40px;\n  }\n\n  .afi-header h2 {\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 2px;\n    color: #1a1a1a;\n    margin-bottom: 10px;\n  }\n\n  .afi-table-wrapper {\n    overflow-x: auto;\n    border-radius: 8px;\n    box-shadow: 0 4px 20px rgba(0,0,0,0.05);\n  }\n\n  .afi-table {\n    width: 100%;\n    border-collapse: collapse;\n    background-color: #fff;\n    text-align: left;\n  }\n\n  .afi-table th, .afi-table td {\n    padding: 18px 15px;\n    border-bottom: 1px solid #f0f0f0;\n  }\n\n  .afi-table th {\n    background-color: #f8f9fa;\n    font-weight: 600;\n    color: #1a1a1a;\n  }\n\n  .afi-table tr:hover {\n    background-color: #fafafa;\n  }\n\n  .price-row {\n    font-size: 1.2rem;\n    font-weight: bold;\n    color: #2c3e50;\n  }\n\n  .check-mark {\n    color: #27ae60;\n    font-weight: bold;\n    text-align: center;\n  }\n\n  .afi-footer {\n    margin-top: 30px;\n    background: #fdfdfd;\n    padding: 20px;\n    border-left: 4px solid #1a1a1a;\n    font-size: 0.9rem;\n  }\n\n  .afi-badge {\n    display: inline-block;\n    padding: 4px 12px;\n    background: #1a1a1a;\n    color: #fff;\n    font-size: 0.7rem;\n    border-radius: 20px;\n    margin-bottom: 10px;\n  }\n\n  @media (max-width: 600px) {\n    .afi-table th, .afi-table td {\n      padding: 12px 8px;\n      font-size: 0.85rem;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"afi-container\"\u003e\n  \u003cdiv class=\"afi-header\"\u003e\n    \u003cspan class=\"afi-badge\"\u003eTURNKEY SERVICE\u003c\/span\u003e\n    \u003ch2\u003ePool \u0026amp; Spa Maintenance\u003c\/h2\u003e\n    \u003cp\u003ePeace of mind and prevention for crystal clear water.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"afi-table-wrapper\"\u003e\n    \u003ctable class=\"afi-table\"\u003e\n      \u003cthead\u003e\n        \u003ctr\u003e\n          \u003cth\u003eServices Included\u003c\/th\u003e\n          \u003cth style=\"text-align:center;\"\u003eWeekly\u003c\/th\u003e\n          \u003cth style=\"text-align:center;\"\u003eBi-weekly\u003c\/th\u003e\n          \u003cth style=\"text-align:center;\"\u003eMonthly\u003c\/th\u003e\n        \u003c\/tr\u003e\n      \u003c\/thead\u003e\n      \u003ctbody\u003e\n        \u003ctr class=\"price-row\"\u003e\n          \u003ctd\u003eRate per visit\u003c\/td\u003e\n          \u003ctd style=\"text-align:center;\"\u003e$78\u003c\/td\u003e\n          \u003ctd style=\"text-align:center;\"\u003e$104\u003c\/td\u003e\n          \u003ctd style=\"text-align:center;\"\u003e$129\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003eComplete cleaning (bottom, surface, walls, waterline)\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003eChemical testing and adjustment*\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003eBackwash\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003eCartridge and basket cleaning\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003ePreventive inspection of the filtration system\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n        \u003ctr\u003e\n          \u003ctd\u003eDigital report after each visit\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n          \u003ctd class=\"check-mark\"\u003e✓\u003c\/td\u003e\n        \u003c\/tr\u003e\n      \u003c\/tbody\u003e\n    \u003c\/table\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"afi-footer\"\u003e\n    \u003cstrong\u003eNote:\u003c\/strong\u003e\n    \u003cul\u003e\n      \u003cli\u003eChemical products extra (use of your products or billing based on usage).\u003c\/li\u003e\n      \u003cli\u003eService subject to regional availability.\u003c\/li\u003e\n      \u003cli\u003eFrequency adjustable at any time according to your needs.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"AQUA FIBRE INNOVATION","offers":[{"title":"Weekly","offer_id":53360385917227,"sku":null,"price":78.0,"currency_code":"CAD","in_stock":true},{"title":"Biweekly","offer_id":53360385949995,"sku":null,"price":104.0,"currency_code":"CAD","in_stock":true},{"title":"Monthly","offer_id":53360385982763,"sku":null,"price":129.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0968\/6168\/4011\/files\/9bcbcabe-7ee1-4c2c-a8ed-2e3d00ff4487_052edefe-d689-46a2-9171-a865c3e5eb4f.png?v=1777391969"},{"product_id":"pack-de-fermeture-piscine-et-spa-a-faire-soi-meme","title":"Pool and spa closing kit – DIY","description":"\u003cdiv class=\"afi-fiche\"\u003e\n\n\n  \u003cp class=\"afi-f-lede\"\u003ePrefer to close your pool or spa yourself? This pack contains all the winterizing equipment we use in the field: antifreeze, winter plugs, a Gizzmo for the skimmer, and a winterizing kit. Choose your pool type and number of jets, and we’ll send you a complete, ready-to-install pack.\u003c\/p\u003e\n\n\n  \u003cdiv class=\"afi-f-specs\"\u003e\n\n    \u003cdiv class=\"afi-f-spec\"\u003e\n\n\u003cspan class=\"afi-f-num\"\u003e3.78 L\u003c\/span\u003e\u003cspan class=\"afi-f-lbl\"\u003eAntifreeze included\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-spec\"\u003e\n\n\u003cspan class=\"afi-f-num\"\u003e2\u003c\/span\u003e\u003cspan class=\"afi-f-lbl\"\u003eWinterizing products\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-spec\"\u003e\n\n\u003cspan class=\"afi-f-num\"\u003e$5\u003c\/span\u003e\u003cspan class=\"afi-f-lbl\"\u003ePer jet plug\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-spec\"\u003e\n\n\u003cspan class=\"afi-f-num\"\u003eDelivered\u003c\/span\u003e\u003cspan class=\"afi-f-lbl\"\u003eTo your door\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003cdiv class=\"afi-f-xsell\"\u003e\n\n    \u003cspan class=\"afi-f-xsell-t\"\u003eFind this complicated? We’ll handle it.\u003c\/span\u003e\n    \u003cspan class=\"afi-f-xsell-x\"\u003eNo problem: entrust your closing to Aqua Fibre Innovation. One of our professionals will come to your home with all the equipment, starting at $330.\u003c\/span\u003e\n    \u003ca class=\"afi-f-btn afi-f-btn3\" href=\"\/en\/products\/service-de-fermeture\"\u003eBook with a professional\u003c\/a\u003e\n  \u003c\/div\u003e\n\n\n  \u003ch2 class=\"afi-f-h2\"\u003ePool pack contents\u003c\/h2\u003e\n\n  \u003ctable class=\"afi-f-tbl\"\u003e\n\n    \u003ctbody\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e1 gallon of antifreeze (3.78 L)\u003c\/th\u003e\n\n\u003ctd\u003ePoured into the lines to protect them from freezing during winter.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e3 #10 plugs\u003c\/th\u003e\n\n\u003ctd\u003eOne for the skimmer and two for the water returns.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e#11 plugs\u003c\/th\u003e\n\n\u003ctd\u003eOne per jet, only if your pool has them. If you have no jets, choose \"0\".\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e1 Gizzmo\u003c\/th\u003e\n\n\u003ctd\u003eScrewed into the skimmer, it absorbs ice expansion to prevent the housing from cracking.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e1 winterizing kit\u003c\/th\u003e\n\n\u003ctd\u003eA winter treatment (454 g), which keeps the water clean and odorless until spring, and a stain and scale preventer (1 L), which protects against metal stains and mineral deposits. Explanatory leaflet included.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n    \u003c\/tbody\u003e\n\n  \u003c\/table\u003e\n\n\n  \u003ch2 class=\"afi-f-h2\"\u003eSpa pack contents\u003c\/h2\u003e\n\n  \u003ctable class=\"afi-f-tbl\"\u003e\n\n    \u003ctbody\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e1 gallon of antifreeze (3.78 L)\u003c\/th\u003e\n\n\u003ctd\u003ePoured into the lines to protect them from freezing during winter.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e4 #10 plugs\u003c\/th\u003e\n\n\u003ctd\u003eOne for the skimmer and three for the bottom drains, covering all models. No Gizzmo for a spa.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e#11 plugs\u003c\/th\u003e\n\n\u003ctd\u003eOne per jet, depending on the number chosen at checkout: 12, 20, 30, or 48.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003e1 winterizing kit\u003c\/th\u003e\n\n\u003ctd\u003eA winter treatment (454 g), which keeps the water clean and odorless until spring, and a stain and scale preventer (1 L), which protects against metal stains and mineral deposits. Explanatory leaflet included.\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n    \u003c\/tbody\u003e\n\n  \u003c\/table\u003e\n\n  \u003cp class=\"afi-f-note\"\u003e\u003cstrong\u003eSpa: dose according to your tub's volume.\u003c\/strong\u003e The winterizing kit is dosed for a swimming pool (up to 80,000 L). A spa only requires a small portion: follow the proportions in the leaflet based on your spa's volume and keep the rest for next season.\u003c\/p\u003e\n\n\n  \u003ch2 class=\"afi-f-h2\"\u003ePricing\u003c\/h2\u003e\n\n  \u003ctable class=\"afi-f-tbl\"\u003e\n\n    \u003ctbody\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003ePool, no jets\u003c\/th\u003e\n\n\u003ctd\u003e$64.97\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003ePool, 12 jets\u003c\/th\u003e\n\n\u003ctd\u003e$124.97  ·  $64.97 + 12 jet plugs at $5\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003eSpa, 12 jets\u003c\/th\u003e\n\n\u003ctd\u003e$119.98  ·  $59.98 + 12 jet plugs at $5\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003eSpa, 20 jets\u003c\/th\u003e\n\n\u003ctd\u003e$159.98  ·  $59.98 + 20 jet plugs at $5\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003eSpa, 30 jets\u003c\/th\u003e\n\n\u003ctd\u003e$209.98  ·  $59.98 + 30 jet plugs at $5\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n      \u003ctr\u003e\n\n\u003cth scope=\"row\"\u003eSpa, 48 jets\u003c\/th\u003e\n\n\u003ctd\u003e$299.98  ·  $59.98 + 48 jet plugs at $5\u003c\/td\u003e\n\n\n\u003c\/tr\u003e\n\n    \u003c\/tbody\u003e\n\n  \u003c\/table\u003e\n\n  \u003cp class=\"afi-f-note\"\u003eTaxes (GST and QST) and shipping costs extra, calculated at checkout. The displayed price corresponds to the type of pool\/spa and the number of jets selected.\u003c\/p\u003e\n\n\n  \u003ch2 class=\"afi-f-h2\"\u003eSteps for closing\u003c\/h2\u003e\n\n  \u003cdiv class=\"afi-f-cards\"\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e1. Treat the water\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003eClean the pool\/spa, balance the water, and add the winterizing kit products by following the leaflet.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e2. Lower the water level\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003eJust below the water returns for a pool, just below the jets for a spa. No lower, and never empty the basin.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e3. Cut power\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003eTurn off the pool or spa circuit breaker before touching any equipment.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e4. Purge the lines\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003eBlow the water out of the lines, then drain the pump, filter, and heater via their drain plugs.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e5. Add antifreeze\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003ePour the antifreeze into the purged lines to protect any remaining water.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-card\"\u003e\n\n\u003cspan class=\"afi-f-chk\"\u003e\u003c\/span\u003e\u003cdiv\u003e\n\n\u003cspan class=\"afi-f-ct\"\u003e6. Install plugs\u003c\/span\u003e\u003cspan class=\"afi-f-cx\"\u003e#10 and #11 plugs in returns, jets, and drains, then the Gizzmo in a pool skimmer.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003cp class=\"afi-f-note\"\u003eNot included: the device for blowing or vacuuming water from the lines, and the winter cover. For a spa, also follow your manufacturer’s instructions.\u003c\/p\u003e\n\n\n  \u003cp class=\"afi-f-alert\"\u003e\u003cstrong\u003eFiberglass basin: never empty it.\u003c\/strong\u003e An empty shell can deform under groundwater pressure. Lower the water just below the water returns (or under the jets for a spa) and monitor your sump pit all winter long.\u003c\/p\u003e\n\n\n  \u003ch2 class=\"afi-f-h2\"\u003eFrequently Asked Questions\u003c\/h2\u003e\n\n  \u003cdiv class=\"afi-f-faq\"\u003e\n\n    \u003cdiv class=\"afi-f-qa\"\u003e\n\n\u003cspan class=\"afi-f-q\"\u003eMy pool has no jets. What should I choose?\u003c\/span\u003e\u003cspan class=\"afi-f-a\"\u003eSelect \"Pool\" and then \"0\". The pack will include the antifreeze, the three #10 plugs, the Gizzmo, and the winterizing kit.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-qa\"\u003e\n\n\u003cspan class=\"afi-f-q\"\u003eMy number of jets is not on the list.\u003c\/span\u003e\u003cspan class=\"afi-f-a\"\u003eChoose the size just above your number of jets, or call us: we can adjust the number of plugs for you. Plugs are also sold individually for $5.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-qa\"\u003e\n\n\u003cspan class=\"afi-f-q\"\u003eWhy is there no Gizzmo for a spa?\u003c\/span\u003e\u003cspan class=\"afi-f-a\"\u003eA spa skimmer is closed with a #10 plug. The Gizzmo is used to protect a pool skimmer housing from ice.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n    \u003cdiv class=\"afi-f-qa\"\u003e\n\n\u003cspan class=\"afi-f-q\"\u003eIs one gallon of antifreeze enough?\u003c\/span\u003e\u003cspan class=\"afi-f-a\"\u003eFor most installations, yes. If your network is long or complex, add a gallon to your order or call us to confirm.\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\n  \u003cdiv class=\"afi-f-cta\"\u003e\n\n    \u003cspan class=\"afi-f-cta-t\"\u003eAny questions before ordering?\u003c\/span\u003e\u003cspan class=\"afi-f-cta-x\"\u003eTell us your pool type and number of jets, and we will confirm the right pack for you.\u003c\/span\u003e\u003cspan class=\"afi-f-cta-b\"\u003e\n      \u003ca class=\"afi-f-btn afi-f-btn1\" href=\"mailto:commercial@aquafibreinnovation.ca\"\u003eEmail us\u003c\/a\u003e\n      \u003ca class=\"afi-f-btn afi-f-btn2\" href=\"tel:+14188710658\"\u003e(418) 871-0658\u003c\/a\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n\n\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n.afi-fiche{max-width:850px;margin:20px auto;padding:26px;background:#fff;border:1px solid #e8e8e8;border-radius:14px;box-shadow:0 8px 26px rgba(11,114,185,.07);font-size:17px;line-height:1.6;color:#1e1e1e;}\n.afi-fiche .afi-f-lede{font-size:18px;color:#333;margin:0 0 22px;}\n.afi-fiche .afi-f-p{margin:0 0 12px;}\n.afi-fiche strong{color:#0b72b9;font-weight:600;}\n.afi-fiche a{color:#0b72b9;}\n.afi-fiche .afi-f-h2{font-size:24px;line-height:1.25;font-weight:700;color:#0b72b9;margin:30px 0 14px;padding-bottom:10px;border-bottom:1px solid #dde6ee;}\n.afi-fiche .afi-f-specs{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 22px;}\n.afi-fiche .afi-f-spec{flex:1 1 130px;background:#f5f9fc;border:1px solid #d6e8f5;border-radius:12px;padding:15px 10px;text-align:center;}\n.afi-fiche .afi-f-num{display:block;font-size:26px;font-weight:700;color:#0b72b9;line-height:1.15;}\n.afi-fiche .afi-f-lbl{display:block;font-size:12px;color:#777;margin-top:5px;text-transform:uppercase;letter-spacing:.6px;}\n.afi-fiche .afi-f-note{display:block;margin:14px 0 0;padding:13px 15px;border-left:3px solid #e08600;background:#fff8ef;border-radius:0 10px 10px 0;font-size:15px;line-height:1.55;color:#6b4a12;}\n.afi-fiche .afi-f-note strong{color:#6b4a12;}\n.afi-fiche .afi-f-alert{display:block;margin:26px 0 6px;padding:18px 20px;border:2px solid #e08600;background:#fff8ef;border-radius:12px;font-size:16px;line-height:1.6;color:#5c3f0f;}\n.afi-fiche .afi-f-alert strong{color:#a35f00;}\n.afi-fiche .afi-f-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;}\n.afi-fiche .afi-f-card{display:flex;align-items:flex-start;gap:12px;padding:15px;background:#f5f9fc;border:1px solid #d6e8f5;border-radius:12px;}\n.afi-fiche .afi-f-card:last-child:nth-child(odd){grid-column:1\/-1;}\n.afi-fiche .afi-f-chk{position:relative;flex:0 0 24px;width:24px;height:24px;margin-top:2px;border-radius:7px;background:#0b72b9;}\n.afi-fiche .afi-f-chk::after{content:\"\";position:absolute;left:8px;top:5px;width:5px;height:10px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg);}\n.afi-fiche .afi-f-ct{display:block;font-weight:700;font-size:16px;color:#0b72b9;margin-bottom:3px;}\n.afi-fiche .afi-f-cx{display:block;font-size:15px;line-height:1.5;color:#444;}\n.afi-fiche table.afi-f-tbl{width:100%;border-collapse:collapse;font-size:16px;border:1px solid #e5e5e5;border-radius:12px;overflow:hidden;margin:0;}\n.afi-fiche table.afi-f-tbl th,.afi-fiche table.afi-f-tbl td{text-align:left;padding:12px 15px;border-bottom:1px solid #e5e5e5;vertical-align:top;background:#fff;}\n.afi-fiche table.afi-f-tbl th{color:#0b72b9;font-weight:600;width:38%;background:#f5f9fc;}\n.afi-fiche table.afi-f-tbl tr:last-child th,.afi-fiche table.afi-f-tbl tr:last-child td{border-bottom:0;}\n.afi-fiche .afi-f-faq{display:grid;gap:12px;}\n.afi-fiche .afi-f-qa{padding:14px 16px;background:#f5f9fc;border:1px solid #d6e8f5;border-radius:12px;}\n.afi-fiche .afi-f-q{display:block;color:#0b72b9;font-weight:700;font-size:16px;margin-bottom:4px;}\n.afi-fiche .afi-f-a{display:block;font-size:15px;line-height:1.55;color:#444;}\n.afi-fiche .afi-f-cta{display:block;margin-top:30px;padding:20px 22px;background:#f5f9fc;border:1px solid #d6e8f5;border-radius:12px;}\n.afi-fiche .afi-f-cta-t{display:block;font-size:18px;font-weight:700;color:#0b72b9;margin-bottom:4px;}\n.afi-fiche .afi-f-cta-x{display:block;font-size:15px;color:#555;margin-bottom:14px;}\n.afi-fiche .afi-f-cta-b{display:flex;flex-wrap:wrap;gap:10px;}\n.afi-fiche a.afi-f-btn{display:inline-block;padding:11px 20px;border-radius:999px;font-weight:600;font-size:15px;text-decoration:none;}\n.afi-fiche a.afi-f-btn1{background:#0b72b9;color:#fff;border:1px solid #0b72b9;}\n.afi-fiche a.afi-f-btn2{background:#fff;color:#0b72b9;border:1px solid #b9d9ef;}\n.afi-fiche .afi-f-xsell{display:block;margin:22px 0;padding:20px 22px;background:#0b72b9;border-radius:12px;}\n.afi-fiche .afi-f-xsell-t{display:block;font-size:20px;line-height:1.3;font-weight:700;color:#fff;margin-bottom:6px;}\n.afi-fiche .afi-f-xsell-x{display:block;font-size:16px;line-height:1.55;color:#eaf4fb;margin-bottom:14px;}\n.afi-fiche a.afi-f-btn3{background:#fff;color:#0b72b9;border:1px solid #fff;}\n@media (max-width:600px){\n.afi-fiche{padding:18px;font-size:16px;}\n.afi-fiche .afi-f-lede{font-size:16px;}\n.afi-fiche .afi-f-h2{font-size:20px;}\n.afi-fiche .afi-f-num{font-size:22px;}\n.afi-fiche .afi-f-alert{padding:15px 16px;font-size:15px;}\n.afi-fiche .afi-f-xsell{padding:18px;}\n.afi-fiche .afi-f-xsell-t{font-size:18px;}\n.afi-fiche .afi-f-cards{grid-template-columns:1fr;}\n.afi-fiche table.afi-f-tbl,.afi-fiche table.afi-f-tbl th,.afi-fiche table.afi-f-tbl td{font-size:15px;}\n.afi-fiche table.afi-f-tbl th{width:40%;}\n}\n\u003c\/style\u003e","brand":"AQUA FIBRE INNOVATION","offers":[{"title":"Swimming pool \/ 0","offer_id":67598634418475,"sku":null,"price":64.97,"currency_code":"CAD","in_stock":true},{"title":"Swimming pool \/ 12","offer_id":67598634451243,"sku":null,"price":124.97,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 12","offer_id":67598634484011,"sku":null,"price":119.98,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 20","offer_id":67598634516779,"sku":null,"price":159.98,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 30","offer_id":67598634549547,"sku":null,"price":209.98,"currency_code":"CAD","in_stock":true},{"title":"Spa \/ 48","offer_id":67598634582315,"sku":null,"price":299.98,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0968\/6168\/4011\/files\/3ac11af2-3431-4e12-bace-596a1659f5b9.jpg?v=1790693606"}],"url":"https:\/\/boutique.aquafibreinnovation.ca\/en\/collections\/services.oembed","provider":"AQUA FIBRE INNOVATION","version":"1.0","type":"link"}