SPB Git

spb/lou-ka

Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

[ka2] fix connecteur quartier_sila: refonte Livya 2026-10-22 — client « damco » SANS module inventaire : rendu navigateur + parse de la vue TABLEAU du DOM. Au sync de 17:06 le connecteur rapportait found=0 « ok » (alerte dérive, retraits suspendus) : la refonte Livya du jour a retiré l'inventaire JSON du flux RSC de la page plans (app.livya.com/fr/damco/projects/sila/plans/…?noLayout=1) que l'ancien connecteur lisait — unités chargées QUE côté client via api.realvuu.com (robots.txt interdit, non utilisé), et comme louis14 (3eda9f8, même client damco) pas de repli LivyaConnector (unitSelectorSummaries: [] sur /fr/damco). Fix : rendu Scrapfly render_js (patron le_fjord/louis14, scroll des conteneurs internes) des pages plans des DEUX sélecteurs du projet — /condos-locatifs-sila/ (entity 629800af, phases 1-3, 50 unités) et /phase4/ (entity ec7c9199, toutes phases, 184 unités), découverts dynamiquement sur les pages WP + replis constants. Nouveauté vs le_fjord/louis14 : le DOM rendu contient une vue TABLEAU complète (Nom/Étage/Chambres/SdB/Superficie/Prix/Statut, mapping par en-têtes) qui sert de source de vérité — la grille de cartes (lazy-loadée, 112/184 après scroll) ne fournit que les photos de plans ; repli photos = galerie WP par immeuble comme avant. external_id = UUID unitId Livya (data-unit-id) PRÉSERVÉ — zéro churn : 183/183 actives recoupées + 1 nouvelle. unit_type dérivé des chambres (— → Studio, 1 → 3½, 2 → 4½, 3 → 5½) : recoupé 183/183 avec l'historique ; adresse/GPS repris des immeubles « Phase N » du RSC (toujours SSR), mappés par le préfixe « SILA N » des noms d'unités — adresses 183/183 identiques. Titres nettoyés (« unité 703 » au lieu de « unité SILA 2 -703 »). Commodités/galerie/téléphone/bannières de phases toujours lus de la page WP. ⚠️ PERTE STRUCTURELLE : les loyers ne sont plus collectables — damco masque les prix sur le web (showUnitPriceWeb: false, colonne Prix = « — », vérifié aussi sur les pages /unites/ WP : aucun $) ; l'ancien connecteur les lisait dans le JSON brut du RSC, désormais retiré → price=None (cellule Prix parsée au cas où ils reviendraient), annonces en quarantaine qualité (porte dure « sans prix », politique globale intouchée) mais inventaire exact et retraits fiables. Garde-fous : compteur « N résultats » absent = erreur franche ; lignes uniques du tableau < annoncées = erreur franche après 3 tentatives ; en-têtes Nom/Statut introuvables = erreur franche ; « 0 résultats » = vrai zéro. Dates de libération françaises (« 1 décembre 2026 ») converties en ISO. Fixture ré-enregistrée (4 requêtes, 184 annonces), pytest quartier_sila 2 passed. Testé : fetch() venv → 184 unités (P1:11/P2:5/P3:34/P4:134, 100 % GPS/adresse/superficie/images/commodités), run.py sync quartier_sila → found=184 ok (added=1, updated=183, removed=0, 55,5 s ; alerte dérive prix attendue), pm2 restart lou-ka-sync, site :8095 → 200.

Simon-Pierre Boucher committed (Oct 22, 2026) parent 085de34 Browse files

8 changed files +3,491 −1,481

modified louka/connectors/quartier_sila.py +361 −190
@@ -4,21 +4,37 @@
4 4 # connectors/quartier_sila.py : connecteur Quartier Sila (silalevis.ca)
5 5 # Complexe de condos locatifs du Groupe Damco / Développement Beaubourg à
6 6 # Saint-Romuald (Lévis) — 4 phases (Guillaume-Couture, J.-B.-Demers,
7 −# d'Anticosti), 3½ à 5½. Site WordPress/Elementor derrière Cloudflare ; la
8 −# page « Condos locatifs Sila » embarque le module de plans interactifs
9 −# Livya (app.livya.com, client « damco », projet « sila »). La page Next.js
10 −# du module est rendue côté serveur : son flux RSC (self.__next_f.push)
11 −# contient l'inventaire JSON complet — numéro d'unité, immeuble/étage,
12 −# statut, loyer, pièces, superficie, adresse civique, GPS et plans. Les
13 −# unités de la phase 4 (prélocation) n'ont pas encore de prix publié.
14 −# 2 requêtes par sync : la page WordPress (id d'entité Livya + services et
15 −# commodités + bannières de phases) + la page du module.
7 +# d'Anticosti). Le site WordPress embarque le module de plans Livya
8 +# (app.livya.com, client « damco », projet « sila ») sur DEUX pages :
9 +# /condos-locatifs-sila/ (sélecteur des phases 1-3) et /phase4/ (sélecteur
10 +# couvrant toutes les phases, dont la phase 4 en prélocation).
11 +# Depuis la refonte Livya du 2026-10-22, le flux RSC des pages plans ne
12 +# contient plus les unités ET le client damco n'a PAS de module inventaire
13 +# SSR (unitSelectorSummaries: []) : les unités ne sont chargées QUE côté
14 +# client (api.realvuu.com, robots.txt interdit — on ne l'appelle pas).
15 +# On rend donc chaque page plans en navigateur (Scrapfly render_js, patron
16 +# le_fjord/louis14) : le DOM rendu contient une vue TABLEAU complète
17 +# (colonnes Nom/Étage/Chambres/Salles de bain/Superficie/Prix/Statut) qui
18 +# sert de source de vérité, plus une grille de cartes (lazy-loadée, donc
19 +# partielle) dont on tire les photos de plans. external_id = UUID unitId
20 +# Livya (data-unit-id), identique à l'historique — zéro churn. Adresse/GPS :
21 +# métadonnées des immeubles « Phase N », toujours SSR dans le RSC de la
22 +# page ; type d'unité dérivé des chambres (— → Studio, 1 → 3½, 2 → 4½,
23 +# 3 → 5½ — recoupé 183/183 avec l'historique en base).
24 +# ⚠️ Les loyers ne sont PLUS collectables : damco masque les prix sur le
25 +# web (showUnitPriceWeb: false, colonne Prix = « — ») — l'ancien connecteur
26 +# les lisait dans le JSON brut du RSC, désormais retiré. La cellule Prix est
27 +# tout de même parsée au cas où ils reviendraient.
28 +# La page WordPress /condos-locatifs-sila/ fournit toujours commodités,
29 +# galerie photos par immeuble, téléphone et bannières d'état des phases.
16 30 # -----------------------------------------------------------------------------
17 31 from __future__ import annotations
18 32
19 −import codecs
33 +import html as _html
20 34 import json
21 35 import re
36 +import time
37 +from urllib.parse import unquote
22 38
23 39 from bs4 import BeautifulSoup
24 40
@@ -27,79 +43,86 @@ from .base import BaseConnector
27 43
28 44 BASE = "https://silalevis.ca"
29 45 LIST_URL = f"{BASE}/condos-locatifs-sila/"
46 +PHASE4_URL = f"{BASE}/phase4/"
30 47 LIVYA = "https://app.livya.com"
31 48 SECTOR = "Saint-Romuald"
32 49
33 −# fragments RSC de Next.js : self.__next_f.push([1,"...payload échappé..."])
34 −_NEXT_F_RE = re.compile(r'self\.__next_f\.push\(\[1,"((?:[^"\\]|\\.)*)"\]\)')
35 −# bannières de la page : « Phase 3 en construction pour livraison à l'été
36 −# 2026! », « Phase 4 en prélocation à l'automne 2026! »
50 +# Valeurs observées dans les modules des deux pages — replis si l'extraction
51 +# dynamique casse
52 +DEFAULT_CLIENT = "damco"
53 +DEFAULT_PROJECT = "sila"
54 +DEFAULT_ENTITIES = [
55 + "629800af-26e4-4697-84ba-9ea603b6affb", # /condos-locatifs-sila/ (ph. 1-3)
56 + "ec7c9199-4134-44c9-b678-dd5d240a07d2", # /phase4/ (toutes les phases)
57 +]
58 +
59 +# conteneur du module plans sur les pages WordPress
60 +_CONTAINER_RE = re.compile(
61 + r'<div[^>]*livya-module-container-plans[^>]*>', re.I)
62 +_ATTR_RE = re.compile(r'data-(project|entity|lang)="([^"]*)"')
63 +_CLIENT_RE = re.compile(r'data-client="([^"]+)"')
64 +# fragments RSC de Next.js : self.__next_f.push([1,"…"])
65 +_FLIGHT_RE = re.compile(r'self\.__next_f\.push\(\[1,"((?:[^"\\]|\\.)*)"\]\)')
66 +
67 +# vue tableau du DOM rendu (complète) + cartes de la grille (photos)
68 +_ROW_RE = re.compile(r'<tr data-unit-id="([0-9a-f-]{36})"')
69 +_TH_RE = re.compile(r'<th[^>]*>(.*?)</th>', re.S)
70 +_TD_RE = re.compile(r'<td[^>]*>(.*?)</td>', re.S)
71 +_CARD_RE = re.compile(r'<div[^>]*data-unit-id="([0-9a-f-]{36})"')
72 +_IMG_RE = re.compile(r'url=(https%3A%2F%2F[^&"]+)')
73 +_COUNT_RE = re.compile(r'(\d+)\s*résultats?')
74 +# « SILA 1 -202 » -> (immeuble « Sila 1 », numéro « 202 »)
75 +_NAME_RE = re.compile(r'^\s*(SILA\s*\d)\s*-?\s*(\S+)\s*$', re.I)
76 +
77 +_MOIS = {"janvier": 1, "février": 2, "mars": 3, "avril": 4, "mai": 5,
78 + "juin": 6, "juillet": 7, "août": 8, "septembre": 9, "octobre": 10,
79 + "novembre": 11, "décembre": 12}
80 +_DATE_FR_RE = re.compile(r"(\d{1,2})(?:er)?\s+([a-zûé]+)\s+(\d{4})", re.I)
81 +
82 +# bannières de la page : « Phase 4 en prélocation … »
37 83 _PHASE_BANNER_RE = re.compile(
38 84 r"Phase\s*(\d)\s*(en\s+(?:construction|pr[ée]location)[^!.<]{0,80})", re.I)
39 85 # item de commodité réservé à certaines phases : « (Phases 2 et 3) »
40 86 _AMEN_PHASE_RE = re.compile(r"phases?\s*([\d\s,et]+)", re.I)
41 −# photos de la page WordPress (galerie du projet) ; on écarte logos, favicons,
42 −# bannière, gifs de chargement et variantes retaillées (-300x172)
87 +# photos de la page WordPress (galerie du projet)
43 88 _WP_IMG_RE = re.compile(
44 89 r"https://silalevis\.ca/wp-content/uploads/[^\"'\s\\?]+?\.(?:jpe?g|webp)")
45 90 _WP_IMG_SKIP_RE = re.compile(
46 91 r"logo|favicon|icon|header|loading|damco|beaubourg-ca|accordeon|"
47 92 r"-\d+x\d+\.", re.I)
48 93
94 +# scrolle tous les conteneurs à overflow interne (grille lazy-loadée : le
95 +# scroll de la fenêtre ne charge rien — auto_scroll Scrapfly inopérant)
96 +_SCROLL_JS = ("document.querySelectorAll('*').forEach(function(e){"
97 + "if(e.scrollHeight>e.clientHeight+10){e.scrollTop=e.scrollHeight}})")
49 98
50 −def _flight_blob(html: str) -> str:
51 − """Concatène et désérialise les fragments RSC d'une page Livya.
52 −
53 − `unicode_escape` interprète les octets en latin-1 : on ré-encode pour
54 − retrouver l'UTF-8 d'origine (sinon « Étage » devient « Ãtage »).
55 − """
56 − blob = "".join(codecs.decode(c, "unicode_escape")
57 − for c in _NEXT_F_RE.findall(html))
58 − return blob.encode("latin-1", "ignore").decode("utf-8", "ignore")
59 −
60 −
61 −def _json_arrays(blob: str, key: str) -> list[list]:
62 − """Toutes les valeurs de `"key":[...]` du flux (équilibrage de crochets)."""
63 − out: list[list] = []
64 − for m in re.finditer(re.escape(f'"{key}":['), blob):
65 − j = m.end() - 1
66 − depth, in_str, esc = 0, False, False
67 − for k in range(j, len(blob)):
68 − c = blob[k]
69 − if in_str:
70 − if esc:
71 − esc = False
72 − elif c == "\\":
73 − esc = True
74 − elif c == '"':
75 − in_str = False
76 − elif c == '"':
77 − in_str = True
78 − elif c == "[":
79 − depth += 1
80 − elif c == "]":
81 − depth -= 1
82 − if depth == 0:
83 − try:
84 − out.append(json.loads(blob[j:k + 1]))
85 − except ValueError:
86 − pass
87 − break
88 − return out
89 99
100 +def _cell_text(cell: str) -> str:
101 + return re.sub(r"\s+", " ", _html.unescape(re.sub(r"<[^>]+>", " ", cell))).strip()
90 102
91 −def _unit_type(rooms: float | None) -> str:
92 − """3.5 -> « 3½ » ; 0.5 -> « Studio » (finalize gère 6½+)."""
93 − if not rooms:
94 − return ""
95 − if rooms < 1:
103 +
104 +def _cell_num(s: str) -> float | None:
105 + digits = re.sub(r"[^\d.]", "", s or "")
106 + try:
107 + return float(digits) if digits else None
108 + except ValueError:
109 + return None
110 +
111 +
112 +def _unit_type(beds: float | None) -> str:
113 + """Type dérivé des chambres (recoupé 183/183 avec l'historique JSON) :
114 + — -> Studio, 1 -> 3½, 2 -> 4½, 3 -> 5½…"""
115 + if beds is None:
96 116 return "Studio"
97 − return f"{int(rooms)}½"
117 + if beds < 1:
118 + return "Studio"
119 + return f"{int(beds) + 2}½"
98 120
99 121
100 122 class QuartierSilaConnector(BaseConnector):
101 123 source_id = "quartier_sila"
102 124 request_delay = 0.8
125 + max_units = 600 # garde-fou (~200 unités par phase 1-4)
103 126
104 127 # -- page WordPress : commodités listées sous « Services et commodités » ----
105 128 @staticmethod
@@ -151,138 +174,286 @@ class QuartierSilaConnector(BaseConnector):
151 174 out.append(item)
152 175 return out
153 176
177 + # -- modules Livya des pages WordPress ---------------------------------------
178 + def _module_entities(self) -> tuple[str, str, str, list[str], str]:
179 + """(client, project, lang, [entités], html de la page principale).
180 +
181 + Les deux pages portent chacune un sélecteur de plans distinct ;
182 + replis constants si l'extraction casse (gabarit WP changé)."""
183 + client, project, lang = DEFAULT_CLIENT, DEFAULT_PROJECT, "fr"
184 + entities: list[str] = []
185 + wp_main = ""
186 + for page in (LIST_URL, PHASE4_URL):
187 + try:
188 + html = self.get(page).text
189 + except Exception:
190 + continue
191 + if page == LIST_URL:
192 + wp_main = html
193 + mc = _CLIENT_RE.search(html)
194 + if mc:
195 + client = mc.group(1).strip() or client
196 + for tag in _CONTAINER_RE.findall(html):
197 + attrs = dict(_ATTR_RE.findall(tag))
198 + project = attrs.get("project") or project
199 + lang = attrs.get("lang") or lang
200 + ent = attrs.get("entity")
201 + if ent and ent not in entities:
202 + entities.append(ent)
203 + if not entities:
204 + entities = list(DEFAULT_ENTITIES)
205 + return client, project, lang, entities, wp_main
206 +
207 + # -- rendu navigateur ---------------------------------------------------------
208 + def get_rendered(self, url: str, wait_ms: int = 0) -> str:
209 + """HTML rendu Scrapfly, scroll des conteneurs internes (grille
210 + lazy-loadée). Surchargée (même nom que base) pour rester compatible
211 + avec le record/replay des fixtures — clé de rejeu = URL cible."""
212 + steps: list[dict] = []
213 + for _ in range(8):
214 + steps.append({"execute": {"script": _SCROLL_JS}})
215 + steps.append({"wait": 1200})
216 + html = self.get_scrapfly(url, render_js=True, asp=True,
217 + rendering_wait=wait_ms or 4000,
218 + js_scenario=steps)
219 + if not html:
220 + raise RuntimeError(f"Scrapfly : rendu vide — {url}")
221 + return html
222 +
223 + def _render_ok(self, url: str) -> str:
224 + """Rendu dont la vue tableau est complète : le compteur « N résultats »
225 + doit être présent (sinon gabarit changé) et le nombre de lignes
226 + uniques du tableau doit l'atteindre — erreur franche après 3
227 + tentatives plutôt qu'un rendu tronqué qui dépublierait des unités."""
228 + last_err: Exception | None = None
229 + for attempt in range(3):
230 + html = self.get_rendered(url, wait_ms=4000)
231 + m = _COUNT_RE.search(
232 + _html.unescape(re.sub(r"<[^>]+>", " ", html)))
233 + if not m:
234 + last_err = RuntimeError(
235 + "app.livya.com (quartier_sila) : compteur « N résultats » "
236 + f"absent du rendu — gabarit Livya changé ? ({url})")
237 + else:
238 + announced = int(m.group(1))
239 + uniques = len(set(_ROW_RE.findall(html)))
240 + if uniques >= announced:
241 + return html # announced == 0 : vrai zéro accepté
242 + last_err = RuntimeError(
243 + f"app.livya.com (quartier_sila) : {uniques} ligne(s) "
244 + f"unique(s) pour {announced} annoncées — rendu "
245 + f"incomplet ? ({url})")
246 + if attempt < 2:
247 + time.sleep(5 * (attempt + 1))
248 + assert last_err is not None
249 + raise last_err
250 +
251 + # -- vue tableau du DOM rendu -> unités ---------------------------------------
252 + @staticmethod
253 + def _collect(html: str, units: dict[str, dict]) -> None:
254 + """Lignes du tableau (source de vérité) + photos des cartes de grille."""
255 + thead = re.search(r"<thead.*?</thead>", html, re.S)
256 + cols: dict[str, int] = {}
257 + if thead:
258 + for i, th in enumerate(_TH_RE.findall(thead.group(0))):
259 + t = _cell_text(th).lower()
260 + for key, label in (("name", "nom"), ("floor", "étage"),
261 + ("beds", "chambre"), ("baths", "salle"),
262 + ("area", "superficie"), ("price", "prix"),
263 + ("status", "statut")):
264 + if t.startswith(label):
265 + cols[key] = i
266 + if "name" not in cols or "status" not in cols:
267 + raise RuntimeError(
268 + "app.livya.com (quartier_sila) : en-têtes du tableau "
269 + "introuvables (Nom/Statut) — gabarit Livya changé ?")
270 +
271 + rows = list(_ROW_RE.finditer(html))
272 + for i, m in enumerate(rows):
273 + end = rows[i + 1].start() if i + 1 < len(rows) else m.start() + 8000
274 + cells = [_cell_text(c) for c in
275 + _TD_RE.findall(html[m.start():min(end, m.start() + 8000)])]
276 +
277 + def col(key: str) -> str:
278 + j = cols.get(key)
279 + return cells[j] if j is not None and j < len(cells) else ""
280 +
281 + name = col("name")
282 + nm = _NAME_RE.match(name)
283 + parsed = {
284 + "building": nm.group(1).title() if nm else None,
285 + "number": (nm.group(2) if nm else name.lstrip("#")) or None,
286 + "floor": _cell_num(col("floor")),
287 + "beds": _cell_num(col("beds")),
288 + "baths": _cell_num(col("baths")),
289 + "area": _cell_num(col("area")),
290 + "price": _cell_num(col("price")),
291 + "status": col("status") or None,
292 + }
293 + u = units.setdefault(m.group(1), {})
294 + for k, v in parsed.items():
295 + if u.get(k) is None and v is not None:
296 + u[k] = v
297 +
298 + # cartes de la grille (lazy-loadée, partielle) : photo du plan
299 + cards = [(x.start(), x.group(1)) for x in _CARD_RE.finditer(html)]
300 + for i, (pos, uid) in enumerate(cards):
301 + end = cards[i + 1][0] if i + 1 < len(cards) else pos + 9000
302 + im = _IMG_RE.search(html[pos:min(end, pos + 9000)])
303 + if im and uid in units and units[uid].get("image") is None:
304 + units[uid]["image"] = unquote(im.group(1))
305 +
306 + # -- métadonnées des immeubles « Phase N » (flux RSC, toujours SSR) -----------
307 + @staticmethod
308 + def _buildings(html: str) -> dict[str, dict]:
309 + """n° de phase -> {address, city, postalCode, latitude, longitude}."""
310 + try:
311 + blob = "".join(
312 + json.loads(f'"{c}"') for c in _FLIGHT_RE.findall(html))
313 + except Exception:
314 + return {}
315 + dec = json.JSONDecoder()
316 + out: dict[str, dict] = {}
317 + for m in re.finditer(r'\{"buildingId"', blob):
318 + try:
319 + obj, _ = dec.raw_decode(blob[m.start():m.start() + 8000])
320 + except Exception:
321 + continue
322 + pm = re.fullmatch(r"Phase\s*(\d)", (obj.get("name") or "").strip())
323 + if pm and obj.get("address"):
324 + out.setdefault(pm.group(1), obj)
325 + return out
326 +
154 327 def fetch(self) -> list[Listing]:
155 − # 1) Page « Condos locatifs Sila » : id d'entité Livya + commodités +
156 − # bannières d'état des phases + téléphone du bureau de location
157 − wp = self.get(LIST_URL).text
158 − m = re.search(r"<[^>]*livya-module-container-plans[^>]*>", wp)
159 − if not m:
160 − raise RuntimeError("module Livya introuvable sur la page condos")
161 − tag = m.group(0)
162 − client_m = re.search(r'data-client="([^"]+)"', wp)
163 − project = re.search(r'data-project="([^"]+)"', tag)
164 − entity = re.search(r'data-entity="([^"]+)"', tag)
165 − if not (client_m and project and entity):
166 − raise RuntimeError("attributs data-client/project/entity manquants")
167 −
168 − soup = BeautifulSoup(wp, "html.parser")
169 − amenities = self._amenities(soup)
170 − gallery = self._wp_gallery(wp)
328 + client, project, lang, entities, wp = self._module_entities()
329 +
330 + # page WordPress principale : commodités, galerie, téléphone, bannières
331 + amenities: list[str] = []
332 + gallery: dict[str, list[str]] = {}
171 333 contact: dict = {}
172 − tel = re.search(r'href="tel:([\d\s\-.]{10,14})"', wp)
173 − if tel:
174 − d = re.sub(r"\D", "", tel.group(1))[-10:]
175 − if len(d) == 10:
176 − contact["phone"] = f"{d[:3]}-{d[3:6]}-{d[6:]}"
177 − # état publié par phase (construction/prélocation + horizon de livraison)
178 − banners = {n: f"Phase {n} {re.sub(r'[ ]+', ' ', rest).strip()}"
179 − for n, rest in _PHASE_BANNER_RE.findall(
180 − soup.get_text(" ", strip=True))}
181 −
182 − # 2) Page du module Livya (rendue serveur) -> inventaire JSON complet
183 − livya_url = (f"{LIVYA}/fr/{client_m.group(1)}/projects/"
184 − f"{project.group(1)}/plans/{entity.group(1)}?noLayout=1")
185 − blob = _flight_blob(self.get(livya_url).text)
186 −
187 − phase_names: dict[str, str] = {}
188 − for arr in _json_arrays(blob, "phases"):
189 − for p in arr:
190 − if isinstance(p, dict) and p.get("phaseId") and p.get("name"):
191 − phase_names[p["phaseId"]] = str(p["name"])
192 −
193 − units, seen = [], set()
194 − for arr in _json_arrays(blob, "units"):
195 − for u in arr:
196 − if isinstance(u, dict) and u.get("unitId") and u["unitId"] not in seen:
197 − seen.add(u["unitId"])
198 − units.append(u)
334 + banners: dict[str, str] = {}
335 + if wp:
336 + soup = BeautifulSoup(wp, "html.parser")
337 + amenities = self._amenities(soup)
338 + gallery = self._wp_gallery(wp)
339 + tel = re.search(r'href="tel:([\d\s\-.]{10,14})"', wp)
340 + if tel:
341 + d = re.sub(r"\D", "", tel.group(1))[-10:]
342 + if len(d) == 10:
343 + contact["phone"] = f"{d[:3]}-{d[3:6]}-{d[6:]}"
344 + banners = {n: f"Phase {n} {re.sub(r'[ ]+', ' ', rest).strip()}"
345 + for n, rest in _PHASE_BANNER_RE.findall(
346 + soup.get_text(" ", strip=True))}
347 +
348 + units: dict[str, dict] = {}
349 + buildings: dict[str, dict] = {}
350 + announced_total = 0
351 + for ent in entities:
352 + url = (f"{LIVYA}/{lang}/{client}/projects/{project}"
353 + f"/plans/{ent}?noLayout=1")
354 + html = self._render_ok(url)
355 + cm = _COUNT_RE.search(_html.unescape(re.sub(r"<[^>]+>", " ", html)))
356 + announced_total += int(cm.group(1)) if cm else 0
357 + self._collect(html, units)
358 + buildings.update(self._buildings(html))
359 + if announced_total and not units:
360 + raise RuntimeError(
361 + "app.livya.com (quartier_sila) : aucune ligne d'unité dans "
362 + f"les rendus ({len(entities)} sélecteur(s)) — gabarit changé ?")
199 363
200 364 listings: list[Listing] = []
201 − for u in units:
202 − if u.get("availability") != "AVAILABLE" or not u.get("rental", True):
365 + for uid, u in list(units.items())[: self.max_units]:
366 + if not (u.get("status") or "").startswith("Disponible"):
203 367 continue
204 − num = str(u.get("number") or "").strip()
205 − price = u.get("rentalPrice")
206 − price = float(price) if isinstance(price, (int, float)) and price > 0 else None
207 − area = u.get("unitSize")
208 − area = float(area) if isinstance(area, (int, float)) and area > 0 else None
209 − phase = phase_names.get(u.get("phaseId") or "", "")
210 −
211 − # immeuble + étage depuis « Sila 3 - Étage 6 »
212 − floor_disp = str(u.get("floorDisplayName") or "").strip()
213 − building, _, floor_label = (x.strip() for x in
214 − floor_disp.partition(" - "))
215 −
216 − desc: list[str] = []
217 − if floor_label:
218 − desc.append(floor_label.capitalize())
219 − elif u.get("floorNumber"):
220 − desc.append(f"Étage {u['floorNumber']}")
221 − if phase:
222 − desc.append(f"Phase {phase}")
223 − if u.get("typeName"):
224 − desc.append(f"Modèle {u['typeName']}")
225 − if u.get("roomsBed"):
226 − desc.append(f"{u['roomsBed']} chambre(s)")
227 − if u.get("roomsBath"):
228 − desc.append(f"{u['roomsBath']} salle(s) de bain")
229 − if u.get("balconySize"):
230 − desc.append(f"Balcon de {u['balconySize']} pi²")
231 − if u.get("floorPlanUrl"):
232 − desc.append(f"Plan : {u['floorPlanUrl']}")
233 −
234 − address = ", ".join(x for x in (
235 − u.get("address") or "", u.get("city") or "",
236 − u.get("postalCode") or "") if x)
237 −
238 − images = [img.get("fullUrl") for img in (u.get("typeImages") or [])
239 − if isinstance(img, dict) and img.get("fullUrl")]
240 − if u.get("floorPlanImageUrl"):
241 − images.append(u["floorPlanImageUrl"])
242 − # galerie du site : photos de l'immeuble (SilaII/Sila3…) puis
243 − # photos génériques du projet (aires communes, panoramas)
244 − for img in (gallery.get(building) or []) + (gallery.get("*") or []):
245 − if img not in images:
246 − images.append(img)
247 −
248 − # disponibilité : date future publiée > bannière de phase
249 − # (« Phase 4 en prélocation à l'automne 2026 ») > statut du plan
250 − future = u.get("futureAvailability")
251 − availability = (str(future) if future
252 − else banners.get(phase, "Disponible"))
253 −
254 − details: dict = {}
255 − if contact:
256 − details["contact"] = dict(contact)
257 − floor_no = str(u.get("floorNumber") or "")
258 − if floor_no.isdigit():
259 − details["floor"] = int(floor_no)
260 − # phase 4 = prélocation : Livya ne publie AUCUN loyer pour ces
261 − # unités (rentalPrice=0, vérifié 2026-08-18) — prix absent assumé
262 − if price is None:
263 − details["prelocation"] = True
264 −
265 − titre = (f"Quartier Sila — {building}, unité {num}" if building
266 − else f"Quartier Sila — unité {num}")
267 − lat, lng = u.get("latitude"), u.get("longitude")
268 − listings.append(Listing(
269 − source=self.source_id,
270 − external_id=str(u["unitId"]),
271 − url=LIST_URL,
272 − title=f"{titre} ({_unit_type(u.get('rooms'))})",
273 − address=address,
274 − sector=SECTOR,
275 − city=infer_city(SECTOR),
276 − unit_type=_unit_type(u.get("rooms")),
277 − price=price,
278 − price_label=f"{price:.0f} $ /mois" if price else "",
279 − availability=availability,
280 − area_sqft=area,
281 − description=" | ".join(desc),
282 − amenities=self._amenities_for_phase(amenities, phase),
283 − details=details,
284 − images=images[:12],
285 − lat=float(lat) if lat else None,
286 − lng=float(lng) if lng else None,
287 − ))
368 + listings.append(self._listing(
369 + uid, u, buildings, amenities, gallery, contact, banners))
288 370 return listings
371 +
372 + # -- une annonce par unité disponible ------------------------------------------
373 + def _listing(self, uid: str, u: dict, buildings: dict[str, dict],
374 + amenities: list[str], gallery: dict[str, list[str]],
375 + contact: dict, banners: dict[str, str]) -> Listing:
376 + num = str(u.get("number") or "").strip()
377 + building = (u.get("building") or "").strip() # « Sila 3 »
378 + phase = (re.sub(r"\D", "", building) or "")[:1]
379 + b = buildings.get(phase, {})
380 +
381 + address = ", ".join(x for x in (
382 + (b.get("address") or "").strip(), (b.get("city") or "").strip(),
383 + (b.get("postalCode") or "").strip()) if x)
384 +
385 + price = u.get("price")
386 + price = float(price) if price and price > 1 else None
387 +
388 + # « Disponible » ou « Disponible - 1 décembre 2026 » (date française) ;
389 + # sans date : bannière d'état de la phase (« Phase 4 en prélocation… »)
390 + status = (u.get("status") or "").strip()
391 + availability = banners.get(phase, "Disponible")
392 + avail_date = None
393 + dm = _DATE_FR_RE.search(status)
394 + if dm and _MOIS.get(dm.group(2).lower()):
395 + avail_date = (f"{int(dm.group(3)):04d}-"
396 + f"{_MOIS[dm.group(2).lower()]:02d}-"
397 + f"{int(dm.group(1)):02d}")
398 + availability = f"Disponible à partir du {avail_date}"
399 +
400 + beds, baths, area = u.get("beds"), u.get("baths"), u.get("area")
401 + unit_type = _unit_type(beds)
402 +
403 + desc: list[str] = []
404 + floor = u.get("floor")
405 + if floor and floor > 0:
406 + desc.append(f"Étage {int(floor)}")
407 + if phase:
408 + desc.append(f"Phase {phase}")
409 + if beds:
410 + desc.append(f"{int(beds)} chambre(s)")
411 + if baths:
412 + desc.append(f"{int(baths)} salle(s) de bain")
413 +
414 + details: dict = {}
415 + if contact:
416 + details["contact"] = dict(contact)
417 + if floor and floor > 0:
418 + details["floor"] = int(floor)
419 + if phase == "4":
420 + details["prelocation"] = True
421 +
422 + images: list[str] = []
423 + if u.get("image"):
424 + images.append(u["image"])
425 + for img in (gallery.get(building) or []) + (gallery.get("*") or []):
426 + if img not in images:
427 + images.append(img)
428 +
429 + try:
430 + lat = float(b["latitude"]) if b.get("latitude") else None
431 + lng = float(b["longitude"]) if b.get("longitude") else None
432 + except (TypeError, ValueError):
433 + lat = lng = None
434 +
435 + titre = (f"Quartier Sila — {building}, unité {num}" if building
436 + else f"Quartier Sila — unité {num}")
437 + return Listing(
438 + source=self.source_id,
439 + external_id=uid, # UUID Livya : stable, historique
440 + url=PHASE4_URL if phase == "4" else LIST_URL,
441 + title=f"{titre} ({unit_type})",
442 + address=address,
443 + sector=SECTOR,
444 + city=(b.get("city") or "").strip() or infer_city(SECTOR),
445 + unit_type=unit_type,
446 + bedrooms=beds if beds and beds > 0 else None,
447 + bathrooms=baths if baths and baths > 0 else None,
448 + price=price, # masqué par damco depuis la
449 + price_label=(f"{price:.0f} $ /mois" if price else ""), # refonte
450 + availability=availability,
451 + availability_date=avail_date,
452 + area_sqft=area if area and area > 0 else None,
453 + description=" | ".join(desc),
454 + amenities=self._amenities_for_phase(amenities, phase),
455 + details=details,
456 + images=images[:12],
457 + lat=lat,
458 + lng=lng,
459 + )
modified tests/fixtures/quartier_sila/20947e1c7684dee6d27e.html +287 −333
@@ -5,24 +5,19 @@
5 5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 6 <link rel="profile" href="https://gmpg.org/xfn/11">
7 7 <meta name="facebook-domain-verification" content="4l63r5b75e4svsynnzbx77tyrz702b" />
8 − <script type="text/javascript">
9 − var loftloaderHTML = document.documentElement;
10 − loftloaderHTML.classList.add( "loftloader-smooth-transition" );
11 − loftloaderHTML.setAttribute( 'data-original-styles', loftloaderHTML.getAttribute( 'style' ) || '' );
12 − loftloaderHTML.setAttribute( 'style', 'background-color: #282a37; background-color: #282a37' );
13 − </script><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
8 + <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
14 9
15 −<!-- Google Tag Manager for WordPress by gtm4wp.com -->
16 −<script data-cfasync="false" data-pagespeed-no-defer>
17 − var gtm4wp_datalayer_name = "dataLayer";
18 − var dataLayer = dataLayer || [];
19 −</script>
20 −<!-- End Google Tag Manager for WordPress by gtm4wp.com -->
21 − <!-- This site is optimized with the Yoast SEO plugin v27.7 - https://yoast.com/product/yoast-seo-wordpress/ -->
10 + <!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ -->
22 11 <title>Condos Locatifs Sila - Sila Lévis</title>
12 +<link data-rocket-prefetch href="https://www.gstatic.com" rel="dns-prefetch">
13 +<link data-rocket-prefetch href="https://connect.facebook.net" rel="dns-prefetch">
14 +<link data-rocket-prefetch href="https://www.google-analytics.com" rel="dns-prefetch">
23 15 <link data-rocket-prefetch href="https://www.googletagmanager.com" rel="dns-prefetch">
24 −<link data-rocket-prefetch href="https://app.livya.com" rel="dns-prefetch">
16 +<link data-rocket-prefetch href="https://app.realvuu.com" rel="dns-prefetch">
17 +<link data-rocket-prefetch href="https://googleads.g.doubleclick.net" rel="dns-prefetch">
25 18 <link data-rocket-prefetch href="https://challenges.cloudflare.com" rel="dns-prefetch">
19 +<link crossorigin data-rocket-preload as="font" href="https://silalevis.ca/wp-content/uploads/elementor/google-fonts/fonts/lato-s6u9w4bmutphh7usswipgq.woff2" rel="preload">
20 +<link crossorigin data-rocket-preload as="font" href="https://silalevis.ca/wp-content/uploads/elementor/google-fonts/fonts/roboto-kfo7cnqeu92fr1me7ksn66agldtyluama3yuba.woff2" rel="preload">
26 21 <link crossorigin data-rocket-preload as="font" href="https://silalevis.ca/wp-content/uploads/2020/11/SteelfishRg-Regular.woff2" rel="preload"><link rel="preload" data-rocket-preload as="image" href="https://silalevis.ca/wp-content/uploads/2020/11/condolocatifsila-headerbg.jpg" fetchpriority="high">
27 22 <link rel="canonical" href="https://silalevis.ca/condos-locatifs-sila/" />
28 23 <meta property="og:locale" content="fr_CA" />
@@ -31,17 +26,16 @@
31 26 <meta property="og:description" content="Condos locatifs à Lévis Des condos locatifs à Lévis qui vous simplifient la vie Sila est votre oasis urbaine au cœur d’un quartier vivant et en plein essor de Lévis!Des condominiums locatifs alliant un rapport qualité/prix exceptionnel tout en redéfinissant les règles d’architecture selon votre style de vie. Doté d’un style urbain et confortable, Sila [&hellip;]" />
32 27 <meta property="og:url" content="https://silalevis.ca/condos-locatifs-sila/" />
33 28 <meta property="og:site_name" content="Sila Lévis" />
34 − <meta property="article:modified_time" content="2026-05-21T18:21:18+00:00" />
29 + <meta property="article:modified_time" content="2026-10-06T14:41:33+00:00" />
35 30 <meta name="twitter:card" content="summary_large_image" />
36 31 <meta name="twitter:label1" content="Estimation du temps de lecture" />
37 32 <meta name="twitter:data1" content="8 minutes" />
38 − <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","url":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","name":"Condos Locatifs Sila - Sila Lévis","isPartOf":{"@id":"https:\/\/silalevis.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage"},"image":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage"},"thumbnailUrl":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","datePublished":"2020-11-30T01:31:48+00:00","dateModified":"2026-05-21T18:21:18+00:00","breadcrumb":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/silalevis.ca\/condos-locatifs-sila\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage","url":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","contentUrl":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","width":98,"height":219},{"@type":"BreadcrumbList","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/silalevis.ca\/"},{"@type":"ListItem","position":2,"name":"Condos Locatifs Sila"}]},{"@type":"WebSite","@id":"https:\/\/silalevis.ca\/#website","url":"https:\/\/silalevis.ca\/","name":"Sila Lévis","description":"Un site utilisant WordPress","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/silalevis.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"}]}</script>
33 + <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","url":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","name":"Condos Locatifs Sila - Sila Lévis","isPartOf":{"@id":"https:\/\/silalevis.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage"},"image":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage"},"thumbnailUrl":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","datePublished":"2020-11-30T01:31:48+00:00","dateModified":"2026-10-06T14:41:33+00:00","breadcrumb":{"@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/silalevis.ca\/condos-locatifs-sila\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#primaryimage","url":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","contentUrl":"https:\/\/silalevis.ca\/wp-content\/uploads\/2020\/12\/S-sila-01.svg","width":98,"height":219},{"@type":"BreadcrumbList","@id":"https:\/\/silalevis.ca\/condos-locatifs-sila\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/silalevis.ca\/"},{"@type":"ListItem","position":2,"name":"Condos Locatifs Sila"}]},{"@type":"WebSite","@id":"https:\/\/silalevis.ca\/#website","url":"https:\/\/silalevis.ca\/","name":"Sila Lévis","description":"Un site utilisant WordPress","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/silalevis.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"}]}</script>
39 34 <!-- / Yoast SEO plugin. -->
40 35
41 36
42 37 <link rel='dns-prefetch' href='//challenges.cloudflare.com' />
43 38 <link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
44 −<link rel='dns-prefetch' href='//www.googletagmanager.com' />
45 39
46 40 <link rel="alternate" type="application/rss+xml" title="Sila Lévis &raquo; Flux" href="https://silalevis.ca/feed/" />
47 41 <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://silalevis.ca/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsilalevis.ca%2Fcondos-locatifs-sila%2F" />
@@ -50,13 +44,8 @@
50 44 img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
51 45 /*# sourceURL=wp-img-auto-sizes-contain-inline-css */
52 46 </style>
53 −<link rel='stylesheet' id='loftloader-style-css' href='https://silalevis.ca/wp-content/plugins/loftloader-pro/assets/css/loftloader.min.css?ver=2020081201' media='all' />
54 −<style id="loftloader-style-inline-css">
55 −#loftloader-wrapper .loader-bg { opacity: 1.00; }#loftloader-wrapper.end-split-h .loader-bg:before, #loftloader-wrapper.end-split-h .loader-bg:after, #loftloader-wrapper.end-split-v .loader-bg:before, #loftloader-wrapper.end-split-v .loader-bg:after, #loftloader-wrapper.end-fade .loader-bg, #loftloader-wrapper.end-up .loader-bg, #loftloader-wrapper.end-left .loader-bg, #loftloader-wrapper.end-right .loader-bg, #loftloader-wrapper.end-shrink-fade .loader-bg:before, .loader-bg .loader-bg-half:before { background-color: #282a37; }#loftloader-wrapper .loader-inner #loader, #loftloader-wrapper.loftloader-ducks #loader span { color: #248acc }#loftloader-wrapper.loftloader-crystal #loader span { box-shadow: 0 -15px 0 0 rgba(36, 138, 204, 0.5), 15px -15px 0 0 rgba(36, 138, 204, 0.5), 15px 0 0 0 rgba(36, 138, 204, 0.5), 15px 15px 0 0 rgba(36, 138, 204, 0.5), 0 15px 0 0 rgba(36, 138, 204, 0.5), -15px 15px 0 0 rgba(36, 138, 204, 0.5), -15px 0 0 0 rgba(36, 138, 204, 0.5), -15px -15px 0 0 rgba(36, 138, 204, 0.5); }#loftloader-wrapper.loftloader-crossing #loader span:before { background: #00ffff }#loftloader-wrapper.loftloader-crossing #loader span:after { background: #ff0000 }#loftloader-wrapper.loftloader-rainbow #loader span:before { box-shadow: 0 0 0 10px #ff0000, 0 0 0 20px #ffd700, 0 0 0 30px #00ffff; }#loftloader-wrapper.loftloader-frame #loader { width: 80px; }#loftloader-wrapper.loftloader-frame #loader { height: 80px; }#loftloader-wrapper.loftloader-frame #loader span:after, #loftloader-wrapper.loftloader-frame #loader span:before { width: 4px; }#loftloader-wrapper.loftloader-frame #loader:after, #loftloader-wrapper.loftloader-frame #loader:before { height: 4px; }#loftloader-wrapper.loftloader-imgfading #loader img, #loftloader-wrapper.loftloader-imgloading #loader img, #loftloader-wrapper.loftloader-imgrotating #loader img, #loftloader-wrapper.loftloader-imgbouncing #loader img, #loftloader-wrapper.loftloader-imgstatic #loader img { width: 900px; }#loftloader-wrapper.loftloader-imgfading .loader-inner #loader, #loftloader-wrapper.loftloader-imgloading .loader-inner #loader, #loftloader-wrapper.loftloader-imgrotating .loader-inner #loader, #loftloader-wrapper.loftloader-imgbouncing .loader-inner #loader, #loftloader-wrapper.loftloader-imgstatic .loader-inner #loader { max-width: 100%; }#loftloader-wrapper span.bar { width: 30vw; }#loftloader-wrapper span.bar { height: 10px; }#loftloader-wrapper span.bar, #loftloader-wrapper span.percentage { color: #248acc; }#loftloader-wrapper span.percentage, #loftloader-wrapper span.bar span.load-count { font-family: Lato; }#loftloader-wrapper span.percentage, #loftloader-wrapper span.bar span.load-count { font-weight: 100; }#loftloader-wrapper span.percentage, #loftloader-wrapper span.bar span.load-count { letter-spacing: 0.1em; }body #loftloader-wrapper span.percentage, body #loftloader-wrapper span.bar span.load-count { font-size: 16px; }#loftloader-wrapper .loader-message { font-size: 16px; }#loftloader-wrapper .loader-message { color: #248acc; }#loftloader-wrapper .loader-message { font-family: Lato; }#loftloader-wrapper .loader-message { font-weight: 400; }#loftloader-wrapper .loader-message { letter-spacing: 0.1em; }#loftloader-wrapper .loader-message { line-height: 1.5; }
56 −/*# sourceURL=loftloader-style-inline-css */
57 −</style>
58 47 <link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://silalevis.ca/wp-content/themes/hello-elementor/theme.min.css?ver=2.5.0' media='all' />
59 −<link data-minify="1" rel='stylesheet' id='jet-menu-hello-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/integration/themes/hello-elementor/assets/css/style.css?ver=1780874796' media='all' />
48 +<link data-minify="1" rel='stylesheet' id='jet-menu-hello-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/integration/themes/hello-elementor/assets/css/style.css?ver=1792505617' media='all' />
60 49 <style id="wp-emoji-styles-inline-css">
61 50
62 51 img.wp-smiley, img.emoji {
@@ -78,40 +67,45 @@ img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
78 67 /*# sourceURL=/wp-includes/css/classic-themes.min.css */
79 68 </style>
80 69 <style id="global-styles-inline-css">
81 −:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
70 +:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
82 71 :root :where(.wp-block-icon svg){width: 24px;}
72 +:where(.wp-block-gallery.is-layout-flex){gap: var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) );}:where(.wp-block-gallery.is-layout-grid){gap: var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) );}
73 +:where(.wp-block-latest-posts.is-layout-flex){gap: 1.25em;}:where(.wp-block-latest-posts.is-layout-grid){gap: 1.25em;}
83 74 :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
84 75 :where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
85 76 :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
86 77 :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
87 78 /*# sourceURL=global-styles-inline-css */
88 79 </style>
89 −<link data-minify="1" rel='stylesheet' id='qtip-css' href='https://silalevis.ca/wp-content/cache/min/1/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.min.css?ver=1780874796' media='all' />
90 −<link data-minify="1" rel='stylesheet' id='fancybox-css' href='https://silalevis.ca/wp-content/cache/min/1/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css?ver=1780874796' media='all' />
91 −<link data-minify="1" rel='stylesheet' id='selecteur-plans-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/selecteur-de-plans/assets/css/selecteur.css?ver=1780874796' media='all' />
92 −<link data-minify="1" rel='stylesheet' id='kgrondin-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/selecteur-de-plans/assets/css/kgrondin.css?ver=1780874796' media='all' />
93 −<link rel='stylesheet' id='cmplz-general-css' href='https://silalevis.ca/wp-content/plugins/complianz-gdpr-premium/assets/css/cookieblocker.min.css?ver=1780873980' media='all' />
94 −<link data-minify="1" rel='stylesheet' id='parente2-style-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/themes/hello-elementor/style.css?ver=1780874796' media='all' />
95 −<link rel='stylesheet' id='childe2-style-css' href='https://silalevis.ca/wp-content/themes/hello-elementor-child/style.css?ver=7.0.3' media='all' />
80 +<link data-minify="1" rel='stylesheet' id='qtip-css' href='https://silalevis.ca/wp-content/cache/min/1/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.min.css?ver=1792505617' media='all' />
81 +<link data-minify="1" rel='stylesheet' id='fancybox-css' href='https://silalevis.ca/wp-content/cache/min/1/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css?ver=1792505617' media='all' />
82 +<link data-minify="1" rel='stylesheet' id='selecteur-plans-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/selecteur-de-plans/assets/css/selecteur.css?ver=1792505617' media='all' />
83 +<link data-minify="1" rel='stylesheet' id='kgrondin-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/selecteur-de-plans/assets/css/kgrondin.css?ver=1792505617' media='all' />
84 +<link rel='stylesheet' id='cmplz-general-css' href='https://silalevis.ca/wp-content/plugins/complianz-gdpr-premium/assets/css/cookieblocker.min.css?ver=1791232968' media='all' />
85 +<link data-minify="1" rel='stylesheet' id='parente2-style-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/themes/hello-elementor/style.css?ver=1792505617' media='all' />
86 +<link rel='stylesheet' id='childe2-style-css' href='https://silalevis.ca/wp-content/themes/hello-elementor-child/style.css?ver=7.1.3' media='all' />
96 87 <link rel='stylesheet' id='hello-elementor-css' href='https://silalevis.ca/wp-content/themes/hello-elementor/style.min.css?ver=2.5.0' media='all' />
97 −<link data-minify="1" rel='stylesheet' id='jet-menu-public-styles-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/assets/public/css/public.css?ver=1780874796' media='all' />
98 −<link rel='stylesheet' id='elementor-frontend-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.1.1' media='all' />
99 −<link rel='stylesheet' id='widget-nav-menu-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/widget-nav-menu.min.css?ver=4.1.0' media='all' />
100 −<link rel='stylesheet' id='widget-image-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=4.1.1' media='all' />
101 −<link rel='stylesheet' id='e-sticky-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/modules/sticky.min.css?ver=4.1.0' media='all' />
102 −<link rel='stylesheet' id='widget-icon-list-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css?ver=4.1.1' media='all' />
103 −<link rel='stylesheet' id='widget-heading-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=4.1.1' media='all' />
104 −<link data-minify="1" rel='stylesheet' id='elementor-icons-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=1780874796' media='all' />
105 −<link rel='stylesheet' id='elementor-post-6-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-6.css?ver=1780874379' media='all' />
106 −<link data-minify="1" rel='stylesheet' id='jet-tabs-frontend-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-tabs/assets/css/jet-tabs-frontend.css?ver=1780874796' media='all' />
107 −<link data-minify="1" rel='stylesheet' id='swiper-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=1780874796' media='all' />
108 −<link rel='stylesheet' id='e-motion-fx-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/modules/motion-fx.min.css?ver=4.1.0' media='all' />
109 −<link rel='stylesheet' id='e-swiper-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/conditionals/e-swiper.min.css?ver=4.1.1' media='all' />
110 −<link rel='stylesheet' id='widget-image-carousel-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css?ver=4.1.1' media='all' />
111 −<link rel='stylesheet' id='widget-menu-anchor-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-menu-anchor.min.css?ver=4.1.1' media='all' />
112 −<link rel='stylesheet' id='elementor-post-59-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-59.css?ver=1780874796' media='all' />
113 −<link rel='stylesheet' id='elementor-post-76-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-76.css?ver=1780874379' media='all' />
114 −<link rel='stylesheet' id='elementor-post-673-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-673.css?ver=1780874379' media='all' />
88 +<link data-minify="1" rel='stylesheet' id='jet-menu-public-styles-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/assets/public/css/public.css?ver=1792505617' media='all' />
89 +<link rel='stylesheet' id='elementor-frontend-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.3.4' media='all' />
90 +<link rel='stylesheet' id='widget-nav-menu-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/widget-nav-menu.min.css?ver=4.3.1' media='all' />
91 +<link rel='stylesheet' id='widget-image-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=4.3.4' media='all' />
92 +<link rel='stylesheet' id='e-sticky-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/modules/sticky.min.css?ver=4.3.1' media='all' />
93 +<link rel='stylesheet' id='widget-icon-list-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css?ver=4.3.4' media='all' />
94 +<link rel='stylesheet' id='e-animation-float-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/lib/animations/styles/e-animation-float.min.css?ver=4.3.4' media='all' />
95 +<link rel='stylesheet' id='widget-social-icons-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css?ver=4.3.4' media='all' />
96 +<link rel='stylesheet' id='e-apple-webkit-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/conditionals/apple-webkit.min.css?ver=4.3.4' media='all' />
97 +<link rel='stylesheet' id='widget-heading-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=4.3.4' media='all' />
98 +<link data-minify="1" rel='stylesheet' id='elementor-icons-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=1792505617' media='all' />
99 +<link rel='stylesheet' id='elementor-post-6-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-6.css?ver=1792505617' media='all' />
100 +<link data-minify="1" rel='stylesheet' id='jet-tabs-frontend-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-tabs/assets/css/jet-tabs-frontend.css?ver=1792505617' media='all' />
101 +<link data-minify="1" rel='stylesheet' id='swiper-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=1792505617' media='all' />
102 +<link rel='stylesheet' id='e-motion-fx-css' href='https://silalevis.ca/wp-content/plugins/elementor-pro/assets/css/modules/motion-fx.min.css?ver=4.3.1' media='all' />
103 +<link rel='stylesheet' id='e-swiper-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/conditionals/e-swiper.min.css?ver=4.3.4' media='all' />
104 +<link rel='stylesheet' id='widget-image-carousel-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css?ver=4.3.4' media='all' />
105 +<link rel='stylesheet' id='widget-menu-anchor-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/css/widget-menu-anchor.min.css?ver=4.3.4' media='all' />
106 +<link rel='stylesheet' id='elementor-post-59-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-59.css?ver=1792505617' media='all' />
107 +<link rel='stylesheet' id='elementor-post-76-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-76.css?ver=1792505617' media='all' />
108 +<link rel='stylesheet' id='elementor-post-673-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-673.css?ver=1792505617' media='all' />
115 109 <style id="elementor-pro-custom-fonts-inline-css">
116 110 @font-face {
117 111 font-family: 'Steelfishg';
@@ -125,34 +119,36 @@ img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
125 119
126 120 /*# sourceURL=elementor-pro-custom-fonts-inline-css */
127 121 </style>
128 −<link data-minify="1" rel='stylesheet' id='elementor-gf-local-roboto-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/roboto.css?ver=1780874796' media='all' />
129 −<link data-minify="1" rel='stylesheet' id='elementor-gf-local-robotoslab-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/robotoslab.css?ver=1780874796' media='all' />
130 −<link data-minify="1" rel='stylesheet' id='elementor-gf-local-lato-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/lato.css?ver=1780874796' media='all' />
122 +<link data-minify="1" rel='stylesheet' id='cmplz-banner-1-optin-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/complianz/css/banner-1-optin.css?ver=1792505617' media='all' />
123 +<link data-minify="1" rel='stylesheet' id='elementor-gf-local-roboto-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/roboto.css?ver=1792505617' media='all' />
124 +<link data-minify="1" rel='stylesheet' id='elementor-gf-local-robotoslab-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/robotoslab.css?ver=1792505617' media='all' />
125 +<link data-minify="1" rel='stylesheet' id='elementor-gf-local-lato-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/lato.css?ver=1792505617' media='all' />
131 126 <link rel='stylesheet' id='elementor-icons-shared-0-css' href='https://silalevis.ca/wp-content/plugins/elementor/assets/lib/font-awesome/css/fontawesome.min.css?ver=5.15.3' media='all' />
132 −<link data-minify="1" rel='stylesheet' id='elementor-icons-fa-solid-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/font-awesome/css/solid.min.css?ver=1780874796' media='all' />
127 +<link data-minify="1" rel='stylesheet' id='elementor-icons-fa-solid-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/font-awesome/css/solid.min.css?ver=1792505617' media='all' />
128 +<link data-minify="1" rel='stylesheet' id='elementor-icons-fa-brands-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/font-awesome/css/brands.min.css?ver=1792505617' media='all' />
133 129 <script id="jquery-core-js" src="https://silalevis.ca/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
134 130 <script id="jquery-migrate-js" src="https://silalevis.ca/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
135 131 <link rel="https://api.w.org/" href="https://silalevis.ca/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://silalevis.ca/wp-json/wp/v2/pages/59" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://silalevis.ca/xmlrpc.php?rsd" />
136 −<meta name="generator" content="WordPress 7.0.3" />
132 +<meta name="generator" content="WordPress 7.1.3" />
137 133 <link rel='shortlink' href='https://silalevis.ca/?p=59' />
138 −<meta name="generator" content="Site Kit by Google 1.180.0" /> <style>.cmplz-hidden {
134 + <style>.cmplz-hidden {
139 135 display: none !important;
140 136 }</style>
141 −<!-- Google Tag Manager for WordPress by gtm4wp.com -->
142 −<!-- GTM Container placement set to footer -->
143 −<script data-cfasync="false" data-pagespeed-no-defer>
144 − var dataLayer_content = {"browserName":"Google Search","browserVersion":"432.9.954074404","browserEngineName":"Webkit","browserEngineVersion":"605.1.15","osName":"iOS","osVersion":"26.6.0","deviceType":"tablet","deviceManufacturer":"Apple","deviceModel":"iPad"};
145 − dataLayer.push( dataLayer_content );
146 −</script>
147 −<script data-cfasync="false" data-pagespeed-no-defer>
148 −(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
137 + <meta name="generator" content="Elementor 4.3.4; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto">
138 +<script src="https://app.realvuu.com/integration/plugins/common.js?client=damco&project=sila"></script> <link href="https://app.realvuu.com/integration/plugins/common.css?client=damco&project=sila" rel="stylesheet" />
139 +
140 +<!-- Google Tag Manager -->
141 +<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
149 142 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
150 143 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
151 −'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
152 −})(window,document,'script','dataLayer','GTM-MJCT2CV');
153 −</script>
154 −<!-- End Google Tag Manager for WordPress by gtm4wp.com --><meta name="generator" content="Elementor 4.1.1; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto">
155 −<script data-minify="1" src="https://silalevis.ca/wp-content/cache/min/1/integration/plugins/common.js?ver=1780874796"></script> <link data-minify="1" href="https://silalevis.ca/wp-content/cache/min/1/integration/plugins/common.css?ver=1780874796" rel="stylesheet" />
144 +'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
145 +})(window,document,'script','dataLayer','GTM-MJCT2CV');</script>
146 +<!-- End Google Tag Manager -->
147 +
148 +<!-- Google Tag Manager (noscript) -->
149 +<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJCT2CV"
150 +height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
151 +<!-- End Google Tag Manager (noscript) -->
156 152 <style>
157 153 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
158 154 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
@@ -175,65 +171,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
175 171 <link rel="icon" href="https://silalevis.ca/wp-content/uploads/2020/12/cropped-favicon-192x192.png" sizes="192x192" />
176 172 <link rel="apple-touch-icon" href="https://silalevis.ca/wp-content/uploads/2020/12/cropped-favicon-180x180.png" />
177 173 <meta name="msapplication-TileImage" content="https://silalevis.ca/wp-content/uploads/2020/12/cropped-favicon-270x270.png" />
178 − <noscript><style>#loftloader-wrapper { display: none !important; }</style></noscript>
179 − <style> html.loftloader-pro-hide #loftloader-wrapper { display: none !important; } </style><script type="text/javascript"> ( function() {
180 − var loftloaderCache = {
181 − 'timestamp': 1786212477,
182 − 'isOncePerSession': "off",
183 − 'scope': "none",
184 − 'isFront': "off",
185 − 'uid': "6bb61e3b7bce0931da574d19d1d82c88",
186 − 'pageID': -1 },
187 − htmlClass = document.documentElement.classList, isFront = ( 'on' === loftloaderCache.isFront ),
188 − sessionID = false, session = window.sessionStorage;
189 − if ( 'on' === loftloaderCache.isOncePerSession ) {
190 − switch ( loftloaderCache.scope ) {
191 − case 'site':
192 − sessionID = 'loftloaderSiteOncePerSession';
193 − break;
194 − case 'front':
195 − if ( isFront ) {
196 − sessionID = 'loftloaderFrontOncePerSession';
197 − }
198 − break;
199 − case 'page':
200 − sessionID = loftloaderCache.uid;
201 − break;
202 − }
203 − if ( sessionID ) {
204 − if ( session.getItem( sessionID ) ) {
205 − var styles = [ 'loftloader-page-smooth-transition-bg', 'loftloader-pro-disable-scrolling', 'loftloader-pro-always-show-scrollbar' ];
206 − styles.forEach( function ( s ) {
207 − if ( document.getElementById( s ) ) {
208 − document.getElementById( s ).remove();
209 − }
210 − } );
211 − } else {
212 − session.setItem( sessionID, 'done' );
213 − htmlClass.remove( 'loftloader-pro-hide' );
214 − }
215 − }
216 − }
217 − } ) ();
218 −</script>
219 −<script type="text/javascript">
220 −var loftloaderProProgressInit = 0.6, init = 0, percentageStyles = '';
221 −function loftloaderProInsertStyle( styleID, styleContent ) {
222 − var style = document.createElement( 'style' );
223 − style.id = styleID;
224 − style.innerText = styleContent
225 − document.head.appendChild( style );
226 −}
227 −if ( window.sessionStorage.getItem( 'loftloader-pro-smooth-transition' ) && ( 'on' === window.sessionStorage.getItem( 'loftloader-pro-smooth-transition' ) ) ) {
228 − var onceStyles = '', initPercentage = loftloaderProProgressInit * 100;
229 − init = loftloaderProProgressInit; }
230 −percentageStyles = '#loftloader-wrapper span.percentage:after, #loftloader-wrapper .load-count:after { content: "' + ( init * 100 ) + '%"; }';
231 −percentageStyles += ' #loftloader-wrapper .load-count { width: ' + ( init * 100 ) + '%; }';
232 −loftloaderProInsertStyle( 'loftloader-pro-progress-bar-style', '#loftloader-wrapper span.bar span.load { transform: scaleX(' + init + '); }' );
233 −loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentageStyles );
234 −</script>
235 −<meta name="generator" content="WP Rocket 3.21.3" data-wpr-features="wpr_minify_js wpr_preconnect_external_domains wpr_auto_preload_fonts wpr_oci wpr_minify_css wpr_host_fonts_locally wpr_mobile" /></head>
236 −<body data-rsssl=1 data-cmplz=1 class="wp-singular page-template page-template-elementor_header_footer page page-id-59 wp-theme-hello-elementor wp-child-theme-hello-elementor-child jet-mega-menu-location loftloader-pro-enabled elementor-default elementor-template-full-width elementor-kit-6 elementor-page elementor-page-59"><div id="loftloader-wrapper" class="end-fade loftloader-imgfading inner-enter-fade"><div class="loader-bg"></div><div class="loader-inner"><div id="loader"><img data-no-lazy="1" class="skip-lazy" alt="loader image" src="https://silalevis.ca/wp-content/uploads/2020/11/loading_quartier_sila_1-1.gif"></div></div><div class="loader-close-button" style="display: none;"><span class="screen-reader-text">Close</span></div></div>
174 +<meta name="generator" content="WP Rocket 3.23.5.1" data-wpr-features="wpr_minify_js wpr_preconnect_external_domains wpr_auto_preload_fonts wpr_oci wpr_minify_css wpr_cdn wpr_host_fonts_locally wpr_desktop" /></head>
175 +<body data-cmplz=1 class="wp-singular page-template page-template-elementor_header_footer page page-id-59 wp-theme-hello-elementor wp-child-theme-hello-elementor-child jet-mega-menu-location elementor-default elementor-template-full-width elementor-kit-6 elementor-page elementor-page-59">
237 176
238 177 <header data-elementor-type="header" data-elementor-id="76" class="elementor elementor-76 elementor-location-header" data-elementor-post-type="elementor_library">
239 178 <section class="elementor-section elementor-top-section elementor-element elementor-element-ce8d73d elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ce8d73d" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;,&quot;sticky&quot;:&quot;top&quot;,&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;6d1f42d&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}],&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}">
@@ -245,14 +184,14 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
245 184 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-drop-out">
246 185 <ul id="menu-1-8405c0e" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-64"><a href="https://silalevis.ca/" class="elementor-item">Accueil</a></li>
247 186 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-69"><a href="https://silalevis.ca/quartier/" class="elementor-item">Quartier</a></li>
248 −<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-67"><a href="https://silalevis.ca/emplacement/" class="elementor-item">Emplacement</a></li>
187 +<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-59 current_page_item menu-item-3490"><a href="https://silalevis.ca/condos-locatifs-sila/" aria-current="page" class="elementor-item elementor-item-active">Condos Locatifs Sila</a></li>
249 188 </ul> </nav>
250 189 <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Permuter le menu" aria-expanded="false">
251 190 <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> </div>
252 191 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
253 192 <ul id="menu-2-8405c0e" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-64"><a href="https://silalevis.ca/" class="elementor-item" tabindex="-1">Accueil</a></li>
254 193 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-69"><a href="https://silalevis.ca/quartier/" class="elementor-item" tabindex="-1">Quartier</a></li>
255 −<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-67"><a href="https://silalevis.ca/emplacement/" class="elementor-item" tabindex="-1">Emplacement</a></li>
194 +<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-59 current_page_item menu-item-3490"><a href="https://silalevis.ca/condos-locatifs-sila/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Condos Locatifs Sila</a></li>
256 195 </ul> </nav>
257 196 </div>
258 197 </div>
@@ -268,9 +207,9 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
268 207 </div>
269 208 <div class="elementor-element elementor-element-d355aa9 elementor-widget__width-auto elementor-widget-mobile__width-auto elementor-hidden-desktop elementor-widget elementor-widget-jet-mobile-menu" data-id="d355aa9" data-element_type="widget" data-e-type="widget" data-widget_type="jet-mobile-menu.default">
270 209 <div class="elementor-widget-container">
271 − <div id="jet-mobile-menu-6a77707d46bd9" class="jet-mobile-menu jet-mobile-menu--location-elementor" data-menu-id="5" data-menu-options="{&quot;menuUniqId&quot;:&quot;6a77707d46bd9&quot;,&quot;menuId&quot;:&quot;5&quot;,&quot;mobileMenuId&quot;:&quot;5&quot;,&quot;location&quot;:&quot;elementor&quot;,&quot;menuLocation&quot;:false,&quot;menuLayout&quot;:&quot;slide-out&quot;,&quot;togglePosition&quot;:&quot;default&quot;,&quot;menuPosition&quot;:&quot;left&quot;,&quot;headerTemplate&quot;:&quot;&quot;,&quot;beforeTemplate&quot;:&quot;&quot;,&quot;afterTemplate&quot;:&quot;&quot;,&quot;useBreadcrumb&quot;:true,&quot;breadcrumbPath&quot;:&quot;full&quot;,&quot;toggleText&quot;:&quot;&quot;,&quot;toggleLoader&quot;:true,&quot;backText&quot;:&quot;&quot;,&quot;itemIconVisible&quot;:true,&quot;itemBadgeVisible&quot;:true,&quot;itemDescVisible&quot;:false,&quot;loaderColor&quot;:&quot;#3a3a3a&quot;,&quot;subEvent&quot;:&quot;click&quot;,&quot;subTrigger&quot;:&quot;item&quot;,&quot;subOpenLayout&quot;:&quot;slide-in&quot;,&quot;closeAfterNavigate&quot;:false,&quot;lockPageScroll&quot;:false,&quot;fillSvgIcon&quot;:true,&quot;megaAjaxLoad&quot;:false}">
272 − <mobile-menu></mobile-menu><div class="jet-mobile-menu__refs"><div ref="toggleClosedIcon"><i class="fas fa-bars"></i></div><div ref="toggleOpenedIcon"><i class="fas fa-times"></i></div><div ref="closeIcon"><i class="fas fa-times"></i></div><div ref="backIcon"><i class="fas fa-angle-left"></i></div><div ref="dropdownIcon"><i class="fas fa-angle-right"></i></div><div ref="dropdownOpenedIcon"><i class="fas fa-angle-down"></i></div><div ref="breadcrumbIcon"><i class="fas fa-angle-right"></i></div></div></div><script id="jetMenuMobileWidgetRenderData6a77707d46bd9" type="application/json">
273 − {"items":{"item-75":{"id":"item-75","name":"Accueil","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/","target":false,"xfn":false,"itemParent":false,"itemId":75,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":[""],"signature":""},"item-74":{"id":"item-74","name":"Quartier","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/quartier\/","target":false,"xfn":false,"itemParent":false,"itemId":74,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":[""],"signature":""},"item-73":{"id":"item-73","name":"Emplacement","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/emplacement\/","target":false,"xfn":false,"itemParent":false,"itemId":73,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":[""],"signature":""},"item-72":{"id":"item-72","name":"Condos Locatifs Sila","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","target":false,"xfn":false,"itemParent":false,"itemId":72,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":[""],"signature":""},"item-71":{"id":"item-71","name":"Contact","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/contact\/","target":false,"xfn":false,"itemParent":false,"itemId":71,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":[""],"signature":""}}} </script> </div>
210 + <div id="jet-mobile-menu-6ada7af149ea5" class="jet-mobile-menu jet-mobile-menu--location-elementor" data-menu-id="5" data-menu-options="{&quot;menuUniqId&quot;:&quot;6ada7af149ea5&quot;,&quot;menuId&quot;:&quot;5&quot;,&quot;mobileMenuId&quot;:&quot;5&quot;,&quot;location&quot;:&quot;elementor&quot;,&quot;menuLocation&quot;:false,&quot;menuLayout&quot;:&quot;slide-out&quot;,&quot;togglePosition&quot;:&quot;default&quot;,&quot;menuPosition&quot;:&quot;left&quot;,&quot;headerTemplate&quot;:&quot;&quot;,&quot;beforeTemplate&quot;:&quot;&quot;,&quot;afterTemplate&quot;:&quot;&quot;,&quot;useBreadcrumb&quot;:true,&quot;breadcrumbPath&quot;:&quot;full&quot;,&quot;toggleText&quot;:&quot;&quot;,&quot;toggleLoader&quot;:true,&quot;backText&quot;:&quot;&quot;,&quot;itemIconVisible&quot;:true,&quot;itemBadgeVisible&quot;:true,&quot;itemDescVisible&quot;:false,&quot;loaderColor&quot;:&quot;#3a3a3a&quot;,&quot;subEvent&quot;:&quot;click&quot;,&quot;subTrigger&quot;:&quot;item&quot;,&quot;subOpenLayout&quot;:&quot;slide-in&quot;,&quot;closePreviousSubmenu&quot;:false,&quot;closeAfterNavigate&quot;:false,&quot;lockPageScroll&quot;:false,&quot;fillSvgIcon&quot;:true,&quot;megaAjaxLoad&quot;:false}">
211 + <mobile-menu></mobile-menu><div class="jet-mobile-menu__refs"><div ref="toggleClosedIcon"><i class="fas fa-bars"></i></div><div ref="toggleOpenedIcon"><i class="fas fa-times"></i></div><div ref="closeIcon"><i class="fas fa-times"></i></div><div ref="backIcon"><i class="fas fa-angle-left"></i></div><div ref="dropdownIcon"><i class="fas fa-angle-right"></i></div><div ref="dropdownOpenedIcon"><i class="fas fa-angle-down"></i></div><div ref="breadcrumbIcon"><i class="fas fa-angle-right"></i></div></div></div><script id="jetMenuMobileWidgetRenderData6ada7af149ea5" type="application/json">
212 + {"items":{"item-75":{"id":"item-75","name":"Accueil","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/","target":false,"xfn":false,"itemParent":false,"itemId":75,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","megaContentHasContent":true,"open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":["menu-item","menu-item-type-post_type","menu-item-object-page","menu-item-home"],"signature":""},"item-74":{"id":"item-74","name":"Quartier","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/quartier\/","target":false,"xfn":false,"itemParent":false,"itemId":74,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","megaContentHasContent":true,"open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":["menu-item","menu-item-type-post_type","menu-item-object-page"],"signature":""},"item-72":{"id":"item-72","name":"Condos Locatifs Sila","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/condos-locatifs-sila\/","target":false,"xfn":false,"itemParent":false,"itemId":72,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","megaContentHasContent":true,"open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":["menu-item","menu-item-type-post_type","menu-item-object-page","page_item","page-item-59","jet-menu-item--active-by-context","jet-menu-item--active","current-menu-item","current_page_item","jet-menu-item--current-by-context"],"signature":""},"item-3491":{"id":"item-3491","name":"Phase 4","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/phase4\/","target":false,"xfn":false,"itemParent":false,"itemId":3491,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","megaContentHasContent":true,"open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":["menu-item","menu-item-type-custom","menu-item-object-custom"],"signature":""},"item-71":{"id":"item-71","name":"Contact","attrTitle":false,"description":"","url":"https:\/\/silalevis.ca\/contact\/","target":false,"xfn":false,"itemParent":false,"itemId":71,"megaTemplateId":false,"megaContent":false,"megaContentType":"default","megaContentHasContent":true,"open":false,"badgeContent":false,"itemIcon":"","hideItemText":false,"classes":["menu-item","menu-item-type-post_type","menu-item-object-page"],"signature":""}},"activeStateURL":"https:\/\/silalevis.ca\/condos-locatifs-sila\/"} </script> </div>
274 213 </div>
275 214 </div>
276 215 </div>
@@ -279,12 +218,12 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
279 218 <div class="elementor-element elementor-element-1591ffd elementor-widget__width-auto elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="1591ffd" data-element_type="widget" data-e-type="widget" data-settings="{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;i class=\&quot;fas fa-caret-down\&quot; aria-hidden=\&quot;true\&quot;&gt;&lt;\/i&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;},&quot;toggle&quot;:&quot;burger&quot;}" data-widget_type="nav-menu.default">
280 219 <div class="elementor-widget-container">
281 220 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade">
282 − <ul id="menu-1-1591ffd" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-59 current_page_item menu-item-70"><a href="https://silalevis.ca/condos-locatifs-sila/" aria-current="page" class="elementor-item elementor-item-active">Condos Locatifs Sila</a></li>
221 + <ul id="menu-1-1591ffd" class="elementor-nav-menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3492"><a href="https://silalevis.ca/phase4/" class="elementor-item">Phase 4</a></li>
283 222 </ul> </nav>
284 223 <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Permuter le menu" aria-expanded="false">
285 224 <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> </div>
286 225 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
287 − <ul id="menu-2-1591ffd" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-59 current_page_item menu-item-70"><a href="https://silalevis.ca/condos-locatifs-sila/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Condos Locatifs Sila</a></li>
226 + <ul id="menu-2-1591ffd" class="elementor-nav-menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3492"><a href="https://silalevis.ca/phase4/" class="elementor-item" tabindex="-1">Phase 4</a></li>
288 227 </ul> </nav>
289 228 </div>
290 229 </div>
@@ -356,47 +295,25 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
356 295 </div>
357 296 <div class="elementor-element elementor-element-ae00c8a elementor-widget elementor-widget-text-editor" data-id="ae00c8a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
358 297 <div class="elementor-widget-container">
359 − <p><b>Phase 3 en construction pour livraison à l&rsquo;été 2026! Réservez votre unité dès maintenant!</b></p><p><b>Phase 4 en prélocation à l&rsquo;automne 2026! Détails à venir.</b></p> </div>
298 + <p><b>Phase 4 en prélocation, réservez votre unités dès maintenant.</b></p> </div>
360 299 </div>
361 300 <div class="elementor-element elementor-element-2de19c0 elementor-widget__width-auto elementor-widget elementor-widget-button" data-id="2de19c0" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
362 301 <div class="elementor-widget-container">
363 302 <div class="elementor-button-wrapper">
364 303 <a class="elementor-button elementor-button-link elementor-size-sm" href="#selecteur-plans">
365 304 <span class="elementor-button-content-wrapper">
366 − <span class="elementor-button-text">Phase 1</span>
367 − </span>
368 − </a>
369 − </div>
370 − </div>
371 − </div>
372 − <div class="elementor-element elementor-element-1e38f80 elementor-widget__width-auto elementor-widget elementor-widget-button" data-id="1e38f80" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
373 − <div class="elementor-widget-container">
374 − <div class="elementor-button-wrapper">
375 − <a class="elementor-button elementor-button-link elementor-size-sm" href="#selecteur-plans">
376 − <span class="elementor-button-content-wrapper">
377 − <span class="elementor-button-text">Phase 2</span>
378 − </span>
379 − </a>
380 − </div>
381 − </div>
382 − </div>
383 − <div class="elementor-element elementor-element-d20f9df elementor-widget__width-auto elementor-widget elementor-widget-button" data-id="d20f9df" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
384 − <div class="elementor-widget-container">
385 − <div class="elementor-button-wrapper">
386 − <a class="elementor-button elementor-button-link elementor-size-sm" href="#selecteur-plans">
387 − <span class="elementor-button-content-wrapper">
388 − <span class="elementor-button-text">Phase 3</span>
305 + <span class="elementor-button-text">VOIR LES PLANS ET DISPONIBILITÉS</span>
389 306 </span>
390 307 </a>
391 308 </div>
392 309 </div>
393 310 </div>
394 − <div class="elementor-element elementor-element-2c92a5f elementor-widget__width-auto elementor-widget elementor-widget-button" data-id="2c92a5f" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
311 + <div class="elementor-element elementor-element-9a52cbc elementor-widget__width-auto elementor-widget elementor-widget-button" data-id="9a52cbc" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
395 312 <div class="elementor-widget-container">
396 313 <div class="elementor-button-wrapper">
397 − <a class="elementor-button elementor-size-sm" role="button">
314 + <a class="elementor-button elementor-button-link elementor-size-sm" href="https://silalevis.ca/phase4/">
398 315 <span class="elementor-button-content-wrapper">
399 − <span class="elementor-button-text">Phase 4</span>
316 + <span class="elementor-button-text">Découvrir la phase 4</span>
400 317 </span>
401 318 </a>
402 319 </div>
@@ -443,29 +360,36 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
443 360 <div class="elementor-widget-wrap elementor-element-populated">
444 361 <div class="elementor-element elementor-element-664ba053 elementor-widget elementor-widget-jet-image-accordion" data-id="664ba053" data-element_type="widget" data-e-type="widget" data-widget_type="jet-image-accordion.default">
445 362 <div class="elementor-widget-container">
446 − <div class="elementor-jet-image-accordion jet-tabs-addons"><div class="jet-image-accordion jet-image-accordion-vertical-orientation jet-image-accordion-quint-ease" role="tablist" data-settings="{&quot;orientation&quot;:&quot;vertical&quot;,&quot;activeSize&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:70,&quot;sizes&quot;:[]},&quot;duration&quot;:1000,&quot;activeItem&quot;:2}">
363 + <div class="elementor-jet-image-accordion jet-tabs-addons"><div class="jet-image-accordion jet-image-accordion-vertical-orientation jet-image-accordion-quint-ease" role="tablist" data-settings="{&quot;orientation&quot;:&quot;vertical&quot;,&quot;activeSize&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:70,&quot;sizes&quot;:[]},&quot;duration&quot;:1000,&quot;activeItem&quot;:3}">
447 364 <div class="jet-image-accordion__list">
448 −<div class="jet-image-accordion__item title-display-mode__on_hover" role="tab" aria-selected="false" tabindex="0">
365 +<div class="jet-image-accordion__item title-display-mode__on_hover elementor-repeater-item-774129e" role="tab" aria-selected="false" tabindex="0">
449 366 <img decoding="async" class="jet-image-accordion__image-instance" src="https://silalevis.ca/wp-content/uploads/2020/12/accordeon-img1.jpg" alt="accordeon-img1">
450 367
451 368 <div class="jet-image-accordion__content">
452 369 <h5 class="jet-image-accordion__title">Phase 1</h5></div>
453 370 <div class="jet-image-accordion__item-loader"><span></span></div>
454 371 </div>
455 −<div class="jet-image-accordion__item title-display-mode__on_hover" role="tab" aria-selected="false" tabindex="0">
372 +<div class="jet-image-accordion__item title-display-mode__on_hover elementor-repeater-item-b9f2181" role="tab" aria-selected="false" tabindex="0">
456 373 <img decoding="async" class="jet-image-accordion__image-instance" src="https://silalevis.ca/wp-content/uploads/2020/12/accordeon-img2.jpg" alt="accordeon-img2">
457 374
458 375 <div class="jet-image-accordion__content">
459 376 <h5 class="jet-image-accordion__title">Phase 2</h5></div>
460 377 <div class="jet-image-accordion__item-loader"><span></span></div>
461 378 </div>
462 −<div class="jet-image-accordion__item title-display-mode__on_hover" role="tab" aria-selected="false" tabindex="0">
379 +<div class="jet-image-accordion__item title-display-mode__on_hover elementor-repeater-item-37a1e0a" role="tab" aria-selected="false" tabindex="0">
463 380 <img decoding="async" class="jet-image-accordion__image-instance" src="https://silalevis.ca/wp-content/uploads/2025/02/3264_Sila3_UT_Salon_002.webp" alt="3264_Sila3_UT_Salon_002">
464 381
465 382 <div class="jet-image-accordion__content">
466 383 <h5 class="jet-image-accordion__title">Phase 3</h5></div>
467 384 <div class="jet-image-accordion__item-loader"><span></span></div>
468 385 </div>
386 +<div class="jet-image-accordion__item title-display-mode__on_hover elementor-repeater-item-6dc8ffc" role="tab" aria-selected="false" tabindex="0">
387 +<img decoding="async" class="jet-image-accordion__image-instance" src="https://silalevis.ca/wp-content/uploads/2026/10/3264_Sila4_UT_Aire_Vie_002-scaled.jpg" alt="3264_Sila4_UT_Aire_Vie_002">
388 +
389 + <div class="jet-image-accordion__content">
390 + <h5 class="jet-image-accordion__title">Phase 4</h5></div>
391 + <div class="jet-image-accordion__item-loader"><span></span></div>
392 +</div>
469 393 </div>
470 394 </div>
471 395 </div> </div>
@@ -601,11 +525,11 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
601 525 <div class="elementor-widget-wrap elementor-element-populated">
602 526 <div class="elementor-element elementor-element-41e791c elementor-widget__width-inherit elementor-widget elementor-widget-heading" data-id="41e791c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
603 527 <div class="elementor-widget-container">
604 − <h2 class="elementor-heading-title elementor-size-default">PHASE 3 EN LOCATION DÈS MAINTENANT – LIVRAISON ÉTÉ 2026</h2> </div>
528 + <h2 class="elementor-heading-title elementor-size-default"> CHOISISSEZ VOTRE BÂTIMENT ET EXPLOREZ LES PLANS</h2> </div>
605 529 </div>
606 530 <div class="elementor-element elementor-element-2f8ab12 elementor-widget__width-initial centre elementor-widget elementor-widget-text-editor" data-id="2f8ab12" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
607 531 <div class="elementor-widget-container">
608 − <p><span class="TextRun SCXW184609165 BCX2" lang="FR-FR" xml:lang="FR-FR" data-contrast="auto"><span class="NormalTextRun SCXW184609165 BCX2">Cliquez sur la phase de votre choix afin de connaître la disponibilité d&rsquo;une unité, d&rsquo;afficher son plan et de </span><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW184609165 BCX2">réserver!</span></span></p> </div>
532 + <p>Cliquez sur un bâtiment pour découvrir les unités disponibles et trouver celle qui vous convient !</p> </div>
609 533 </div>
610 534 </div>
611 535 </div>
@@ -617,9 +541,9 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
617 541 <div class="elementor-widget-wrap elementor-element-populated">
618 542 <div class="elementor-element elementor-element-9a25ff5 elementor-widget elementor-widget-html" data-id="9a25ff5" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
619 543 <div class="elementor-widget-container">
620 − <script data-minify="1" src="https://silalevis.ca/wp-content/cache/min/1/embed.js?ver=1780874797" data-client="damco" data-project="sila"></script>
544 + <script data-minify="1" src="https://silalevis.ca/wp-content/cache/min/1/embed.js?ver=1791234564" data-client="damco" data-project="sila"></script>
621 545
622 −<link data-minify="1" href="https://silalevis.ca/wp-content/cache/min/1/embed.css?ver=1780874796" rel="stylesheet" />
546 +<link data-minify="1" href="https://silalevis.ca/wp-content/cache/min/1/embed.css?ver=1792505618" rel="stylesheet" />
623 547
624 548
625 549
@@ -660,14 +584,7 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
660 584 <div class="elementor-widget-wrap elementor-element-populated">
661 585 <div class="elementor-element elementor-element-a811767 elementor-widget elementor-widget-text-editor" data-id="a811767" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
662 586 <div class="elementor-widget-container">
663 − <ul>
664 −<li>Chute à déchet</li>
665 −<li>Chute à recyclage (Phases 2 et 3)</li>
666 −<li>Administration et maintenance sur place</li>
667 −<li>Salle rangement vélo (phase 3)</li>
668 −<li>EAU CHAUDE INCLUSE (PHASES 2 ET 3)</li>
669 −<li>ÉLECTRICITÉ INCLUSE (PHASE 3)</li>
670 −</ul> </div>
587 + <ul><li>Chute à déchet</li><li>Chute à recyclage (Phases 2 et 3)</li><li>Administration et maintenance sur place</li><li>Salle rangement vélo (phase 3 et 4)</li><li>EAU CHAUDE INCLUSE (PHASES 2, 3 et 4)</li><li>ÉLECTRICITÉ INCLUSE (PHASE 3 et 4)</li></ul> </div>
671 588 </div>
672 589 </div>
673 590 </div>
@@ -726,11 +643,11 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
726 643 </a>
727 644 </li>
728 645 <li class="elementor-icon-list-item">
729 − <a href="/cdn-cgi/l/email-protection#60090e060f2013090c010c051609134e0301">
646 + <a href="/cdn-cgi/l/email-protection#adc4c3cbc2eddec4c1ccc1c8dbc4de83cecc">
730 647
731 648 <span class="elementor-icon-list-icon">
732 649 <i aria-hidden="true" class="fas fa-envelope"></i> </span>
733 − <span class="elementor-icon-list-text"><span class="__cf_email__" data-cfemail="3f565159507f4c56535e535a49564c115c5e">[email&#160;protected]</span></span>
650 + <span class="elementor-icon-list-text"><span class="__cf_email__" data-cfemail="86efe8e0e9c6f5efeae7eae3f0eff5a8e5e7">[email&#160;protected]</span></span>
734 651 </a>
735 652 </li>
736 653 <li class="elementor-icon-list-item">
@@ -743,6 +660,22 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
743 660 </li>
744 661 </ul>
745 662 </div>
663 + </div>
664 + <div class="elementor-element elementor-element-a1d52cf elementor-shape-square e-grid-align-left elementor-grid-0 elementor-widget elementor-widget-social-icons" data-id="a1d52cf" data-element_type="widget" data-e-type="widget" data-widget_type="social-icons.default">
665 + <div class="elementor-widget-container">
666 + <div class="elementor-social-icons-wrapper elementor-grid" role="list">
667 + <span class="elementor-grid-item" role="listitem">
668 + <a class="elementor-icon elementor-social-icon elementor-social-icon-facebook elementor-animation-float elementor-repeater-item-ce4e191" href="https://www.facebook.com/QuartierSila" target="_blank">
669 + <span class="elementor-screen-only">Facebook</span>
670 + <i aria-hidden="true" class="fab fa-facebook"></i> </a>
671 + </span>
672 + <span class="elementor-grid-item" role="listitem">
673 + <a class="elementor-icon elementor-social-icon elementor-social-icon-instagram elementor-animation-float elementor-repeater-item-d8ee5b1" href="https://www.instagram.com/quartier_sila/" target="_blank">
674 + <span class="elementor-screen-only">Instagram</span>
675 + <i aria-hidden="true" class="fab fa-instagram"></i> </a>
676 + </span>
677 + </div>
678 + </div>
746 679 </div>
747 680 </div>
748 681 </div>
@@ -806,7 +739,7 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
806 739 </script>
807 740
808 741 <!-- Consent Management powered by Complianz | GDPR/CCPA Cookie Consent https://wordpress.org/plugins/complianz-gdpr -->
809 −<div id="cmplz-cookiebanner-container"><div class="cmplz-cookiebanner cmplz-hidden banner-1 bottom-right-view-preferences optin cmplz-bottom-left cmplz-categories-type-view-preferences" aria-modal="true" data-nosnippet="true" role="dialog" aria-live="polite" aria-labelledby="cmplz-header-1-optin" aria-describedby="cmplz-message-1-optin">
742 +<div id="cmplz-cookiebanner-container"><div id="cmplz-cookiebanner-1-optin" class="cmplz-cookiebanner cmplz-hidden banner-1 bottom-right-view-preferences optin cmplz-bottom-left cmplz-categories-type-view-preferences" aria-modal="true" data-nosnippet="true" role="dialog" aria-live="polite" aria-labelledby="cmplz-header-1-optin" aria-describedby="cmplz-message-1-optin">
810 743 <div class="cmplz-header">
811 744 <div class="cmplz-logo"></div>
812 745 <div class="cmplz-title" id="cmplz-header-1-optin">Gérer le consentement aux cookies</div>
@@ -820,99 +753,112 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
820 753 <div class="cmplz-message" id="cmplz-message-1-optin">Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.</div>
821 754 <!-- categories start -->
822 755 <div class="cmplz-categories">
823 − <details class="cmplz-category cmplz-functional" >
824 − <summary>
825 − <span class="cmplz-category-header">
826 − <span class="cmplz-category-title">Fonctionnel</span>
827 − <span class='cmplz-always-active'>
828 − <span class="cmplz-banner-checkbox">
829 − <input type="checkbox"
830 − id="cmplz-functional-optin"
831 − data-category="cmplz_functional"
832 − class="cmplz-consent-checkbox cmplz-functional"
833 − size="40"
834 − value="1"/>
835 − <label class="cmplz-label" for="cmplz-functional-optin"><span class="screen-reader-text">Fonctionnel</span></label>
836 − </span>
837 − Toujours activé </span>
838 − <span class="cmplz-icon cmplz-open">
839 − <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18" ><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
840 − </span>
756 + <div class="cmplz-category cmplz-functional">
757 + <div class="cmplz-category-header">
758 + <span class="cmplz-category-title" id="cmplz-title-functional-1-optin">Fonctionnel</span>
759 + <span class='cmplz-always-active'>
760 + <span class="cmplz-banner-checkbox">
761 + <input type="checkbox"
762 + id="cmplz-functional-optin"
763 + data-category="cmplz_functional"
764 + class="cmplz-consent-checkbox cmplz-functional"
765 + size="40"
766 + value="1"/>
767 + <label class="cmplz-label" for="cmplz-functional-optin"><span class="screen-reader-text">Fonctionnel</span></label>
841 768 </span>
842 − </summary>
843 − <div class="cmplz-description">
769 + Toujours activé </span>
770 + <button class="cmplz-category-toggle"
771 + aria-expanded="false"
772 + aria-controls="cmplz-desc-functional-1-optin"
773 + aria-labelledby="cmplz-title-functional-1-optin">
774 + <span class="cmplz-icon cmplz-open">
775 + <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
776 + </span>
777 + </button>
778 + </div>
779 + <div class="cmplz-description" id="cmplz-desc-functional-1-optin" hidden>
844 780 <span class="cmplz-description-functional">Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.</span>
845 781 </div>
846 − </details>
782 + </div>
847 783
848 − <details class="cmplz-category cmplz-preferences" >
849 − <summary>
850 − <span class="cmplz-category-header">
851 − <span class="cmplz-category-title">Préférences</span>
852 − <span class="cmplz-banner-checkbox">
853 − <input type="checkbox"
854 − id="cmplz-preferences-optin"
855 − data-category="cmplz_preferences"
856 − class="cmplz-consent-checkbox cmplz-preferences"
857 − size="40"
858 − value="1"/>
859 − <label class="cmplz-label" for="cmplz-preferences-optin"><span class="screen-reader-text">Préférences</span></label>
860 − </span>
861 − <span class="cmplz-icon cmplz-open">
862 − <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18" ><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
863 − </span>
784 + <div class="cmplz-category cmplz-preferences">
785 + <div class="cmplz-category-header">
786 + <span class="cmplz-category-title" id="cmplz-title-preferences-1-optin">Préférences</span>
787 + <span class="cmplz-banner-checkbox">
788 + <input type="checkbox"
789 + id="cmplz-preferences-optin"
790 + data-category="cmplz_preferences"
791 + class="cmplz-consent-checkbox cmplz-preferences"
792 + size="40"
793 + value="1"/>
794 + <label class="cmplz-label" for="cmplz-preferences-optin"><span class="screen-reader-text">Préférences</span></label>
795 + </span>
796 + <button class="cmplz-category-toggle"
797 + aria-expanded="false"
798 + aria-controls="cmplz-desc-preferences-1-optin"
799 + aria-labelledby="cmplz-title-preferences-1-optin">
800 + <span class="cmplz-icon cmplz-open">
801 + <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
864 802 </span>
865 − </summary>
866 − <div class="cmplz-description">
803 + </button>
804 + </div>
805 + <div class="cmplz-description" id="cmplz-desc-preferences-1-optin" hidden>
867 806 <span class="cmplz-description-preferences">Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’utilisateur.</span>
868 807 </div>
869 − </details>
808 + </div>
870 809
871 − <details class="cmplz-category cmplz-statistics" >
872 − <summary>
873 − <span class="cmplz-category-header">
874 − <span class="cmplz-category-title">Statistiques</span>
875 − <span class="cmplz-banner-checkbox">
876 − <input type="checkbox"
877 − id="cmplz-statistics-optin"
878 − data-category="cmplz_statistics"
879 − class="cmplz-consent-checkbox cmplz-statistics"
880 − size="40"
881 − value="1"/>
882 − <label class="cmplz-label" for="cmplz-statistics-optin"><span class="screen-reader-text">Statistiques</span></label>
883 − </span>
884 − <span class="cmplz-icon cmplz-open">
885 − <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18" ><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
886 − </span>
810 + <div class="cmplz-category cmplz-statistics">
811 + <div class="cmplz-category-header">
812 + <span class="cmplz-category-title" id="cmplz-title-statistics-1-optin">Statistiques</span>
813 + <span class="cmplz-banner-checkbox">
814 + <input type="checkbox"
815 + id="cmplz-statistics-optin"
816 + data-category="cmplz_statistics"
817 + class="cmplz-consent-checkbox cmplz-statistics"
818 + size="40"
819 + value="1"/>
820 + <label class="cmplz-label" for="cmplz-statistics-optin"><span class="screen-reader-text">Statistiques</span></label>
821 + </span>
822 + <button class="cmplz-category-toggle"
823 + aria-expanded="false"
824 + aria-controls="cmplz-desc-statistics-1-optin"
825 + aria-labelledby="cmplz-title-statistics-1-optin">
826 + <span class="cmplz-icon cmplz-open">
827 + <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
887 828 </span>
888 − </summary>
889 − <div class="cmplz-description">
829 + </button>
830 + </div>
831 + <div class="cmplz-description" id="cmplz-desc-statistics-1-optin" hidden>
890 832 <span class="cmplz-description-statistics">Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.</span>
891 833 <span class="cmplz-description-statistics-anonymous">Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.</span>
892 834 </div>
893 − </details>
894 − <details class="cmplz-category cmplz-marketing" >
895 − <summary>
896 − <span class="cmplz-category-header">
897 − <span class="cmplz-category-title">Marketing</span>
898 − <span class="cmplz-banner-checkbox">
899 − <input type="checkbox"
900 − id="cmplz-marketing-optin"
901 − data-category="cmplz_marketing"
902 − class="cmplz-consent-checkbox cmplz-marketing"
903 − size="40"
904 − value="1"/>
905 − <label class="cmplz-label" for="cmplz-marketing-optin"><span class="screen-reader-text">Marketing</span></label>
906 − </span>
907 − <span class="cmplz-icon cmplz-open">
908 − <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18" ><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
909 − </span>
835 + </div>
836 +
837 + <div class="cmplz-category cmplz-marketing">
838 + <div class="cmplz-category-header">
839 + <span class="cmplz-category-title" id="cmplz-title-marketing-1-optin">Marketing</span>
840 + <span class="cmplz-banner-checkbox">
841 + <input type="checkbox"
842 + id="cmplz-marketing-optin"
843 + data-category="cmplz_marketing"
844 + class="cmplz-consent-checkbox cmplz-marketing"
845 + size="40"
846 + value="1"/>
847 + <label class="cmplz-label" for="cmplz-marketing-optin"><span class="screen-reader-text">Marketing</span></label>
848 + </span>
849 + <button class="cmplz-category-toggle"
850 + aria-expanded="false"
851 + aria-controls="cmplz-desc-marketing-1-optin"
852 + aria-labelledby="cmplz-title-marketing-1-optin">
853 + <span class="cmplz-icon cmplz-open">
854 + <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg>
910 855 </span>
911 − </summary>
912 − <div class="cmplz-description">
856 + </button>
857 + </div>
858 + <div class="cmplz-description" id="cmplz-desc-marketing-1-optin" hidden>
913 859 <span class="cmplz-description-marketing">Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.</span>
914 860 </div>
915 − </details>
861 + </div>
916 862 </div><!-- categories end -->
917 863 </div>
918 864
@@ -935,7 +881,7 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
935 881 <a class="cmplz-btn cmplz-manage-options tcf cookie-statement" href="#" data-relative_url="#cmplz-manage-consent-container">Voir les préférences</a>
936 882 </div>
937 883
938 −
884 +
939 885 <div class="cmplz-documents cmplz-links">
940 886 <ul>
941 887 <li><a class="cmplz-link cookie-statement" href="#" data-relative_url="">{title}</a></li>
@@ -945,13 +891,9 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
945 891 </div>
946 892 </div>
947 893 </div>
948 − <div id="cmplz-manage-consent" data-nosnippet="true"><button class="cmplz-btn cmplz-hidden cmplz-manage-consent manage-consent-1">Gérer le consentement</button>
894 + <div id="cmplz-manage-consent" data-nosnippet="true"><button class="cmplz-btn cmplz-hidden cmplz-manage-consent manage-consent-1" aria-haspopup="dialog" aria-controls="cmplz-cookiebanner-1-optin">Gérer le consentement</button>
949 895
950 −</div>
951 −<!-- GTM Container placement set to footer -->
952 −<!-- Google Tag Manager (noscript) -->
953 − <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJCT2CV" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript>
954 −<!-- End Google Tag Manager (noscript) --> <script type="text/x-template" id="mobile-menu-item-template"><li
896 +</div><script type="text/x-template" id="mobile-menu-item-template"><li
955 897 :id="'jet-mobile-menu-item-'+itemDataObject.itemId"
956 898 :class="itemClasses"
957 899 >
@@ -962,12 +904,19 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
962 904 v-on:focusin="handleFocusIn"
963 905 v-on:focusout="handleFocusOut"
964 906 >
907 + <div
908 + class="jet-mobile-menu__item-output"
909 + v-if="itemDataObject.itemOutput"
910 + ref="item-output"
911 + ></div>
965 912 <a
913 + v-else
966 914 :class="itemLinkClasses"
967 915 :href="itemDataObject.url"
968 916 :rel="itemDataObject.xfn || null"
969 917 :title="itemDataObject.attrTitle || null"
970 918 :target="itemDataObject.target || null"
919 + :aria-current="itemAriaCurrent"
971 920 :style="itemLinkStyle"
972 921 :aria-haspopup="isSub && 'item' === effectiveSubTrigger ? 'true' : null"
973 922 :aria-expanded="isSub && 'item' === effectiveSubTrigger ? submenuExpandedState : null"
@@ -1035,7 +984,7 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
1035 984 </div>
1036 985 </div>
1037 986
1038 − <transition name="menu-container-expand-animation">
987 + <transition name="menu-container-accordion-animation">
1039 988 <mobile-menu-list
1040 989 v-if="isDropdownLayout && subDropdownVisible"
1041 990 :depth="depth+1"
@@ -1044,7 +993,7 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
1044 993 </transition>
1045 994
1046 995 </li>
1047 − </script> <script type="text/x-template" id="mobile-menu-list-template"><div
996 + </script><script type="text/x-template" id="mobile-menu-list-template"><div
1048 997 class="jet-mobile-menu__list"
1049 998 role="navigation"
1050 999 >
@@ -1054,10 +1003,12 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
1054 1003 :key="item.id"
1055 1004 :item-data-object="item"
1056 1005 :depth="depth"
1006 + :sub-dropdown-visible="expandedItemIds.includes( item.id )"
1007 + v-on:toggle-submenu="toggleSubmenu"
1057 1008 ></mobile-menu-item>
1058 1009 </ul>
1059 1010 </div>
1060 − </script> <script type="text/x-template" id="mobile-menu-template"><div
1011 + </script><script type="text/x-template" id="mobile-menu-template"><div
1061 1012 :class="instanceClass"
1062 1013 v-on:keyup.esc="escapeKeyHandler"
1063 1014 v-on:keydown="handleMenuKeydown"
@@ -1255,84 +1206,80 @@ loftloaderProInsertStyle( 'loftloader-pro-progress-percentage-style', percentage
1255 1206 </div>
1256 1207 </transition>
1257 1208 </div>
1258 − </script> <script>
1259 − const lazyloadRunObserver = () => {
1260 − const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
1261 − const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
1262 − entries.forEach( ( entry ) => {
1263 − if ( entry.isIntersecting ) {
1264 − let lazyloadBackground = entry.target;
1265 − if( lazyloadBackground ) {
1266 − lazyloadBackground.classList.add( 'e-lazyloaded' );
1209 + </script> <script>
1210 + ( () => {
1211 + const lazyloadRunObserver = () => {
1212 + const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
1213 + const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
1214 + entries.forEach( ( entry ) => {
1215 + if ( entry.isIntersecting ) {
1216 + let lazyloadBackground = entry.target;
1217 + if( lazyloadBackground ) {
1218 + lazyloadBackground.classList.add( 'e-lazyloaded' );
1219 + }
1220 + lazyloadBackgroundObserver.unobserve( entry.target );
1267 1221 }
1268 − lazyloadBackgroundObserver.unobserve( entry.target );
1269 − }
1270 − });
1271 − }, { rootMargin: '200px 0px 200px 0px' } );
1272 − lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
1273 − lazyloadBackgroundObserver.observe( lazyloadBackground );
1222 + });
1223 + }, { rootMargin: '200px 0px 200px 0px' } );
1224 + lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
1225 + lazyloadBackgroundObserver.observe( lazyloadBackground );
1226 + } );
1227 + };
1228 + const events = [
1229 + 'DOMContentLoaded',
1230 + 'elementor/lazyload/observe',
1231 + ];
1232 + events.forEach( ( event ) => {
1233 + document.addEventListener( event, lazyloadRunObserver );
1274 1234 } );
1275 − };
1276 − const events = [
1277 − 'DOMContentLoaded',
1278 − 'elementor/lazyload/observe',
1279 − ];
1280 − events.forEach( ( event ) => {
1281 − document.addEventListener( event, lazyloadRunObserver );
1282 − } );
1235 + } )();
1283 1236 </script>
1284 − <link rel='stylesheet' id='elementor-post-3239-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-3239.css?ver=1780874796' media='all' />
1285 −<link data-minify="1" rel='stylesheet' id='jet-elements-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-elements/assets/css/jet-elements.css?ver=1780874796' media='all' />
1237 + <link rel='stylesheet' id='elementor-post-3239-css' href='https://silalevis.ca/wp-content/uploads/elementor/css/post-3239.css?ver=1792505617' media='all' />
1238 +<link data-minify="1" rel='stylesheet' id='jet-elements-css' href='https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-elements/assets/css/jet-elements.css?ver=1792505618' media='all' />
1286 1239 <script id="wpcf7-redirect-script-js-extra">
1287 1240 var wpcf7_redirect_forms = {"3405":{"page_id":"2672","external_url":"","use_external_url":"","open_in_new_tab":"","http_build_query":"","http_build_query_selectively":"","http_build_query_selectively_fields":"","delay_redirect":"0","after_sent_script":"","thankyou_page_url":"https://silalevis.ca/merci/"},"823":{"page_id":"2672","external_url":"","use_external_url":"","open_in_new_tab":"","http_build_query":"","http_build_query_selectively":"","http_build_query_selectively_fields":"","delay_redirect":"0","after_sent_script":"","thankyou_page_url":"https://silalevis.ca/merci/"},"724":{"page_id":"2672","external_url":"","use_external_url":"","open_in_new_tab":"","http_build_query":"","http_build_query_selectively":"","http_build_query_selectively_fields":"","delay_redirect":"0","after_sent_script":"","thankyou_page_url":"https://silalevis.ca/merci/"}};
1288 1241 //# sourceURL=wpcf7-redirect-script-js-extra
1289 1242 </script>
1290 −<script data-minify="1" id="wpcf7-redirect-script-js" src="https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/cf7-redirection/js/wpcf7-redirect-script.js?ver=1780874797"></script>
1243 +<script data-minify="1" id="wpcf7-redirect-script-js" src="https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/cf7-redirection/js/wpcf7-redirect-script.js?ver=1791233889"></script>
1291 1244 <script data-wp-strategy="async" id="cloudflare-turnstile-js" src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
1292 1245 <script id="cloudflare-turnstile-js-after">
1293 1246 document.addEventListener( 'wpcf7submit', e => turnstile.reset() );
1294 1247 //# sourceURL=cloudflare-turnstile-js-after
1295 1248 </script>
1296 −<script data-minify="1" id="gtm4wp-contact-form-7-tracker-js" src="https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-contact-form-7-tracker.js?ver=1780874797"></script>
1297 −<script id="wp-hooks-js" src="https://silalevis.ca/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
1249 +<script id="wp-hooks-js" src="https://silalevis.ca/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
1298 1250 <script id="jet-menu-public-scripts-js-extra">
1299 −var jetMenuPublicSettings = {"version":"3.0.1.1","ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","getElementorTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-elementor-template-content","getBlocksTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-blocks-template-content","menuItemsApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-menu-items","mobileMenuScriptUrl":"https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-mobile-menu-public-scripts.js?ver=3.0.1.1","restNonce":"21b3252e8e","devMode":"false","wpmlLanguageCode":"","menuSettings":{"jetMenuRollUp":"true","jetMenuMouseleaveDelay":500,"jetMenuMegaWidthType":"container","jetMenuMegaWidthSelector":"","jetMenuMegaOpenSubType":"hover","jetMenuMegaAjax":"false"}};
1300 −var jetMenuPublicSettings = {"version":"3.0.1.1","ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","getElementorTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-elementor-template-content","getBlocksTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-blocks-template-content","menuItemsApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-menu-items","mobileMenuScriptUrl":"https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-mobile-menu-public-scripts.js?ver=3.0.1.1","restNonce":"21b3252e8e","devMode":"false","wpmlLanguageCode":"","menuSettings":{"jetMenuRollUp":"true","jetMenuMouseleaveDelay":500,"jetMenuMegaWidthType":"container","jetMenuMegaWidthSelector":"","jetMenuMegaOpenSubType":"hover","jetMenuMegaAjax":"false"}};
1251 +var jetMenuPublicSettings = {"version":"3.0.5","ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","getElementorTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-elementor-template-content","getBlocksTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-blocks-template-content","menuItemsApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-menu-items","mobileMenuScriptUrl":"https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-mobile-menu-public-scripts.js?ver=3.0.5","restNonce":"1f189298c9","devMode":"false","wpmlLanguageCode":"","menuSettings":{"jetMenuRollUp":"true","jetMenuMouseleaveDelay":500,"jetMenuMegaWidthType":"container","jetMenuMegaWidthSelector":"","jetMenuMegaOpenSubType":"hover","jetMenuMegaAjax":"false"}};
1252 +var jetMenuPublicSettings = {"version":"3.0.5","ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","getElementorTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-elementor-template-content","getBlocksTemplateApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-blocks-template-content","menuItemsApiUrl":"https://silalevis.ca/wp-json/jet-menu-api/v2/get-menu-items","mobileMenuScriptUrl":"https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-mobile-menu-public-scripts.js?ver=3.0.5","restNonce":"1f189298c9","devMode":"false","wpmlLanguageCode":"","menuSettings":{"jetMenuRollUp":"true","jetMenuMouseleaveDelay":500,"jetMenuMegaWidthType":"container","jetMenuMegaWidthSelector":"","jetMenuMegaOpenSubType":"hover","jetMenuMegaAjax":"false"}};
1301 1253 //# sourceURL=jet-menu-public-scripts-js-extra
1302 1254 </script>
1303 −<script id="jet-menu-public-scripts-js" src="https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-public-scripts.js?ver=3.0.1.1"></script>
1255 +<script id="jet-menu-public-scripts-js" src="https://silalevis.ca/wp-content/plugins/jet-menu/assets/public/js/jet-menu-public-scripts.js?ver=3.0.5"></script>
1304 1256 <script id="jet-menu-public-scripts-js-after">
1305 1257 function CxCSSCollector(){"use strict";var t,e=window.CxCollectedCSS;void 0!==e&&((t=document.createElement("style")).setAttribute("title",e.title),t.setAttribute("type",e.type),t.textContent=e.css,document.head.appendChild(t))}CxCSSCollector();
1306 1258 //# sourceURL=jet-menu-public-scripts-js-after
1307 1259 </script>
1308 1260 <script id="smartmenus-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.2.1"></script>
1309 −<script id="elementor-webpack-runtime-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.1.1"></script>
1310 −<script id="elementor-frontend-modules-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.1.1"></script>
1311 −<script id="jquery-ui-core-js" src="https://silalevis.ca/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3"></script>
1261 +<script id="elementor-webpack-runtime-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.3.4"></script>
1262 +<script id="elementor-frontend-modules-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.3.4"></script>
1263 +<script id="jquery-ui-core-js-before">
1264 +jQuery.uiBackCompat = true;
1265 +//# sourceURL=jquery-ui-core-js-before
1266 +</script>
1267 +<script id="jquery-ui-core-js" src="https://silalevis.ca/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
1312 1268 <script id="elementor-frontend-js-before">
1313 −var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Partager sur Facebook","shareOnTwitter":"Partager sur Twitter","pinIt":"Pin it","download":"Download","downloadImage":"T\u00e9l\u00e9charger une image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Lire la vid\u00e9o","previous":"Pr\u00e9c\u00e9dent","next":"Suivant","close":"Fermer","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},
1314 −"hasCustomBreakpoints":false},"version":"4.1.1","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"theme_builder_v2":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_variables":true,"e_pro_interactions":true},"urls":{"assets":"https:\/\/silalevis.ca\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/silalevis.ca\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/silalevis.ca\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"650461cbc6","atomicFormsSendForm":"f08222c5b8"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title"},"post":{"id":59,"title":"Condos%20Locatifs%20Sila%20-%20Sila%20L%C3%A9vis","excerpt":"","featuredImage":false}};
1269 +var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Partager sur Facebook","shareOnX":"Share on X","pinIt":"Pin it","download":"Download","downloadImage":"T\u00e9l\u00e9charger une image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Lire la vid\u00e9o","previous":"Pr\u00e9c\u00e9dent","next":"Suivant","close":"Fermer","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},
1270 +"hasCustomBreakpoints":false},"version":"4.3.4","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"theme_builder_v2":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true},"urls":{"assets":"https:\/\/silalevis.ca\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/silalevis.ca\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/silalevis.ca\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"f22810c083","atomicFormsSendForm":"f3a8b98532"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title"},"post":{"id":59,"title":"Condos%20Locatifs%20Sila%20-%20Sila%20L%C3%A9vis","excerpt":"","featuredImage":false}};
1315 1271 //# sourceURL=elementor-frontend-js-before
1316 1272 </script>
1317 −<script id="elementor-frontend-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.1.1"></script>
1318 −<script id="e-sticky-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.1.0"></script>
1273 +<script id="elementor-frontend-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.3.4"></script>
1274 +<script id="e-sticky-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.3.1"></script>
1319 1275 <script id="swiper-js" src="https://silalevis.ca/wp-content/plugins/elementor/assets/lib/swiper/v8/swiper.min.js?ver=8.4.5"></script>
1320 −<script id="jquery-waitformedias-js-extra">
1321 −var loftloaderProWaitForMediaSettings = {"detectElement":"image","detectAutoplayVideo":""};
1322 −//# sourceURL=jquery-waitformedias-js-extra
1323 −</script>
1324 −<script id="jquery-waitformedias-js" src="https://silalevis.ca/wp-content/plugins/loftloader-pro/assets/js/jquery.waitformedias.min.js?ver=2020081201"></script>
1325 −<script id="loftloader-front-main-js-extra">
1326 −var loftloaderPro = {"leavingProgressMax":"0.6","insiteTransitionShowAll":"","insiteTransitionURLExcluded":["https://silalevis.ca/wp-admin/","https://silalevis.ca/wp-login.php"],"minimalLoadTime":"2500","showCloseBtnTime":"15000","insiteTransition":"on","siteRootURL":"https://silalevis.ca"};
1327 −//# sourceURL=loftloader-front-main-js-extra
1328 −</script>
1329 −<script id="loftloader-front-main-js" src="https://silalevis.ca/wp-content/plugins/loftloader-pro/assets/js/loftloader.min.js?ver=2020081201"></script>
1330 1276 <script id="cmplz-cookiebanner-js-extra">
1331 −var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"0","banner_version":"20","version":"7.5.7.3","store_consent":"","do_not_track_enabled":"","consenttype":"optin","region":"ca","geoip":"1","dismiss_timeout":"","disable_cookiebanner":"","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://silalevis.ca/wp-json/complianz/v1/","locale":"lang=fr&locale=fr_CA","set_cookies_on_root":"0","cookie_domain":"","current_policy_id":"27","cookie_path":"/","categories":{"statistics":"statistiques","marketing":"marketing"},"tcf_active":"","placeholdertext":"Cliquez pour accepter les cookies {category} et activer ce contenu","css_file":"https://silalevis.ca/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=20","page_links":{"ca":{"cookie-statement":{"title":"Politique de cookies ","url":"https://silalevis.ca/politique-de-cookies-ca/"},"privacy-statement":{"title":"D\u00e9claration de confidentialit\u00e9 ","url":"https://silalevis.ca/declaration-de-confidentialite-ca/"},"privacy-statement-children":{"title":"","url":"https://silalevis.ca/?post_type=wpcf7_contact_form&p=724"},"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"eu":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"us":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"uk":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"au":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"za":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"br":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}}},"tm_categories":"1","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Cliquez pour accepter les cookies {category} et activer ce contenu"};
1277 +var complianz = {"prefix":"cmplz_","debug":"","user_banner_id":"1","set_cookies":[],"block_ajax_content":"0","banner_version":"27","version":"7.6.6","store_consent":"","do_not_track_enabled":"","consenttype":"optin","region":"ca","geoip":"1","dismiss_timeout":"","disable_cookiebanner":"","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://silalevis.ca/wp-json/complianz/v1/","locale":"lang=fr&locale=fr_CA","set_cookies_on_root":"0","cookie_domain":"","current_policy_id":"43","cookie_path":"/","categories":{"statistics":"statistiques","marketing":"marketing"},"tcf_active":"","placeholdertext":"Cliquez pour accepter les cookies {category} et activer ce contenu","css_file":"https://silalevis.ca/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=27","page_links":{"ca":{"cookie-statement":{"title":"Politique de cookies ","url":"https://silalevis.ca/politique-de-cookies-ca/"},"privacy-statement":{"title":"D\u00e9claration de confidentialit\u00e9 ","url":"https://silalevis.ca/declaration-de-confidentialite-ca/"},"privacy-statement-children":{"title":"","url":"https://silalevis.ca/"},"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"eu":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"us":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"uk":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"au":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"za":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}},"br":{"disclaimer":{"title":"Avertissement","url":"https://silalevis.ca/avertissement/"}}},"tm_categories":"1","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Cliquez pour accepter les cookies {category} et activer ce contenu","iapi_nav":"fallback","is_cookiepolicy_page":""};
1332 1278 //# sourceURL=cmplz-cookiebanner-js-extra
1333 1279 </script>
1334 −<script defer id="cmplz-cookiebanner-js" src="https://silalevis.ca/wp-content/plugins/complianz-gdpr-premium/cookiebanner/js/complianz.min.js?ver=1780873980"></script>
1280 +<script defer id="cmplz-cookiebanner-js" src="https://silalevis.ca/wp-content/plugins/complianz-gdpr-premium/cookiebanner/js/complianz.min.js?ver=1791232968"></script>
1335 1281 <script id="cmplz-cookiebanner-js-after">
1282 +
1336 1283 if ('undefined' != typeof window.jQuery) {
1337 1284 jQuery(document).ready(function ($) {
1338 1285 $(document).on('elementor/popup/show', () => {
@@ -1363,38 +1310,45 @@ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_
1363 1310 });
1364 1311 });
1365 1312 }
1366 −
1367 −
1313 +
1314 +
1368 1315 //# sourceURL=cmplz-cookiebanner-js-after
1369 1316 </script>
1370 1317 <script id="imagesloaded-js" src="https://silalevis.ca/wp-includes/js/imagesloaded.min.js?ver=5.0.0"></script>
1371 1318 <script id="jet-tween-js-js" src="https://silalevis.ca/wp-content/plugins/jet-elements/assets/js/lib/tweenjs/tweenjs.min.js?ver=2.0.2"></script>
1372 1319 <script id="jet-elements-js-extra">
1373 −var jetElements = {"ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"true","templateApiUrl":"https://silalevis.ca/wp-json/jet-elements-api/v1/elementor-template","devMode":"false","mapboxToken":"","messages":{"invalidMail":"Please specify a valid e-mail"}};
1320 +var jetElements = {"ajaxUrl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","templateApiUrl":"https://silalevis.ca/wp-json/jet-elements-api/v1/elementor-template","devMode":"false","mapboxToken":"","messages":{"invalidMail":"Please specify a valid e-mail"}};
1374 1321 //# sourceURL=jet-elements-js-extra
1375 1322 </script>
1376 −<script id="jet-elements-js" src="https://silalevis.ca/wp-content/plugins/jet-elements/assets/js/jet-elements.min.js?ver=2.9.0.1"></script>
1377 −<script id="elementor-pro-webpack-runtime-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=4.1.0"></script>
1378 −<script id="wp-i18n-js" src="https://silalevis.ca/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
1323 +<script id="jet-elements-js" src="https://silalevis.ca/wp-content/plugins/jet-elements/assets/js/jet-elements.min.js?ver=2.9.2.3"></script>
1324 +<script id="wp-i18n-js" src="https://silalevis.ca/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
1379 1325 <script id="wp-i18n-js-after">
1380 1326 wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
1381 1327 //# sourceURL=wp-i18n-js-after
1382 1328 </script>
1383 1329 <script id="elementor-pro-frontend-js-before">
1384 −var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/silalevis.ca\/wp-admin\/admin-ajax.php","nonce":"b26326ceb1","urls":{"assets":"https:\/\/silalevis.ca\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/silalevis.ca\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},
1330 +var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/silalevis.ca\/wp-admin\/admin-ajax.php","nonce":"402d3c0cdd","urls":{"assets":"https:\/\/silalevis.ca\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/silalevis.ca\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},
1385 1331 "facebook_sdk":{"lang":"fr_CA","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/silalevis.ca\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};
1386 1332 //# sourceURL=elementor-pro-frontend-js-before
1387 1333 </script>
1388 −<script id="elementor-pro-frontend-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.1.0"></script>
1389 −<script id="pro-elements-handlers-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.1.0"></script>
1390 −<script data-minify="1" id="jet-menu-elementor-widgets-scripts-js" src="https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/includes/elementor/assets/public/js/widgets-scripts.js?ver=1780874797"></script>
1334 +<script id="elementor-pro-frontend-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.3.1"></script>
1335 +<script id="pro-elements-handlers-js" src="https://silalevis.ca/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.3.1"></script>
1336 +<script data-minify="1" id="jet-menu-elementor-widgets-scripts-js" src="https://silalevis.ca/wp-content/cache/min/1/wp-content/plugins/jet-menu/includes/elementor/assets/public/js/widgets-scripts.js?ver=1791233889"></script>
1391 1337 <script id="jet-tabs-frontend-js-extra">
1392 −var JetTabsSettings = {"ajaxurl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"true","templateApiUrl":"https://silalevis.ca/wp-json/jet-tabs-api/v1/elementor-template","devMode":"false","isSelfRequest":""};
1338 +var JetTabsSettings = {"ajaxurl":"https://silalevis.ca/wp-admin/admin-ajax.php","isMobile":"false","templateApiUrl":"https://silalevis.ca/wp-json/jet-tabs-api/v1/elementor-template","devMode":"false","isSelfRequest":""};
1393 1339 //# sourceURL=jet-tabs-frontend-js-extra
1394 1340 </script>
1395 −<script id="jet-tabs-frontend-js" src="https://silalevis.ca/wp-content/plugins/jet-tabs/assets/js/jet-tabs-frontend.min.js?ver=2.3.1"></script>
1396 −
1397 −<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a2824b087f41a310',t:'MTc4NjIzMTY2MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1341 +<script id="jet-tabs-frontend-js" src="https://silalevis.ca/wp-content/plugins/jet-tabs/assets/js/jet-tabs-frontend.min.js?ver=2.3.4"></script>
1342 +<!-- Statistics script Complianz GDPR/CCPA -->
1343 + <script data-category="functional">
1344 + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1345 + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1346 + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1347 + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1348 +})(window,document,'script','dataLayer','');
1349 + </script>
1350 +
1351 +<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4ec0d0e0ca47c69',t:'MTc5MjcwOTMyMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1398 1352 </html>
1399 1353
1400 −<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me - Debug: cached@1786212477 -->
\ No newline at end of file
1354 +<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me - Debug: cached@1792703217 -->
\ No newline at end of file
added tests/fixtures/quartier_sila/583013ab934791e12e22.html +478 −0
Large diff (479 lines) is not loaded by default to keep the page fast.Load diff
added tests/fixtures/quartier_sila/5ec369bc965c9e219e6d.html +809 −0
Large diff (810 lines) is not loaded by default to keep the page fast.Load diff
deleted tests/fixtures/quartier_sila/786d2121e85ddfc67d9e.html +0 −1
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added tests/fixtures/quartier_sila/b1a0cf8d425a5b42b80a.html +809 −0
Large diff (810 lines) is not loaded by default to keep the page fast.Load diff
modified tests/fixtures/quartier_sila/expected.json +730 −954
Large diff (3,391 lines) is not loaded by default to keep the page fast.Load diff
modified tests/fixtures/quartier_sila/index.json +17 −3
Large diff (30 lines) is not loaded by default to keep the page fast.Load diff
Menu

Theme