PageSourceSearch

https://heartwisecardiology.com/

html heartwisecardiology.com collected 2026-10-08 20:39:00 UTC 261,984 bytes, 7,780 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3					<head>
4						<title>Murray Hill Cardiologist | Heart Specialist New York City | Cardiology Office Murray Hill NY</title>
5						<meta charset="utf-8">
6<meta name="viewport" content="width=device-width, initial-scale=1">
7<meta name="robots" content="index, follow">
8<meta property="og:title" content="Murray Hill Cardiologist | Heart Specialists New York City | Cardiology Office Murray Hill NY">
9<meta property="og:url" content="https://fakedomain.com/">
10<meta property="og:type" content="website">
11<meta property="og:description" content="Experience compassionate and personalized cardiovascular care at Heartwise Cardiology.  We offer advanced diagnostics & treatment for all your heart health needs.">
12<meta property="og:image" content="https://fakedomain.com/custom/images/logo.png">
13<meta http-equiv="expires" content="never">
14<meta http-equiv="cache-control" content="public">
15<link rel="preload" as="script" href="https://api.aleso.ai/aleso.js">
16<link rel="preload" as="script" href="/system/js/jquery-3.5.1.min.js">
17<script>
18	var javascript;
19	var javascript_deferred;
20
21	var js_id = 0;
22	var jsd_id = 0;
23
24	var viewport_size = 0;
25
26	javascript.load = [];
27	javascript_deferred.load = [];
28
29
30	function javascript() { };
31	function javascript_deferred() { };
32
33	function get_id() {
34		var uid = 'js_' + js_id;
35		javascript.load.push(uid);
36		js_id++;
37		return uid;
38	}
39
40	function get_deferred_id() {
41		var uid = 'jsd_' + jsd_id;
42		javascript_deferred.load.push(uid);
43		jsd_id++;
44		return uid;
45	}
46
47	// *** ADDED — Consent Mode v2 bootstrap ***
48	// Must run BEFORE the privacy IIFE installs its stubs.
49	// Uses the real gtag() function call (not raw array push) so that gtag.js
50	// registers consent state via its consent API — this is what makes hits
51	// report pscdl=granted/denied instead of pscdl=noapi.
52
53	var DI_CONSENT_MODE_V2 = (typeof window.DiConsentMode === 'boolean') ? window.DiConsentMode : true;
54
55	window.dataLayer = window.dataLayer || [];
56	window.gtag = function () { window.dataLayer.push(arguments); };
57
58	window.google_tracking = window.google_tracking || {};
59	window.google_tracking.gtag = window.gtag;
60
61	// Default: deny everything. Must be called before any Google tag loads.
62	window.gtag('consent', 'default', {
63		analytics_storage: 'denied',
64		ad_storage: 'denied',
65		ad_user_data: 'denied',
66		ad_personalization: 'denied',
67		wait_for_update: 500
68	});
69
70	// Returning visitor with stored consent: update immediately so GTM/GA
71	// initialize already knowing consent is granted.
72	(function () {
73		try {
74			var name = 'di_privacy_consent';
75			var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)'));
76			if (match && decodeURIComponent(match[1]) === 'granted') {
77				window.gtag('consent', 'update', {
78					analytics_storage: 'granted',
79					ad_storage: 'granted',
80					ad_user_data: 'granted',
81					ad_personalization: 'granted'
82				});
83			}
84		} catch (e) { }
85	})();
86	// *** END ADDED — Consent Mode v2 bootstrap ***
87
88
89	(function (window, document) {
90		'use strict';
91
92		/*
93			Privacy / Consent Tracking Controller
94
95			Purpose:
96			- Pending consent: hold known/curated tracking scripts and API calls.
97			- Accepted consent: release held tracking scripts/calls immediately.
98			- Rejected consent: discard held tracking scripts/calls.
99			- GPC / Do Not Track: always treat as denied.
100			- Unknown third-party scripts are not held client-side; they are controlled by the server-side CSP policy.
101
102			Important:
103			- This script intentionally distinguishes between:
104			  1) Non-essential trackers / analytics / pixels / session replay tools.
105			  2) Functional third-party services that are required for the site experience.
106			  3) Unknown third-party resources, which should be blocked by server-side CSP while consent is pending/denied.
107		*/
108
109		var CONSENT_KEY = 'di_privacy_consent';
110		var COOKIE_MAX_AGE = 60 * 60 * 24 * 180;
111
112		var heldScripts = [];
113		var heldCalls = [];
114		var heldSockets = [];
115
116		function _logBlocked() {
117			console.log.apply(console, arguments);
118		}
119
120		function detectGPC() {
121			try {
122				// Global Privacy Control, where supported.
123				if (navigator && typeof navigator.globalPrivacyControl !== 'undefined') {
124					if (navigator.globalPrivacyControl) return true;
125				}
126
127				if (window.matchMedia && window.matchMedia('(global-privacy-control: 1)').matches) {
128					return true;
129				}
130
131				// Legacy browser "Do Not Track" support.
132				var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
133				if (dnt === '1' || dnt === 'yes') {
134					return true;
135				}
136			} catch (e) { }
137
138			return false;
139		}
140
141		function getStoredConsent() {
142			try {
143				var name = CONSENT_KEY.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
144				var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)'));
145
146				if (!match) {
147					return null;
148				}
149
150				var v = decodeURIComponent(match[1]);
151
152				if (v === 'granted' || v === 'denied') {
153					return v;
154				}
155			} catch (e) { }
156
157			return null;
158		}
159
160		function setStoredConsent(v) {
161			if (v !== 'granted' && v !== 'denied') {
162				return;
163			}
164
165			/*
166				The consent cookie is the single source of truth.
167
168				It controls:
169				- Server-side CSP mode
170				- JavaScript consent state
171				- Whether the banner appears
172
173				When this cookie expires, consent returns to "pending" and the banner
174				will be shown again.
175			*/
176			try {
177				document.cookie =
178					CONSENT_KEY + '=' + encodeURIComponent(v) +
179					'; Path=/' +
180					'; Max-Age=' + COOKIE_MAX_AGE +
181					'; SameSite=Lax' +
182					(window.location.protocol === 'https:' ? '; Secure' : '');
183			} catch (e) { }
184		}
185
186		function clearStoredConsent() {
187			try {
188				document.cookie =
189					CONSENT_KEY + '=; Path=/; Max-Age=0; SameSite=Lax' +
190					(window.location.protocol === 'https:' ? '; Secure' : '');
191			} catch (e) { }
192		}
193
194		function clearLegacyStoredConsent() {
195			try {
196				localStorage.removeItem(CONSENT_KEY);
197			} catch (e) { }
198		}
199
200		clearLegacyStoredConsent();
201
202		var gpcEnabled = detectGPC();
203		var storedConsent = getStoredConsent();
204		var consent = storedConsent || null;
205
206		function getConsentState() {
207			if (gpcEnabled) return 'denied';
208			return consent || 'pending';
209		}
210
211		function trackingAllowed() {
212			return !gpcEnabled && consent === 'granted';
213		}
214
215		function shouldHold() {
216			return !gpcEnabled && getConsentState() === 'pending';
217		}
218
219		function shouldDrop() {
220			return gpcEnabled || getConsentState() === 'denied';
221		}
222
223		/*
224			Early static script guard.
225
226			This catches hard-coded parser-discovered 
226<script src="..."> tags that appear
227			later in the HTML, before the browser has a chance to execute them.
228
229			This is especially important for trackers added as normal static HTML tags,
230			such as Cloudflare Web Analytics / Browser Insights.
231
232			Note:
233			- This is not meant to replace CSP.
234			- CSP is still the hard server-side fallback.
235			- This guard exists so known static tracker scripts can be held/released
236			  on the same page after consent.
237		*/
238		var earlyStaticScriptPatterns = [
239			/static\.cloudflareinsights\.com\/beacon\.min\.js/i,
240			/js\.zi-scripts\.com\/zi-tag\.js/i
241		];
242
243		function earlyMatchesStaticScript(src) {
244			if (!src) return false;
245
246			var s = String(src);
247
248			for (var i = 0; i < earlyStaticScriptPatterns.length; i++) {
249				if (earlyStaticScriptPatterns[i].test(s)) {
250					return true;
251				}
252			}
253
254			return false;
255		}
256
257		function earlyCloneScriptForRelease(original) {
258			var clone = document.createElement('script');
259
260			for (var i = 0; i < original.attributes.length; i++) {
261				var attr = original.attributes[i];
262
263				try {
264					clone.setAttribute(attr.name, attr.value);
265				} catch (e) { }
266			}
267
268			return clone;
269		}
270
271		function earlyHoldStaticScript(script) {
272			if (!script || !script.src) return false;
273
274			var src = script.src;
275
276			if (!earlyMatchesStaticScript(src)) {
277				return false;
278			}
279
280			for (var i = 0; i < heldScripts.length; i++) {
281				if (heldScripts[i].src === src) {
282					return true;
283				}
284			}
285
286			if (shouldHold()) {
287				heldScripts.push({
288					src: src,
289					node: earlyCloneScriptForRelease(script),
290					parent: document.head || document.documentElement,
291					method: 'appendChild',
292					refNode: null
293				});
294
295				try {
296					if (script.parentNode) {
297						script.parentNode.removeChild(script);
298					}
299				} catch (e) { }
300
301				_logBlocked('[Privacy] Early-held static tracker script until consent →', src);
302				return true;
303			}
304
305			if (shouldDrop()) {
306				try {
307					if (script.parentNode) {
308						script.parentNode.removeChild(script);
309					}
310				} catch (e) { }
311
312				_logBlocked('[Privacy] Early-removed static tracker script →', src);
313				return true;
314			}
315
316			return false;
317		}
318
319		function installEarlyStaticScriptGuard() {
320			function scanExistingScriptsEarly() {
321				var scripts = document.querySelectorAll('script[src]');
322
323				for (var i = 0; i < scripts.length; i++) {
324					earlyHoldStaticScript(scripts[i]);
325				}
326			}
327
328			scanExistingScriptsEarly();
329
330			if (window.MutationObserver && document.documentElement) {
331				try {
332					var earlyObserver = new MutationObserver(function (mutations) {
333						for (var i = 0; i < mutations.length; i++) {
334							var added = mutations[i].addedNodes;
335
336							for (var j = 0; j < added.length; j++) {
337								var node = added[j];
338
339								if (node && node.tagName === 'SCRIPT') {
340									earlyHoldStaticScript(node);
341								}
342
343								if (node && node.querySelectorAll) {
344									var scripts = node.querySelectorAll('script[src]');
345
346									for (var k = 0; k < scripts.length; k++) {
347										earlyHoldStaticScript(scripts[k]);
348									}
349								}
350							}
351						}
352					});
353
354					earlyObserver.observe(document.documentElement, {
355						childList: true,
356						subtree: true
357					});
358				} catch (e) { }
359			}
360		}
361
362		installEarlyStaticScriptGuard();
363
364		/*
365			Beacon/network endpoints.
366
367			These are non-essential analytics, ads, attribution, session replay,
368			heatmap, call tracking, fingerprinting, and marketing automation endpoints.
369
370			While consent is pending or denied, requests matching these patterns are
371			blocked client-side. This prevents known trackers from sending data even if
372			a script tries to fire a fetch/XHR/sendBeacon/image beacon.
373		*/
374		var beaconPatterns = [
375
376			// Google Ads / AdSense / remarketing / conversion endpoints
377			/:\/\/ssl\.google-analytics\.com\//i,
378			/:\/\/stats\.g\.doubleclick\.net\//i,
379			/:\/\/www\.google\.com\/pagead\/1p-user-list/i,
380			/:\/\/www\.google\.com\/pagead\/conversion/i,
381			/:\/\/googleads\.g\.doubleclick\.net\//i,
382			/:\/\/pagead2\.googlesyndication\.com\//i,
383			/:\/\/www\.googlesyndication\.com\/pagead\//i,
384			/:\/\/www\.googleadservices\.com\/pagead\//i,
385			/:\/\/www\.google\.com\/pagead\//i,
386
387			// Meta / Facebook
388			/:\/\/www\.facebook\.com\/tr\?/i,
389			/:\/\/graph\.facebook\.com\/v\d+\.\d+\/events/i,
390
391			// TikTok
392			/:\/\/business\.tiktok\.com\/bt\//i,
393			/:\/\/s\.tiktok\.com\//i,
394
395			// Pinterest
396			/:\/\/log\.pinterest\.com\//i,
397			/:\/\/analytics\.pinterest\.com\//i,
398
399			// LinkedIn
400			/:\/\/px\.ads\.linkedin\.com/i,
401
402			// Snapchat
403			/:\/\/tr\.snapchat\.com\//i,
404
405			// Twitter / X
406			/:\/\/analytics\.twitter\.com\//i,
407			/:\/\/t\.co\/i\/collect/i,
408
409			// Reddit Ads
410			/:\/\/events\.redditmedia\.com\//i,
411			/:\/\/www\.redditstatic\.com\/ads\/pixel\.js/i,
412			/:\/\/alb\.reddit\.com\//i,
413
414			// Heatmaps / session replay / behavior tracking
415			/:\/\/static\.hotjar\.com\/c\/hotjar-/i,
416			/:\/\/track\.hotjar\.com\//i,
417			/:\/\/script\.crazyegg\.com\/pages\//i,
418			/:\/\/rs\.fullstory\.com/i,
419			/:\/\/api\.mouseflow\.com\//i,
420			/:\/\/www\.clarity\.ms\/collect/i,
421			/:\/\/tools\.luckyorange\.com\//i,
422
423			// Marketing automation / CRM / attribution
424			/:\/\/track\.hubspot\.com\//i,
425			/:\/\/api\.hsforms\.com\/submissions/i,
426			/:\/\/piwik\.pardot\.com\//i,
427			/:\/\/go\.pardot\.com\//i,
428			/:\/\/cdn\.segment\.com\/v1\/p\//i,
429			/:\/\/api\.mixpanel\.com\//i,
430			/:\/\/api\.amplitude\.com/i,
431			/:\/\/plausible\.io\/api\/event/i,
432			/:\/\/matomo\.cloud\/matomo\.php/i,
433			/:\/\/.*\/matomo\.php/i,
434			/:\/\/analytics\.liine\.com\//i,
435			/:\/\/instantleadcapture\.com\//i,
436			/:\/\/px\.premion\.com\//i,
437			/:\/\/js\.adsrvr\.org\//i,
438			/:\/\/cdn\.raek\.net\//i,
439			/:\/\/s1\.revenuewell\.com\//i,
440			/:\/\/diffuser-cdn\.app-us1\.com\//i,
441			/:\/\/chimpstatic\.com\//i,
442
443			// Fingerprinting-style endpoints or libraries.
444			/fingerprint/i,
445			/\.fpjs\.io/i,
446
447			// AdRoll
448			/:\/\/s\.adroll\.com\//i,
449			/:\/\/d\.adroll\.com\//i,
450			/:\/\/pixel\.adroll\.com\//i,
451
452			// ZoomInfo
453			/:\/\/ws\.zoominfo\.com\/pixel\//i,
454			/:\/\/ws\.zoominfo\.com\//i,
455
456			// VigLink / affiliate tracking
457			/:\/\/vigl\.us\//i,
458
459			// Trovo tag
460			/:\/\/tag\.trovo-tag\.com\//i,
461
462			// Programmatic adtech / cookie-sync / audience matching
463			/:\/\/x\.bidswitch\.net\/sync/i,
464			/:\/\/pixel\.tapad\.com\/idsync/i,
465			/:\/\/ml314\.com\/utsync\.ashx/i,
466			/:\/\/ps\.eyeota\.net\/match/i,
467			/:\/\/cm\.g\.doubleclick\.net\/pixel/i,
468			/:\/\/dsum-sec\.casalemedia\.com\/rum/i,
469			/:\/\/image2\.pubmatic\.com\/AdServer\/Pug/i,
470			/:\/\/pixel\.rubiconproject\.com\/tap\.php/i,
471			/:\/\/us-u\.openx\.net\/w\/1\.0\/sd/i,
472			/:\/\/sync\.outbrain\.com\/cookie-sync/i,
473			/:\/\/sync\.taboola\.com\//i,
474			/:\/\/eb2\.3lift\.com\/xuid/i,
475			/:\/\/ib\.adnxs\.com\/setuid/i,
476
477			// Patient Prism / call intelligence
478			/:\/\/next-api\.patientprism\.com\/v1\/snippet\//i,
479
480			// First-party legacy referral / page interaction tracking
481			// /:\/\/referrals\.di-api\.com\//i,
482
483			// Identity / ad targeting / profiling
484			/:\/\/pro\.ip-api\.com\/json\//i,
485			/:\/\/alocdn\.com\/.*\/xtarget\/p\.json/i,
486			/:\/\/tag\.link-url\.io\//i,
487			/:\/\/idx\.liadm\.com\//i,
488
489			// Cloudflare Web Analytics / Browser Insights
490			/:\/\/static\.cloudflareinsights\.com\/beacon/i,
491			/:\/\/cloudflareinsights\.com\//i,
492
493			// Additional tracker / analytics / adtech beacon endpoints
494			/:\/\/dni\.logmycalls\.com\//i,
495			/:\/\/insight\.adsrvr\.org\//i,
496			/:\/\/bat\.bing\.com\//i,
497			/:\/\/settings\.luckyorange\.com\//i,
498			/:\/\/app\.operadds\.com\//i,
499			/:\/\/js\.zi-scripts\.com\//i,
500			/:\/\/analytics-[0-9]+\.kxcdn\.com\//i,
501			/:\/\/alice\.liine\.com\//i,
502			/:\/\/data\.hockeystack\.com\/send/i,
503			/:\/\/jelly\.mdhv\.io\//i,
504			/:\/\/tag\.simpli\.fi\//i,
505			/:\/\/i\.simpli\.fi\/p/i,
506			/:\/\/um\.simpli\.fi\//i,
507			/:\/\/www\.redditstatic\.com\/ads\/pixel\.js/i,
508			/:\/\/dni\.logmycalls\.com\//i,
509			/:\/\/a\.usbrowserspeed\.com\/cs/i,
510			/:\/\/.*\.usbrowserspeed\.com\/cs/i,
511
512			// Pendo product analytics
513			/:\/\/cdn\.pendo\.io\//i,
514			/:\/\/data\.pendo\.io\//i,
515			/:\/\/app\.pendo\.io\//i,
516
517			// Piwik PRO analytics / tag manager
518			/:\/\/.*\.piwik\.pro\//i,
519
520			// Leadpages analytics
521			/:\/\/api\.leadpages\.io\/analytics\//i,
522
523			// BrandCDN / conversion pixel
524			/:\/\/adservices\.brandcdn\.com\/pixel\//i,
525
526			// LiveRamp / identity sync
527			/:\/\/idsync\.rlcdn\.com\//i,
528
529			// Kissmetrics analytics
530			/:\/\/i\.kissmetrics\.io\//i,
531			/:\/\/scripts\.kissmetrics\.io\//i,
532			/:\/\/trk\.kissmetrics\.io\//i,
533			/:\/\/et\.kissmetrics\.io\//i,
534
535			// RLETS / call tracking / attribution storage iframe
536			/:\/\/[^\/]+\.rlets\.com\/static\/storage\.html/i,
537
538			// ReachLocal / LocaliQ capture, attribution, geolocation enrichment
539			/:\/\/capture-api\.reachlocalservices\.com\//i,
540
541			// EXTENDED LIST ---
542			// Scheduling / booking widgets
543			/:\/\/[^\/]*calendly\.com\//i,
544			/:\/\/assets\.calendly\.com\//i,
545			/:\/\/[^\/]*localmed\.com\//i,
546			/:\/\/frontend\.assets\.nexhealth\.com\//i,
547			/:\/\/schedule\.jarvisanalytics\.com\//i,
548			/:\/\/embed\.acuityscheduling\.com\//i,
549			/:\/\/cdn\.timetrade\.com\//i,
550			/:\/\/book\.getweave\.com\//i,
551			/:\/\/book2\.getweave\.com\//i,
552			/:\/\/book\.gke1-west3\.wsf-prod-1\.wstack\.net\//i,
553			/:\/\/nextgen\.clixondental\.com\//i,
554			/:\/\/olb\.saloniris\.com\//i,
555			/:\/\/plugin\.mysalononline\.com\//i,
556
557			// Zocdoc
558			/:\/\/api\.zocdoc\.com\//i,
559			/:\/\/api2\.zocdoc\.com\//i,
560			/:\/\/bob\.zocdoc\.com\//i,
561			/:\/\/static\.zocdoc\.com\//i,
562			/:\/\/www\.zocdoc\.com\//i,
563			/:\/\/book\.zocdoc\.com\//i,
564			/:\/\/offsiteschedule\.zocdoc\.com\//i,
565			/:\/\/[^\/]+\.zocdoc\.com\//i,
566
567			// Chat / chatbot / AI assistant widgets
568			/:\/\/connect\.podium\.com\//i,
569			/:\/\/platform\.swellcx\.com\//i,
570			/:\/\/cdn\.apigateway\.co\//i,
571			/:\/\/chat\.gocloudgain\.com\//i,
572			/:\/\/chat\.dentina\.ai\//i,
573			/:\/\/static\.ai\.getdeardoc\.com\//i,
574			/:\/\/chat\.getdeardoc\.com\//i,
575			/:\/\/api\.chat\.getdeardoc\.com\//i,
576			/:\/\/app\.dasconsultantsusa\.com\//i,
577			/:\/\/server\.dasconsultantsusa\.com\//i,
578			/:\/\/app\.purechat\.com\//i,
579			/:\/\/widgetapi\.purechat\.com\//i,
580			/:\/\/[^\/]*botsrv\.com\//i,
581			/:\/\/botsrv2\.com\//i,
582			/:\/\/static\.botsrv2\.com\//i,
583			/:\/\/app\.botsify\.com\//i,
584			/:\/\/widget\.botsify\.com\//i,
585			/:\/\/embed\.tawk\.to\//i,
586			/:\/\/static-v\.tawk\.to\//i,
587			/:\/\/va\.tawk\.to\//i,
588			/:\/\/[^\/]+\.tawk\.to\//i,
589			/:\/\/[^\/]*formilla\.com\//i,
590			/:\/\/widgets\.leadconnectorhq\.com\//i,
591			/:\/\/services\.leadconnectorhq\.com\//i,
592			/:\/\/services\.msgsndr\.com\//i,
593			/:\/\/app\.chatsupport\.co\//i,
594			/:\/\/[^\/]*truelark\.com\//i,
595			/:\/\/ops\.truelark\.com\//i,
596			/:\/\/[^\/]*247aireceptionist\.com\//i,
597			/:\/\/code\.jivosite\.com\//i,
598			/:\/\/[^\/]+\.jivosite\.com\//i,
599			/:\/\/api\.livechatinc\.com\//i,
600			/:\/\/cdn\.livechatinc\.com\//i,
601			/:\/\/[^\/]+\.livechatinc\.com\//i,
602			/:\/\/chat\.doctorsinternet\.com\/web-bot\//i,
603
604			// Forms / lead capture / embedded form systems
605			/:\/\/webform\.adit\.com\//i,
606			/:\/\/embed\.lpcontent\.net\//i,
607			/:\/\/api\.leadpages\.io\//i,
608			/:\/\/app-widgets\.jotform\.io\//i,
609			/:\/\/widgets\.jotform\.io\//i,
610			/:\/\/forms\.liine\.com\//i,
611			/:\/\/dim\.dentalimplantmachine\.co\//i,
612			/:\/\/[^\/]+\.kit\.com\//i,
613			/:\/\/[^\/]+\.ck\.page\//i,
614			/:\/\/[^\/]*convertkit\.com\//i,
615			/:\/\/app\.convertkit\.com\//i,
616			/:\/\/f\.convertkit\.com\//i,
617			/:\/\/api\.hsforms\.com\//i,
618			/:\/\/forms\.hsforms\.com\//i,
619			/:\/\/js\.hsforms\.net\//i,
620
621			// Reviews / reputation / social proof widgets
622			/:\/\/go\.doctorsinternet\.com\//i,
623			/:\/\/go\.pimm-usa\.com\//i,
624			/:\/\/widgets-v7\.birdeye\.com\//i,
625			/:\/\/webchat\.birdeye\.com\//i,
626			/:\/\/widget-v7-cdn\.birdeye\.com\//i,
627			/:\/\/[^\/]*birdeye\.com\//i,
628			/:\/\/widgets\.revue\.us\//i,
629			/:\/\/widgets\.thereviewsplace\.com\//i,
630			/:\/\/assets\.thereviewsplace\.com\//i,
631			/:\/\/api\.thereviewsplace\.com\//i,
632			/:\/\/providers\.doctor\.com\//i,
633			/:\/\/app\.operadds\.com\//i,
634			/:\/\/reviewsonmywebsite\.com\//i,
635			/:\/\/localimpact\.com\//i,
636			/:\/\/local\.demandforce\.com\//i,
637			/:\/\/www\.demandforced3\.com\//i,
638			/:\/\/[^\/]*elfsight\.com\//i,
639			/:\/\/[^\/]*elfsightcdn\.com\//i,
640
641			// Social widgets / embeds
642			/:\/\/www\.instagram\.com\//i,
643			/:\/\/www\.tiktok\.com\//i,
644			/:\/\/lf16-tiktok-web\.tiktokcdn-us\.com\//i,
645			/:\/\/www\.facebook\.com\/plugins\//i,
646			/:\/\/widgets\.pinterest\.com\//i,
647			/:\/\/www\.yelp\.com\//i,
648
649			// Financing / payment / membership widgets
650			/:\/\/files\.withcherry\.com\//i,
651			/:\/\/gql\.withcherry\.com\//i,
652			/:\/\/master-cherry-storage\.s3\.us-west-2\.amazonaws\.com\//i,
653			/:\/\/member\.kleer\.com\//i,
654			/:\/\/member\.clerri\.com\//i,
655			/:\/\/checkout\.staxpayments\.com\//i,
656			/:\/\/goblueswipe\.transactiongateway\.com\//i,
657			/:\/\/secure\.networkmerchants\.com\//i,
658			/:\/\/apply\.sunbit\.com\//i,
659			/:\/\/www\.paypal\.com\//i,
660			/:\/\/www\.paypalobjects\.com\//i,
661			/:\/\/www\.carecredit\.com\//i,
662
663			// Patient / health / practice widgets that may create sessions or lead context
664			/:\/\/patient\.phreesia\.com\//i,
665			/:\/\/patient\.klara\.com\//i,
666			/:\/\/widget\.klara\.com\//i,
667			/:\/\/patient-api\.speareducation\.com\//i,
668			/:\/\/api\.modento\.io\//i,
669			/:\/\/app\.neuralityhealth\.ai\//i,
670			/:\/\/www\.smilevirtual\.com\//i,
671			/:\/\/[^\/]*doctible\.com\//i,
672			/:\/\/[^\/]*yapiapp\.io\//i,
673
674			// Intake / scheduling / patient forms
675			/:\/\/[^\/]*intakeq\.com\//i,
676			/:\/\/app\.prod\.intelibly\.com\//i,
677			/:\/\/app\.intelibly\.com\//i,
678			/:\/\/sc-widget\.prod\.intelibly\.com\//i,
679			/:\/\/clients-cdn\.pplpractice\.com\//i,
680			/:\/\/webrefillplugin\.bestrxconnect\.com\//i,
681			/:\/\/view\.implantsmiles\.co\//i,
682
683			// Simplifeye / patient communication
684			/:\/\/embed\.simplifeye\.co\//i,
685			/:\/\/api\.simplifeye\.co\//i,
686
687			// AI chat / chatbot / web assistant widgets
688			/:\/\/aichatbotweb\.revenuewell\.com\//i,
689			/:\/\/[^\/]+\.web-assistant\.tensorlinks\.app\//i,
690			/:\/\/[^\/]*tensorlinks\.app\//i,
691			/:\/\/api\.heygent\.ai\//i,
692			/:\/\/lexicon-prod\.apigateway\.co\//i,
693			/:\/\/conversation-prod\.apigateway\.co\//i,
694			/:\/\/widget\.osam\.one\//i,
695
696			// Local marketing / lead widgets
697			/:\/\/www\.localmarketingmanager\.com\//i,
698			/:\/\/[^\/]*localmarketingmanager\.com\//i,
699
700			// Health / patient commerce / referral widgets
701			/:\/\/assets\.fullscript\.com\//i,
702			/:\/\/www\.opencare\.com\//i,
703			/:\/\/[^\/]*opencare\.com\//i
704			// END EXTENDED LIST ---
705		];
706
707		if (!DI_CONSENT_MODE_V2) {
708			beaconPatterns.push(
709				/:\/\/www\.google-analytics\.com\/collect/i,
710				/:\/\/www\.google-analytics\.com\/g\/collect/i,
711				/:\/\/www\.googletagmanager\.com\/collect/i,
712				/:\/\/region1\.google-analytics\.com\/g\/collect/i,
713				/:\/\/region2\.google-analytics\.com\/g\/collect/i,
714				/:\/\/analytics\.google\.com\/g\/collect/i
715			);
716		}
717		/*
718			Script loader patterns.
719
720			These are known non-essential tracker scripts. While consent is pending,
721			the script is held instead of loaded. If consent is accepted, held scripts
722			are released on the same page. If consent is denied, held scripts are discarded.
723		*/
724		var blockUrls = [
725
726			// Google Ads / AdSense / remarketing scripts
727			/google\.com\/pagead\/tag\/js/i,
728			/googleads\.g\.doubleclick\.net\//i,
729			/pagead2\.googlesyndication\.com\//i,
730			/pagead2\.googlesyndication\.com\/pagead\//i,
731			/www\.googlesyndication\.com\/pagead\//i,
732			/www\.googleadservices\.com\/pagead\//i,
733
734			// Meta / Facebook
735			/connect\.facebook\.net\/.*\/fbevents\.js/i,
736			/facebook\.com\/tr\/?/i,
737
738			// TikTok
739			/business\.tiktok\.com\/widget/i,
740			/s\.tiktok\.com\//i,
741			/analytics\.tiktok\.com\/i18n\/pixel\/events\.js/i,
742
743			// LinkedIn
744			/snap\.licdn\.com\/li\.js/i,
745			/snap\.licdn\.com\/li\.lms-analytics\/insight\.min\.js/i,
746
747			// Twitter / X
748			/static\.ads-twitter\.com\/uwt\.js/i,
749
750			// Pinterest
751			/assets\.pinterest\.com\/js\/pinit\.js/i,
752
753			// Snapchat
754			/sc-static\.net\/connect\.js/i,
755
756			// Heatmaps / session replay / user behavior analytics
757			/static\.hotjar\.com\/c\/hotjar-/i,
758			/tools\.luckyorange\.com\/core\/lo\.js/i,
759			/fullstory\.com\/s\/fs\.js/i,
760			/clarity\.ms\/tag/i,
761			/script\.crazyegg\.com\/pages\//i,
762			/mouseflow\.com\/projects\//i,
763
764			// Analytics / CDP / product analytics
765			/cdn\.mixpanel\.com\/lib/i,
766			/cdn\.amplitude\.com\/js/i,
767			/cdn\.segment\.com\/analytics/i,
768			/plausible\.io\/js\/script/i,
769
770			// Call tracking / DNI / lead capture / attribution
771			/tctm\.co\/t\.js/i,
772			/appcontent\.practicenumbers\.com\/phone_number_replace_/i,
773			/cdn\.callrail\.com\/companies\/.+\/swap\.js/i,
774			/cdn\.calltrk\.com\/companies\/.+\/swap\.js/i,
775			/cdn\.rlets\.com\/capture_configs\//i,
776			/analytics\.liine\.com\/v1\/bootstrapped/i,
777			/instantleadcapture\.com\/px\.min\.js/i,
778			/js\.adsrvr\.org\/up_loader/i,
779			/px\.premion\.com\/pixel\.js/i,
780
781			// Anti-fraud / visitor ID / attribution-style scripts
782			/www\.clickcease\.com\/monitor\/.+\.js/i,
783			/cdn\.raek\.net\/js\/raek\.min\.js/i,
784			/hockeystack(@latest)?\/hockeystack\.min\.js/i,
785
786			// Chat/CX scripts that include explicit tracking behavior.
787			/cdn\.livechatinc\.com\/tracking\.js/i,
788			/static\.mobilemonkey\.com\/js\/business_/i,
789			/static\.zdassets\.com\/ekr\/snippet\.js/i,
790			/platform\.swellcx\.com\/widget\/js\/chat\.js/i,
791			/cdn\.apigateway\.co\/webchat-client/i,
792
793			// Marketing automation / email / CRM
794			/js\.hubspot\.com\/analytics/i,
795			/js\.hs-scripts\.com\/\d+\.js/i,
796			/js\.hsforms\.net\/forms\/embed\/v2\.js/i,
797			/chimpstatic\.com\/mcjs-connected\/js\//i,
798			/diffuser-cdn\.app-us1\.com\/diffuser\/diffuser\.js/i,
799			/tag\.brandcdn\.com\/autoscript\//i,
800			/tag\.validate\.audio\/validate\.js/i,
801			/s1\.revenuewell\.com\/scripts\/js-api\.js/i,
802
803			// BrandCDN conversion pixel script
804			/adservices\.brandcdn\.com\/pixel\/cv_pixel\.js/i,
805
806			// AdRoll
807			/s\.adroll\.com\/j\/[^\/]+\/roundtrip\.js/i,
808
809			// ZoomInfo pixel
810			/ws\.zoominfo\.com\/pixel\//i,
811
812			// Trovo tag iframe/script
813			/tag\.trovo-tag\.com\//i,
814
815			// Patient Prism / call intelligence
816			/next-api\.patientprism\.com\/v1\/snippet\//i,
817
818			// Cloudflare Web Analytics / Browser Insights
819			/static\.cloudflareinsights\.com\/beacon\.min\.js/i,
820
821			// Additional tracker scripts
822			/dni\.logmycalls\.com\/dni\.js/i,
823			/insight\.adsrvr\.org\//i,
824			/bat\.bing\.com\/bat\.js/i,
825			/settings\.luckyorange\.com\//i,
826			/app\.operadds\.com\//i,
827			/js\.zi-scripts\.com\/zi-tag\.js/i,
828			/analytics-[0-9]+\.kxcdn\.com\/analytics\.js/i,
829			/tag\.simpli\.fi\//i,
830			/i\.simpli\.fi\/p/i,
831			/www\.redditstatic\.com\/ads\/pixel\.js/i,
832			/dni\.logmycalls\.com\/dni\.js/i,
833
834			// Pendo product analytics
835			/cdn\.pendo\.io\/agent\/static\/[^\/]+\/pendo\.js/i,
836
837			// Piwik PRO container / analytics
838			/containers\.piwik\.pro\/[^\/]+\.js/i,
839
840			// Kissmetrics analytics scripts
841			/i\.kissmetrics\.io\/i\.js/i,
842			/scripts\.kissmetrics\.io\/.*\.js/i,
843
844			// EXTENDED LIST ---
845			// Scheduling / booking widgets
846			/calendly\.com/i,
847			/assets\.calendly\.com/i,
848			/localmed\.com/i,
849			/frontend\.assets\.nexhealth\.com/i,
850			/schedule\.jarvisanalytics\.com/i,
851			/embed\.acuityscheduling\.com/i,
852			/cdn\.timetrade\.com/i,
853			/book\.getweave\.com/i,
854			/book2\.getweave\.com/i,
855			/book\.gke1-west3\.wsf-prod-1\.wstack\.net/i,
856			/nextgen\.clixondental\.com/i,
857			/olb\.saloniris\.com/i,
858			/plugin\.mysalononline\.com/i,
859
860			// Zocdoc
861			/zocdoc\.com/i,
862			/zocdocstatic\.com/i,
863			/static\.zocdoc\.com/i,
864			/offsiteschedule\.zocdoc\.com/i,
865			/book\.zocdoc\.com/i,
866
867			// Chat / chatbot / AI assistant widgets
868			/connect\.podium\.com/i,
869			/platform\.swellcx\.com/i,
870			/cdn\.apigateway\.co/i,
871			/chat\.gocloudgain\.com/i,
872			/chat\.dentina\.ai/i,
873			/static\.ai\.getdeardoc\.com/i,
874			/chat\.getdeardoc\.com/i,
875			/api\.chat\.getdeardoc\.com/i,
876			/app\.dasconsultantsusa\.com/i,
877			/server\.dasconsultantsusa\.com/i,
878			/app\.purechat\.com/i,
879			/widgetapi\.purechat\.com/i,
880			/botsrv\.com/i,
881			/botsrv2\.com/i,
882			/static\.botsrv2\.com/i,
883			/app\.botsify\.com/i,
884			/widget\.botsify\.com/i,
885			/embed\.tawk\.to/i,
886			/static-v\.tawk\.to/i,
887			/va\.tawk\.to/i,
888			/formilla\.com/i,
889			/widgets\.leadconnectorhq\.com/i,
890			/services\.leadconnectorhq\.com/i,
891			/services\.msgsndr\.com/i,
892			/app\.chatsupport\.co/i,
893			/truelark\.com/i,
894			/ops\.truelark\.com/i,
895			/247aireceptionist\.com/i,
896			/code\.jivosite\.com/i,
897			/jivosite\.com/i,
898			/api\.livechatinc\.com/i,
899			/cdn\.livechatinc\.com/i,
900			/chat\.doctorsinternet\.com/i,
901
902			// Forms / lead capture / embedded form systems
903			/webform\.adit\.com/i,
904			/embed\.lpcontent\.net/i,
905			/api\.leadpages\.io/i,
906			/app-widgets\.jotform\.io/i,
907			/widgets\.jotform\.io/i,
908			/forms\.liine\.com/i,
909			/dim\.dentalimplantmachine\.co/i,
910			/kit\.com/i,
911			/ck\.page/i,
912			/convertkit\.com/i,
913			/app\.convertkit\.com/i,
914			/f\.convertkit\.com/i,
915			/api\.hsforms\.com/i,
916			/forms\.hsforms\.com/i,
917			/js\.hsforms\.net/i,
918
919			// Reviews / reputation / social proof widgets
920			/go\.doctorsinternet\.com/i,
921			/go\.pimm-usa\.com/i,
922			/widgets-v7\.birdeye\.com/i,
923			/webchat\.birdeye\.com/i,
924			/widget-v7-cdn\.birdeye\.com/i,
925			/birdeye\.com/i,
926			/widgets\.revue\.us/i,
927			/widgets\.thereviewsplace\.com/i,
928			/assets\.thereviewsplace\.com/i,
929			/api\.thereviewsplace\.com/i,
930			/providers\.doctor\.com/i,
931			/app\.operadds\.com/i,
932			/reviewsonmywebsite\.com/i,
933			/localimpact\.com/i,
934			/local\.demandforce\.com/i,
935			/demandforced3\.com/i,
936			/elfsight\.com/i,
937			/elfsightcdn\.com/i,
938
939			// Social widgets / embeds
940			/instagram\.com/i,
941			/tiktok\.com/i,
942			/lf16-tiktok-web\.tiktokcdn-us\.com/i,
943			/facebook\.com\/plugins/i,
944			/widgets\.pinterest\.com/i,
945			/www\.yelp\.com/i,
946
947			// Financing / payment / membership widgets
948			/files\.withcherry\.com/i,
949			/gql\.withcherry\.com/i,
950			/master-cherry-storage\.s3\.us-west-2\.amazonaws\.com/i,
951			/member\.kleer\.com/i,
952			/member\.clerri\.com/i,
953			/checkout\.staxpayments\.com/i,
954			/goblueswipe\.transactiongateway\.com/i,
955			/secure\.networkmerchants\.com/i,
956			/apply\.sunbit\.com/i,
957			/www\.paypal\.com/i,
958			/www\.paypalobjects\.com/i,
959			/www\.carecredit\.com/i,
960
961			// Patient / health / practice widgets that may create sessions or lead context
962			/patient\.phreesia\.com/i,
963			/patient\.klara\.com/i,
964			/widget\.klara\.com/i,
965			/patient-api\.speareducation\.com/i,
966			/api\.modento\.io/i,
967			/app\.neuralityhealth\.ai/i,
968			/www\.smilevirtual\.com/i,
969			/doctible\.com/i,
970			/yapiapp\.io/i,
971
972			// Intake / scheduling / patient forms
973			/intakeq\.com/i,
974			/app\.prod\.intelibly\.com/i,
975			/app\.intelibly\.com/i,
976			/sc-widget\.prod\.intelibly\.com/i,
977			/clients-cdn\.pplpractice\.com/i,
978			/webrefillplugin\.bestrxconnect\.com/i,
979			/view\.implantsmiles\.co/i,
980
981			// Simplifeye / patient communication
982			/embed\.simplifeye\.co/i,
983			/api\.simplifeye\.co/i,
984
985			// AI chat / chatbot / web assistant widgets
986			/aichatbotweb\.revenuewell\.com/i,
987			/web-assistant\.tensorlinks\.app/i,
988			/tensorlinks\.app/i,
989			/api\.heygent\.ai/i,
990			/lexicon-prod\.apigateway\.co/i,
991			/conversation-prod\.apigateway\.co/i,
992			/widget\.osam\.one/i,
993
994			// Local marketing / lead widgets
995			/www\.localmarketingmanager\.com/i,
996			/localmarketingmanager\.com/i,
997
998			// Health / patient commerce / referral widgets
999			/assets\.fullscript\.com/i,
1000			/www\.opencare\.com/i,
1001			/opencare\.com/i
1002			// END EXTENDED LIST ---
1003		];
1004
1005
1006		if (!DI_CONSENT_MODE_V2) {
1007			blockUrls.push(
1008				/googletagmanager\.com\/gtag\/js/i,
1009				/googletagmanager\.com\/gtm\.js/i
1010			);
1011		}
1012
1013		/*
1014			First-party analytics websocket.
1015		*/
1016		var socketPatterns = [
1017			// /^wss:\/\/socket\.di-api\.com\/analytics/i
1018		];
1019
1020		function matchesPattern(url, patterns) {
1021			if (!url) return false;
1022
1023			var s = String(url);
1024
1025			return patterns.some(function (r) {
1026				return r.test(s);
1027			});
1028		}
1029
1030		function shouldBlockUrl(url) {
1031			return matchesPattern(url, beaconPatterns);
1032		}
1033
1034		function shouldBlockScript(url) {
1035			return matchesPattern(url, blockUrls);
1036		}
1037
1038		function shouldHoldSocket(url) {
1039			return matchesPattern(url, socketPatterns);
1040		}
1041
1042		function holdScript(src, node, parent, method, refNode) {
1043			if (!src) return;
1044
1045			for (var i = 0; i < heldScripts.length; i++) {
1046				if (heldScripts[i].src === src) return;
1047			}
1048
1049			heldScripts.push({
1050				src: src,
1051				node: node || null,
1052				parent: parent || null,
1053				method: method || 'appendChild',
1054				refNode: refNode || null
1055			});
1056
1057			_logBlocked('[Privacy] Held tracker script until consent →', src);
1058		}
1059
1060		function holdCall(type, args) {
1061			heldCalls.push({
1062				type: type,
1063				args: Array.prototype.slice.call(args)
1064			});
1065
1066			_logBlocked('[Privacy] Held tracker call until consent →', type);
1067		}
1068
1069		function holdSocket(url, protocols) {
1070			for (var i = 0; i < heldSockets.length; i++) {
1071				if (heldSockets[i].url === url) return;
1072			}
1073
1074			heldSockets.push({
1075				url: url,
1076				protocols: protocols
1077			});
1078
1079			_logBlocked('[Privacy] Held analytics WebSocket until consent →', url);
1080		}
1081
1082		function blockOrHoldScript(src, node, parent, method, refNode) {
1083			if (!shouldBlockScript(src)) return false;
1084
1085			if (shouldHold()) {
1086				holdScript(src, node, parent, method, refNode);
1087				return true;
1088			}
1089
1090			if (shouldDrop()) {
1091				_logBlocked('[Privacy] Blocked tracker script →', src);
1092				return true;
1093			}
1094
1095			return false;
1096		}
1097
1098		function blockOrHoldCall(type, args) {
1099			if (trackingAllowed()) return false;
1100
1101			if (shouldHold()) {
1102				holdCall(type, args);
1103				return true;
1104			}
1105
1106			if (shouldDrop()) {
1107				_logBlocked('[Privacy] Blocked tracker call →', type);
1108				return true;
1109			}
1110
1111			return false;
1112		}
1113
1114		var origCreateElement = document.createElement;
1115		var proto = Element.prototype;
1116		var origAppend = proto.appendChild;
1117		var origInsert = proto.insertBefore;
1118		var origAppendMethod = proto.append;
1119		var origPrependMethod = proto.prepend;
1120		var OrigWebSocket = window.WebSocket || null;
1121
1122		function cloneScriptForRelease(original) {
1123			var clone = origCreateElement.call(document, 'script');
1124
1125			for (var i = 0; i < original.attributes.length; i++) {
1126				var attr = original.attributes[i];
1127
1128				if (attr.name === 'src') {
1129					continue;
1130				}
1131
1132				try {
1133					clone.setAttribute(attr.name, attr.value);
1134				} catch (e) { }
1135			}
1136
1137			clone.src = original.src;
1138
1139			return clone;
1140		}
1141
1142		function holdStaticScriptTag(script) {
1143			if (!script || !script.src) return false;
1144
1145			var src = script.src;
1146
1147			if (!shouldBlockScript(src)) {
1148				return false;
1149			}
1150
1151			for (var i = 0; i < heldScripts.length; i++) {
1152				if (heldScripts[i].src === src) {
1153					return true;
1154				}
1155			}
1156
1157			if (shouldHold()) {
1158				heldScripts.push({
1159					src: src,
1160					node: cloneScriptForRelease(script),
1161					parent: document.head || document.documentElement,
1162					method: 'appendChild',
1163					refNode: null
1164				});
1165
1166				try {
1167					if (script.parentNode) {
1168						script.parentNode.removeChild(script);
1169					}
1170				} catch (e) { }
1171
1172				_logBlocked('[Privacy] Held static tracker script until consent →', src);
1173				return true;
1174			}
1175
1176			if (shouldDrop()) {
1177				try {
1178					if (script.parentNode) {
1179						script.parentNode.removeChild(script);
1180					}
1181				} catch (e) { }
1182
1183				_logBlocked('[Privacy] Removed static tracker script →', src);
1184				return true;
1185			}
1186
1187			return false;
1188		}
1189
1190		function scanStaticTrackerScripts() {
1191			var scripts = document.querySelectorAll('script[src]');
1192
1193			for (var i = 0; i < scripts.length; i++) {
1194				holdStaticScriptTag(scripts[i]);
1195			}
1196		}
1197
1198		function restoreDataLayerPush() {
1199			window.dataLayer = window.dataLayer || [];
1200
1201			try {
1202				window.dataLayer.push = Array.prototype.push;
1203			} catch (e) { }
1204		}
1205
1206		function releaseHeldScripts() {
1207			var scripts = heldScripts.slice();
1208			heldScripts = [];
1209
1210			for (var i = 0; i < scripts.length; i++) {
1211				var item = scripts[i];
1212
1213				try {
1214					var node = item.node;
1215
1216					if (!node) {
1217						node = origCreateElement.call(document, 'script');
1218						node.src = item.src;
1219						node.async = true;
1220					}
1221
1222					if (item.method === 'insertBefore' && item.parent && item.refNode) {
1223						origInsert.call(item.parent, node, item.refNode);
1224					} else if (item.parent) {
1225						origAppend.call(item.parent, node);
1226					} else {
1227						origAppend.call(document.head || document.documentElement, node);
1228					}
1229
1230					_logBlocked('[Privacy] Released tracker script after consent →', item.src);
1231				} catch (e) {
1232					_logBlocked('[Privacy] Failed to release tracker script →', item.src, e);
1233				}
1234			}
1235		}
1236
1237		function releaseHeldSockets() {
1238			var sockets = heldSockets.slice();
1239			heldSockets = [];
1240
1241			if (!OrigWebSocket) return;
1242
1243			for (var i = 0; i < sockets.length; i++) {
1244				try {
1245					if (sockets[i].protocols !== undefined) {
1246						new OrigWebSocket(sockets[i].url, sockets[i].protocols);
1247					} else {
1248						new OrigWebSocket(sockets[i].url);
1249					}
1250
1251					_logBlocked('[Privacy] Released analytics WebSocket after consent →', sockets[i].url);
1252				} catch (e) {
1253					_logBlocked('[Privacy] Failed to release analytics WebSocket →', sockets[i].url, e);
1254				}
1255			}
1256		}
1257
1258		function replayHeldCalls() {
1259			var calls = heldCalls.slice();
1260			heldCalls = [];
1261
1262			restoreDataLayerPush();
1263
1264			for (var i = 0; i < calls.length; i++) {
1265				var item = calls[i];
1266
1267				try {
1268					if (item.type === 'dataLayer.push') {
1269						Array.prototype.push.apply(window.dataLayer, item.args);
1270						continue;
1271					}
1272
1273					if (item.type === 'gtag' || item.type === 'google_tracking.gtag') {
1274						window.dataLayer = window.dataLayer || [];
1275						Array.prototype.push.call(window.dataLayer, item.args);
1276						continue;
1277					}
1278
1279					if ((item.type === 'fbq' || item.type === 'facebook_tracking.fbq') && typeof window.fbq === 'function') {
1280						window.fbq.apply(window, item.args);
1281						continue;
1282					}
1283
1284					if (item.type === 'analytics.track' && window.analytics && typeof window.analytics.track === 'function') {
1285						window.analytics.track.apply(window.analytics, item.args);
1286						continue;
1287					}
1288
1289					if (item.type === 'analytics.identify' && window.analytics && typeof window.analytics.identify === 'function') {
1290						window.analytics.identify.apply(window.analytics, item.args);
1291						continue;
1292					}
1293
1294					if (item.type === 'analytics.page' && window.analytics && typeof window.analytics.page === 'function') {
1295						window.analytics.page.apply(window.analytics, item.args);
1296						continue;
1297					}
1298
1299					if (item.type === 'mixpanel.track' && window.mixpanel && typeof window.mixpanel.track === 'function') {
1300						window.mixpanel.track.apply(window.mixpanel, item.args);
1301						continue;
1302					}
1303
1304					if (item.type === 'amplitude.logEvent' && window.amplitude && typeof window.amplitude.logEvent === 'function') {
1305						window.amplitude.logEvent.apply(window.amplitude, item.args);
1306						continue;
1307					}
1308
1309					if (item.type === 'plausible' && typeof window.plausible === 'function') {
1310						window.plausible.apply(window, item.args);
1311						continue;
1312					}
1313				} catch (e) {
1314					_logBlocked('[Privacy] Failed to replay tracker call →', item.type, e);
1315				}
1316			}
1317		}
1318
1319		function acceptTracking() {
1320			if (gpcEnabled) {
1321				_logBlocked('[Privacy] Consent grant ignored because GPC/DNT is enabled.');
1322				return;
1323			}
1324
1325			consent = 'granted';
1326			setStoredConsent('granted');
1327
1328			// *** ADDED — Consent Mode v2 update signal ***
1329			// Use the real gtag() function (defined before the IIFE) so gtag.js
1330			// registers consent via its API. Must fire before releaseHeldScripts
1331			// so GA loads already knowing consent is granted.
1332			try {
1333				if (typeof window.gtag === 'function') {
1334					console.log('[Privacy] Updating Consent Mode v2 signals for granted consent.');
1335					window.gtag('consent', 'update', {
1336						analytics_storage: 'granted',
1337						ad_storage: 'granted',
1338						ad_user_data: 'granted',
1339						ad_personalization: 'granted'
1340					});
1341				}
1342			} catch (e) { }
1343			// *** END ADDED — Consent Mode v2 update signal ***
1344
1345			restoreDataLayerPush();
1346			releaseHeldScripts();
1347			releaseHeldSockets();
1348
1349			setTimeout(function () {
1350				replayHeldCalls();
1351			}, 800);
1352
1353			_logBlocked('[Privacy] Tracking accepted. Held trackers released.');
1354		}
1355
1356		function denyTracking() {
1357			consent = 'denied';
1358			setStoredConsent('denied');
1359
1360			heldScripts = [];
1361			heldCalls = [];
1362			heldSockets = [];
1363
1364			_logBlocked('[Privacy] Tracking denied. Held trackers discarded.');
1365		}
1366
1367		var privacy = {
1368			gpcEnabled: gpcEnabled,
1369
1370			get consent() {
1371				return getConsentState();
1372			},
1373
1374			get trackingAllowed() {
1375				return trackingAllowed();
1376			},
1377
1378			get heldScripts() {
1379				return heldScripts.slice();
1380			},
1381
1382			get heldCalls() {
1383				return heldCalls.slice();
1384			},
1385
1386			get heldSockets() {
1387				return heldSockets.slice();
1388			},
1389
1390			setConsent: function (value) {
1391				if (value === 'granted') {
1392					acceptTracking();
1393					return;
1394				}
1395
1396				if (value === 'denied') {
1397					denyTracking();
1398				}
1399			},
1400
1401			accept: acceptTracking,
1402			deny: denyTracking,
1403			release: acceptTracking,
1404
1405			reset: function () {
1406				clearStoredConsent();
1407				consent = null;
1408				heldScripts = [];
1409				heldCalls = [];
1410				heldSockets = [];
1411			}
1412		};
1413
1414		window.DiPrivacy = privacy;
1415
1416		// *** ADDED — Early return for granted users ***
1417		// If user has already granted consent, skip installing all the stubs and blockers.
1418		// The Consent Mode v2 default + update was already pushed via the real gtag()
1419		// before the IIFE started, so GTM/GA will read granted state on init.
1420		if (trackingAllowed()) {
1421			return;
1422		}
1423		// *** END ADDED — Early return for granted users ***
1424
1425		console.log('[Privacy] Tracking is held/blocked. Consent state →', getConsentState());
1426
1427		// sendBeacon is commonly used for analytics hits and page-unload beacons.
1428		if (navigator.sendBeacon) {
1429			var origBeacon = navigator.sendBeacon;
1430
1431			navigator.sendBeacon = function (url, data) {
1432				if (!trackingAllowed() && shouldBlockUrl(url)) {
1433					_logBlocked('[Privacy] Blocked sendBeacon →', url);
1434					return true;
1435				}
1436
1437				return origBeacon.apply(this, arguments);
1438			};
1439		}
1440
1441		// fetch() is commonly used by modern analytics, CDPs, pixels, and session replay tools.
1442		if (window.fetch) {
1443			var origFetch = window.fetch;
1444
1445			window.fetch = function (input, init) {
1446				var url = (typeof input === 'string') ? input : (input && input.url);
1447
1448				if (!trackingAllowed() && shouldBlockUrl(url)) {
1449					_logBlocked('[Privacy] Blocked fetch →', url);
1450					return Promise.resolve(new Response(null, { status: 204 }));
1451				}
1452
1453				return origFetch.apply(this, arguments).catch(function () {
1454					return new Response(null, { status: 204 });
1455				});
1456			};
1457		}
1458
1459		// XHR is still used by older analytics and marketing scripts.
1460		if (window.XMLHttpRequest) {
1461			var OrigXHR = XMLHttpRequest;
1462
1463			function WrappedXHR() {
1464				var xhr = new OrigXHR();
1465				var _open = xhr.open;
1466				var _send = xhr.send;
1467
1468				xhr.open = function (method, url) {
1469					xhr._blockedUrl = url;
1470					xhr._blockThis = !trackingAllowed() && shouldBlockUrl(url);
1471					return _open.apply(xhr, arguments);
1472				};
1473
1474				xhr.send = function () {
1475					if (xhr._blockThis) {
1476						_logBlocked('[Privacy] Blocked XHR →', xhr._blockedUrl);
1477
1478						try {
1479							xhr.abort();
1480						} catch (e) { }
1481
1482						return;
1483					}
1484
1485					return _send.apply(xhr, arguments);
1486				};
1487
1488				return xhr;
1489			}
1490
1491			WrappedXHR.prototype = OrigXHR.prototype;
1492			window.XMLHttpRequest = WrappedXHR;
1493		}
1494
1495		// Some trackers still fire using image beacon URLs.
1496		if (window.HTMLImageElement) {
1497			var imgProto = HTMLImageElement.prototype;
1498			var desc = Object.getOwnPropertyDescriptor(imgProto, 'src');
1499
1500			if (desc && desc.set) {
1501				Object.defineProperty(imgProto, 'src', {
1502					get: desc.get,
1503					set: function (url) {
1504						if (!trackingAllowed() && shouldBlockUrl(url)) {
1505							_logBlocked('[Privacy] Blocked Image →', url);
1506							return url;
1507						}
1508
1509						return desc.set.call(this, url);
1510					},
1511					configurable: true,
1512					enumerable: true
1513				});
1514			}
1515		}
1516
1517		// Consent-gated WebSockets. Only matching socketPatterns are held before consent.
1518		if (OrigWebSocket) {
1519			window.WebSocket = function (url, protocols) {
1520				if (!trackingAllowed() && shouldHoldSocket(url)) {
1521					if (shouldHold()) {
1522						holdSocket(url, protocols);
1523					} else {
1524						_logBlocked('[Privacy] Blocked analytics WebSocket →', url);
1525					}
1526
1527					return {
1528						close: function () { },
1529						send: function () { },
1530						addEventListener: function () { },
1531						removeEventListener: function () { },
1532						dispatchEvent: function () { return false; },
1533						readyState: 3,
1534						bufferedAmount: 0,
1535						url: String(url || '')
1536					};
1537				}
1538
1539				if (protocols !== undefined) {
1540					return new OrigWebSocket(url, protocols);
1541				}
1542
1543				return new OrigWebSocket(url);
1544			};
1545
1546			window.WebSocket.prototype = OrigWebSocket.prototype;
1547		}
1548
1549		// jQuery.getScript() is used by many older site snippets to load trackers dynamically.
1550		if (window.jQuery && window.jQuery.getScript) {
1551			var $ = window.jQuery;
1552			var origGetScript = $.getScript;
1553
1554			$.getScript = function (url, cb) {
1555				if (blockOrHoldScript(url, null, null, 'jqueryGetScript', null)) {
1556					return;
1557				}
1558
1559				return origGetScript.apply(this, arguments);
1560			};
1561		}
1562
1563		// Dynamically inserted 
1563<script src> trackers are held or blocked.
1564		(function () {
1565			proto.appendChild = function (node) {
1566				if (node && node.tagName === 'SCRIPT') {
1567					var src = node.src || node.getAttribute('src');
1568
1569					if (blockOrHoldScript(src, node, this, 'appendChild', null)) {
1570						return node;
1571					}
1572				}
1573
1574				return origAppend.call(this, node);
1575			};
1576
1577			proto.insertBefore = function (node, ref) {
1578				if (node && node.tagName === 'SCRIPT') {
1579					var src = node.src || node.getAttribute('src');
1580
1581					if (blockOrHoldScript(src, node, this, 'insertBefore', ref)) {
1582						return node;
1583					}
1584				}
1585
1586				return origInsert.call(this, node, ref);
1587			};
1588
1589			if (origAppendMethod) {
1590				proto.append = function () {
1591					for (var i = 0; i < arguments.length; i++) {
1592						var node = arguments[i];
1593
1594						if (node && node.tagName === 'SCRIPT') {
1595							var src = node.src || node.getAttribute('src');
1596
1597							if (blockOrHoldScript(src, node, this, 'appendChild', null)) {
1598								return;
1599							}
1600						}
1601					}
1602
1603					return origAppendMethod.apply(this, arguments);
1604				};
1605			}
1606
1607			if (origPrependMethod) {
1608				proto.prepend = function () {
1609					for (var i = 0; i < arguments.length; i++) {
1610						var node = arguments[i];
1611
1612						if (node && node.tagName === 'SCRIPT') {
1613							var src = node.src || node.getAttribute('src');
1614
1615							if (blockOrHoldScript(src, node, this, 'appendChild', null)) {
1616								return;
1617							}
1618						}
1619					}
1620
1621					return origPrependMethod.apply(this, arguments);
1622				};
1623			}
1624		})();
1625
1626		// Static/parser-inserted tracker scripts are scanned separately.
1627		// This helps catch hard-coded 
1627<script src="..."> tags that are not loaded through appendChild/insertBefore.
1628		scanStaticTrackerScripts();
1629
1630		if (document.readyState === 'loading') {
1631			document.addEventListener('DOMContentLoaded', scanStaticTrackerScripts);
1632		}
1633
1634		// Watch for tracker scripts added later by widgets or inline code.
1635		// This catches scripts that are inserted into the page after our initial scan.
1636		if (window.MutationObserver) {
1637			try {
1638				var trackerScriptObserver = new MutationObserver(function (mutations) {
1639					for (var i = 0; i < mutations.length; i++) {
1640						var added = mutations[i].addedNodes;
1641
1642						for (var j = 0; j < added.length; j++) {
1643							var node = added[j];
1644
1645							if (node && node.tagName === 'SCRIPT') {
1646								holdStaticScriptTag(node);
1647							}
1648
1649							if (node && node.querySelectorAll) {
1650								var scripts = node.querySelectorAll('script[src]');
1651
1652								for (var k = 0; k < scripts.length; k++) {
1653									holdStaticScriptTag(scripts[k]);
1654								}
1655							}
1656						}
1657					}
1658				});
1659
1660				trackerScriptObserver.observe(document.documentElement, {
1661					childList: true,
1662					subtree: true
1663				});
1664			} catch (e) { }
1665		}
1666
1667		function trackerStub(name) {
1668			return function () {
1669				blockOrHoldCall(name, arguments);
1670			};
1671		}
1672
1673		/*
1674			Common tracker APIs.
1675
1676			These stubs prevent known trackers from firing before consent.
1677			When consent is pending, calls are held. When consent is denied or GPC/DNT
1678			is active, calls are discarded. When accepted, held calls are replayed.
1679		*/
1680		window.dataLayer = window.dataLayer || [];
1681
1682		window.dataLayer.push = function () {
1683			// *** ADDED — Consent Mode v2 / GTM / gtag bypass ***
1684			// Allow consent signals, GTM internals, and gtag config/js/set/get
1685			// through unconditionally. GTM needs unobstructed dataLayer.push
1686			// to initialize itself and read consent state. Consent signals
1687			// must never be held or dropped.
1688			var arg = arguments[0];
1689
1690			// Always allow consent signals through — Consent Mode v2 must not be gated.
1691			// gtag('consent', 'default'|'update', {...}) arrives as arguments where arg[0] === 'consent'.
1692			var isConsentCommand = arg && (
1693				arg[0] === 'consent' ||
1694				arg['0'] === 'consent'
1695			);
1696
1697			// Always allow GTM internal events through (gtm.start, gtm.js, gtm.dom, gtm.load, etc.)
1698			var isGtmInternal = arg && typeof arg === 'object' && !Array.isArray(arg) && (
1699				'gtm.start' in arg ||
1700				'gtm.uniqueEventId' in arg ||
1701				(arg.event && typeof arg.event === 'string' && arg.event.indexOf('gtm.') === 0)
1702			);
1703
1704			// Allow gtag config/js/set/get commands so gtag.js can initialize properly.
1705			// gtag('js', new Date()) and gtag('config', 'G-XXX') need to reach dataLayer.
1706			var isGtagInternal = arg && (
1707				arg[0] === 'js' ||
1708				arg[0] === 'config' ||
1709				arg[0] === 'set' ||
1710				arg[0] === 'get' ||
1711				arg['0'] === 'js' ||
1712				arg['0'] === 'config' ||
1713				arg['0'] === 'set' ||
1714				arg['0'] === 'get'
1715			);
1716
1717			if (isConsentCommand || isGtmInternal || isGtagInternal) {
1718				return Array.prototype.push.apply(window.dataLayer, arguments);
1719			}
1720			// *** END ADDED — Consent Mode v2 / GTM / gtag bypass ***
1721
1722			if (blockOrHoldCall('dataLayer.push', arguments)) {
1723				return;
1724			}
1725
1726			return Array.prototype.push.apply(window.dataLayer, arguments);
1727		};
1728
1729		// *** ADDED — gtag stubs intentionally not installed ***
1730		// NOTE: window.gtag and window.google_tracking.gtag were defined as real
1731		// functions BEFORE this IIFE ran (in the Consent Mode v2 bootstrap block).
1732		// We do NOT overwrite them with stubs here — they need to remain real so
1733		// that gtag.js can register consent via its API (which is what produces
1734		// pscdl=denied/granted on hits instead of pscdl=noapi).
1735		//
1736		// Tracking gating for gtag still happens via the wrapped dataLayer.push
1737		// above: consent/gtm/gtag-internal commands pass through, everything else
1738		// (e.g. gtag('event', 'conversion', {...})) goes through blockOrHoldCall.
1739		// *** END ADDED — gtag stubs intentionally not installed ***
1740
1741		window.fbq = trackerStub('fbq');
1742		window.facebook_tracking = window.facebook_tracking || {};
1743		window.facebook_tracking.fbq = trackerStub('facebook_tracking.fbq');
1744
1745		window.FB = window.FB || { AppEvents: {} };
1746		window.FB.AppEvents.logEvent = trackerStub('FB.AppEvents.logEvent');
1747		window.FB.AppEvents.logPurchase = trackerStub('FB.AppEvents.logPurchase');
1748
1749		window.twttr = window.twttr || {};
1750		window.twttr.track = trackerStub('twttr.track');
1751		window.twttr.load = trackerStub('twttr.load');
1752
1753		window._linkedin_data_partner_ids = [];
1754		window.linkedinData = trackerStub('linkedinData');
1755
1756		window.pintrk = trackerStub('pintrk');
1757		window.ttq = trackerStub('ttq');
1758		window.snaptr = trackerStub('snaptr');
1759		window.hj = trackerStub('hj');
1760
1761		window.mixpanel = window.mixpanel || {};
1762		window.mixpanel.track = trackerStub('mixpanel.track');
1763		window.mixpanel.identify = trackerStub('mixpanel.identify');
1764		window.mixpanel.register = trackerStub('mixpanel.register');
1765
1766		window.amplitude = window.amplitude || {};
1767		window.amplitude.logEvent = trackerStub('amplitude.logEvent');
1768		window.amplitude.setUserProperties = trackerStub('amplitude.setUserProperties');
1769
1770		window.analytics = window.analytics || {};
1771		window.analytics.track = trackerStub('analytics.track');
1772		window.analytics.identify = trackerStub('analytics.identify');
1773		window.analytics.page = trackerStub('analytics.page');
1774
1775		window.plausible = trackerStub('plausible');
1776
1777	})(window, document);
1778</script>
vendor: 1 bytes, line 1778
1778
1779<script>
1780	(function () {
1781
1782		// Set window.privacy_allow = { disabled: true } before this script to suppress the banner entirely
1783		var privacy_allow = Object.assign({ disabled: false }, window.privacy_allow || {});
1784		window.privacy_allow = privacy_allow;
1785
1786		// Per-site override API — call before or after this script:
1787		//   privacy_config.set('variant', 'manage');
1788		if (!window.privacy_config || typeof window.privacy_config !== 'object') window.privacy_config = {};
1789		Object.defineProperty(window.privacy_config, 'set', {
1790			enumerable: false, configurable: true,
1791			value: function (key, val) { window.privacy_config[key] = val; }
1792		});
1793
1794		// variant: 'simple' → Decline / Accept All banner (no modal)
1795		// variant: 'manage' → Manage / Accept All banner + preferences modal
1796		var privacy_config_defaults = {
1797			primaryColor: '#1e3a5f',
1798			bgColor: '#ffffff',
1799			textColor: '#374151',
1800			// fontFamily: 'inherit',
1801			fontFamily: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
1802			buttonRadius: '4px',
1803			privacyPolicyUrl: '/privacy/',
1804			variant: 'manage',
1805			bannerText: 'We use cookies and tracking technologies to improve your browsing experience on our website, to show you personalized content, and to analyze our website traffic. Read our [privacy policy] to learn more.',
1806			declineLabel: 'Decline',
1807			manageLabel: 'Manage',
1808			acceptLabel: 'Accept All',
1809			modalTitle: 'Your tracking preferences.',
1810			modalDesc: 'We use tracking technologies, including scripts that may not set cookies, to understand how you use our site and deliver relevant content. You can learn more in our',
1811			submitLabel: 'Submit Preferences',
1812			rejectLabel: 'Reject all',
1813			cancelLabel: 'Cancel',
1814			categories: [
1815				{
1816					id: 'tracking',
1817					label: 'Tracking & Analytics',
1818					description: 'Scripts and technologies that help us understand how visitors interact with our site, measure performance, and serve relevant content and ads.',
1819					defaultOn: true,
1820				}
1821			]
1822		};
1823		var privacy_config;
1824
1825		// ─── helpers ───────────────────────────────────────────────────────────────
1826
1827		function privacy_cb_el(tag, props) {
1828			var node = document.createElement(tag);
1829			if (props) Object.keys(props).forEach(function (k) { node[k] = props[k]; });
1830			return node;
1831		}
1832
1833		function privacy_cb_removeBanner() {
1834			var el = document.getElementById('di-consent-banner');
1835			if (el) el.parentNode.removeChild(el);
1836		}
1837
1838		function privacy_cb_removeModal() {
1839			var el = document.getElementById('di-cookie-pref-dialog');
1840			if (!el) return;
1841			try { el.close(); } catch (e) { }
1842		}
1843
1844		function privacy_cb_accept() {
1845			try { if (window.DiPrivacy && typeof window.DiPrivacy.accept === 'function') window.DiPrivacy.accept(); } catch (e) { }
1846			privacy_cb_removeModal(); privacy_cb_removeBanner();
1847		}
1848
1849		function privacy_cb_reject() {
1850			try { if (window.DiPrivacy && typeof window.DiPrivacy.deny === 'function') window.DiPrivacy.deny(); } catch (e) { }
1851			privacy_cb_removeModal(); privacy_cb_removeBanner();
1852		}
1853
1854		function privacy_cb_rejectAll() {
1855			privacy_config.categories.forEach(function (cat) {
1856				var t = document.getElementById('di-cm-' + cat.id + '-toggle');
1857				if (t) t.checked = false;
1858			});
1859			privacy_cb_reject();
1860		}
1861
1862		function privacy_cb_savePreferences() {
1863			var anyOff = privacy_config.categories.some(function (cat) {
1864				var t = document.getElementById('di-cm-' + cat.id + '-toggle');
1865				return t && !t.checked;
1866			});
1867			anyOff ? privacy_cb_reject() : privacy_cb_accept();
1868		}
1869
1870		// ─── styles ────────────────────────────────────────────────────────────────
1871
1872		function privacy_cb_injectStyles() {
1873		    console.log('Injecting consent banner styles...');
1874			var existing = document.getElementById('di-consent-banner-styles');
1875			if (existing) existing.parentNode.removeChild(existing);
1876			var style = document.createElement('style');
1877			style.id = 'di-consent-banner-styles';
1878			var css = '';
1879
1880			// css += '#di-consent-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999999999;background:var(--di-cb-bg);box-shadow:0 -4px 16px rgba(0,0,0,.10);padding:20px 24px;font-family:var(--di-cb-font);box-sizing:border-box;}';
1881			css += '#di-consent-banner{position:fixed;bottom:0;left:0;right:0;z-index:2147483647;background:var(--di-cb-bg);box-shadow:0 -4px 16px rgba(0,0,0,.10);padding:20px 24px;box-sizing:border-box;}';
1882			css += '#di-consent-banner,#di-consent-banner *{font-family:var(--di-cb-font,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif)!important;letter-spacing:normal!important;}';
1883			css += '#di-consent-banner .di-cb__text{font-size:14px!important;line-height:1.5!important;color:var(--di-cb-text);margin:0;}';
1884			css += '@media(max-width:420px){#di-consent-banner{min-height:270px;}}';
1885			css += '#di-consent-banner .di-cb__inner{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:32px;max-width:1280px;margin:0 auto;}';
1886			css += '@media(min-width:640px){#di-consent-banner .di-cb__inner{flex-direction:row;}}';
1887			css += '#di-consent-banner .di-cb__text{font-size:14px;color:var(--di-cb-text);margin:0;}';
1888			css += '#di-consent-banner .di-cb__learn{color:var(--di-cb-primary);text-decoration:underline;transition:opacity .2s ease;}';
1889			css += '#di-consent-banner .di-cb__learn:hover{opacity:.8;}';
1890			css += '#di-consent-banner .di-cb__actions{display:flex;gap:8px!important;flex-shrink:0;}';
1891			css += '@media(max-width:639px){#di-consent-banner .di-cb__actions{width:100%;flex-direction:column-reverse;}}';
1892			css += '#di-consent-banner .di-cb__btn{cursor:pointer;font-size:16px;font-weight:500;padding:12px 24px;border-radius:var(--di-cb-radius);border:1px solid transparent;line-height:1;white-space:nowrap;transition:background .2s ease,color .2s ease,opacity .2s ease;}';
1893			css += '#di-consent-banner .di-cb__btn--secondary{background:transparent;border-color:var(--di-cb-primary);color:var(--di-cb-primary);}';
1894			css += '#di-consent-banner .di-cb__btn--secondary:hover{background:var(--di-cb-primary);color:#fff;}';
1895			css += '#di-consent-banner .di-cb__btn--primary{background:var(--di-cb-primary);border-color:var(--di-cb-primary);color:#fff;}';
1896			css += '#di-consent-banner .di-cb__btn--primary:hover{opacity:.88;}';
1897
1898			css += '@keyframes di-cm-fadein{from{opacity:0}
1898to{opacity:1}}';
1899			css += '@keyframes di-cm-slidein{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}';
1900			css += '#di-cookie-pref-dialog{border:none;padding:0;margin:auto;background:#fff;border-radius:10px;box-shadow:0 8px 40px rgba(0,0,0,.22);max-width:480px;width:calc(100vw - 32px);box-sizing:border-box;overflow:hidden;font-family:var(--di-cb-font);animation:di-cm-slidein .2s ease;}';
1901			css += '#di-cookie-pref-dialog::backdrop{background:rgba(0,0,0,.45);animation:di-cm-fadein .18s ease;}';
1902			css += '#di-cookie-pref-dialog .di-cm__header{padding:22px 24px 0;}';
1903			css += '#di-cookie-pref-dialog .di-cm__title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}';
1904			css += '#di-cookie-pref-dialog .di-cm__title{font-size:19px;font-weight:700;color:#111827;margin:0 0 8px;line-height:1.3;}';
1905			css += '#di-cookie-pref-dialog .di-cm__close{background:none;border:none;cursor:pointer;color:#9ca3af;font-size:22px;line-height:1;padding:0;flex-shrink:0;margin-top:2px;transition:color .15s ease;}';
1906			css += '#di-cookie-pref-dialog .di-cm__close:hover{color:#374151;}';
1907			css += '#di-cookie-pref-dialog .di-cm__desc{font-size:13px;color:#6b7280;margin:0;line-height:1.55;padding:0 24px;}';
1908			css += '#di-cookie-pref-dialog .di-cm__desc a{color:var(--di-cb-primary);text-decoration:underline;}';
1909			css += '#di-cookie-pref-dialog .di-cm__rows{margin-top:16px;border-top:1px solid #f3f4f6;}';
1910			css += '#di-cookie-pref-dialog .di-cm__item{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid #f3f4f6;}';
1911			css += '#di-cookie-pref-dialog .di-cm__item-info{flex:1;}';
1912			css += '#di-cookie-pref-dialog .di-cm__item-label{font-size:14px;font-weight:600;color:#111827;margin:0 0 4px;}';
1913			css += '#di-cookie-pref-dialog .di-cm__item-desc{font-size:12px;color:#6b7280;margin:0;line-height:1.5;}';
1914			css += '#di-cookie-pref-dialog .di-cm__toggle-wrap{flex-shrink:0;position:relative;width:44px;height:24px;margin-top:2px;}';
1915			css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input{opacity:0;width:0;height:0;position:absolute;}';
1916			css += '#di-cookie-pref-dialog .di-cm__toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:999px;cursor:pointer;transition:background .2s ease;}';
1917			css += '#di-cookie-pref-dialog .di-cm__toggle-track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s ease;}';
1918			css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input:checked+.di-cm__toggle-track{background:var(--di-cb-primary);}';
1919			css += '#di-cookie-pref-dialog .di-cm__toggle-wrap input:checked+.di-cm__toggle-track::after{transform:translateX(20px);}';
1920			css += '#di-cookie-pref-dialog .di-cm__footer{display:flex;gap:8px;padding:16px 24px;flex-wrap:wrap;}';
1921			css += '#di-cookie-pref-dialog .di-cm__btn{cursor:pointer;font-size:14px;font-weight:500;padding:10px 16px;border-radius:var(--di-cb-radius);border:1px solid transparent;line-height:1;white-space:nowrap;flex:1;transition:background .2s ease,color .2s ease,opacity .2s ease;}';
1922			css += '#di-cookie-pref-dialog .di-cm__btn--cancel{background:transparent;border-color:#d1d5db;color:#374151;}';
1923			css += '#di-cookie-pref-dialog .di-cm__btn--cancel:hover{background:#f9fafb;}';
1924			css += '#di-cookie-pref-dialog .di-cm__btn--reject{background:transparent;border-color:var(--di-cb-primary);color:var(--di-cb-primary);}';
1925			css += '#di-cookie-pref-dialog .di-cm__btn--reject:hover{background:var(--di-cb-primary);color:#fff;}';
1926			css += '#di-cookie-pref-dialog .di-cm__btn--submit{background:var(--di-cb-primary);border-color:var(--di-cb-primary);color:#fff;}';
1927			css += '#di-cookie-pref-dialog .di-cm__btn--submit:hover{opacity:.88;}';
1928			css += '#di-cookie-pref-dialog .di-cm__policy{padding:0 24px 16px;font-size:11px;color:#9ca3af;}';
1929			css += '#di-cookie-pref-dialog .di-cm__policy a{color:#9ca3af;text-decoration:underline;}';
1930			css += '#di-cookie-pref-dialog .di-cm__policy a:hover{color:#6b7280;}';
1931
1932			style.textContent = css;
1933			document.head.appendChild(style);
1934		}
1935
1936		// ─── modal ─────────────────────────────────────────────────────────────────
1937
1938		function privacy_cb_createDialog() {
1939
1940			var dialog = privacy_cb_el('dialog', { id: 'di-cookie-pref-dialog' });
1941			dialog.style.setProperty('--di-cb-primary', privacy_config.primaryColor);
1942			dialog.style.setProperty('--di-cb-radius', privacy_config.buttonRadius);
1943			dialog.style.setProperty('--di-cb-font', privacy_config.fontFamily);
1944
1945			dialog.addEventListener('click', function (e) {
1946				var r = dialog.getBoundingClientRect();
1947				if (e.clientX < r.left || e.clientX > r.right || e.clientY < r.top || e.clientY > r.bottom) privacy_cb_removeModal();
1948			});
1949			dialog.addEventListener('cancel', function (e) { e.preventDefault(); privacy_cb_removeModal(); });
1950
1951			var titleRow = privacy_cb_el('div', { className: 'di-cm__title-row' });
1952			var titleEl = privacy_cb_el('p', { className: 'di-cm__title', textContent: privacy_config.modalTitle });
1953			var closeBtn = privacy_cb_el('button', { className: 'di-cm__close', type: 'button', innerHTML: '×' });
1954			closeBtn.setAttribute('aria-label', 'Close');
1955			closeBtn.addEventListener('click', privacy_cb_removeModal);
1956			titleRow.appendChild(titleEl);
1957			titleRow.appendChild(closeBtn);
1958
1959			var header = privacy_cb_el('div', { className: 'di-cm__header' });
1960			header.appendChild(titleRow);
1961
1962			var desc = privacy_cb_el('p', { className: 'di-cm__desc' });
1963			desc.appendChild(document.createTextNode(privacy_config.modalDesc + ' '));
1964			desc.appendChild(privacy_cb_el('a', { href: privacy_config.privacyPolicyUrl, textContent: 'Privacy Policy' }));
1965			desc.appendChild(document.createTextNode('.'));
1966
1967			var rows = privacy_cb_el('div', { className: 'di-cm__rows' });
1968			var toggleInputs = [];
1969			privacy_config.categories.forEach(function (cat) {
1970				var row = privacy_cb_el('div', { className: 'di-cm__item' });
1971				var info = privacy_cb_el('div', { className: 'di-cm__item-info' });
1972				var lbl = privacy_cb_el('p', { className: 'di-cm__item-label', textContent: cat.label });
1973				var dsc = privacy_cb_el('p', { className: 'di-cm__item-desc', textContent: cat.description });
1974				var wrap = privacy_cb_el('label', { className: 'di-cm__toggle-wrap' });
1975				var input = privacy_cb_el('input', { type: 'checkbox', id: 'di-cm-' + cat.id + '-toggle', checked: cat.defaultOn !== false });
1976				var track = privacy_cb_el('span', { className: 'di-cm__toggle-track' });
1977				toggleInputs.push(input);
1978				info.appendChild(lbl); info.appendChild(dsc);
1979				wrap.appendChild(input); wrap.appendChild(track);
1980				row.appendChild(info); row.appendChild(wrap);
1981				rows.appendChild(row);
1982			});
1983
1984			var footer = privacy_cb_el('div', { className: 'di-cm__footer' });
1985			var cancelBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--cancel', type: 'button', textContent: privacy_config.cancelLabel });
1986			var rejectBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--reject', type: 'button', textContent: privacy_config.rejectLabel });
1987			rejectBtn.setAttribute('data-event', 'consent_reject');
1988			var submitBtn = privacy_cb_el('button', { className: 'di-cm__btn di-cm__btn--submit', type: 'button', textContent: privacy_config.submitLabel });
1989			function privacy_cb_updateSubmitEvent() {
1990				var anyOff = toggleInputs.some(function (t) { return !t.checked; });
1991				submitBtn.setAttribute('data-event', anyOff ? 'consent_reject' : 'consent_accept');
1992			}
1993			privacy_cb_updateSubmitEvent();
1994			toggleInputs.forEach(function (t) { t.addEventListener('change', privacy_cb_updateSubmitEvent); });
1995			cancelBtn.addEventListener('click', privacy_cb_removeModal);
1996			rejectBtn.addEventListener('click', privacy_cb_rejectAll);
1997			submitBtn.addEventListener('click', privacy_cb_savePreferences);
1998			footer.appendChild(cancelBtn); footer.appendChild(rejectBtn); footer.appendChild(submitBtn);
1999
2000			var policyFooter = privacy_cb_el('div', { className: 'di-cm__policy' });
2001			policyFooter.appendChild(privacy_cb_el('a', { href: privacy_config.privacyPolicyUrl, textContent: 'Privacy Policy' }));
2002
2003			dialog.appendChild(header);
2004			dialog.appendChild(desc);
2005			dialog.appendChild(rows);
2006			dialog.appendChild(footer);
2007			dialog.appendChild(policyFooter);
2008			return dialog;
2009		}
2010
2011		function privacy_cb_openModal() {
2012			var dialog = document.getElementById('di-cookie-pref-dialog');
2013			if (dialog) dialog.showModal();
2014		}
2015
2016		// ─── banner ────────────────────────────────────────────────────────────────
2017
2018		function privacy_cb_createBanner() {
2019
2020			var wrap = privacy_cb_el('div', { id: 'di-consent-banner' });
2021			var inner = privacy_cb_el('div', { className: 'di-cb__inner' });
2022			var p = privacy_cb_el('p', { className: 'di-cb__text' });
2023
2024			var match = privacy_config.bannerText.match(/^([\s\S]*?)\[([^\]]+)\]([\s\S]*)$/);
2025			if (match) {
2026				p.appendChild(document.createTextNode(match[1]));
2027				p.appendChild(privacy_cb_el('a', { className: 'di-cb__learn', href: privacy_config.privacyPolicyUrl, textContent: match[2] }));
2028				p.appendChild(document.createTextNode(match[3]));
2029			} else {
2030				p.textContent = privacy_config.bannerText;
2031			}
2032
2033			var actions = privacy_cb_el('div', { className: 'di-cb__actions' });
2034			var secondary = privacy_config.variant === 'manage'
2035				? privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--secondary', type: 'button', textContent: privacy_config.manageLabel })
2036				: privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--secondary', type: 'button', textContent: privacy_config.declineLabel });
2037			if (privacy_config.variant !== 'manage') secondary.setAttribute('data-event', 'consent_reject');
2038			var acceptBtn = privacy_cb_el('button', { className: 'di-cb__btn di-cb__btn--primary', type: 'button', textContent: privacy_config.acceptLabel });
2039			acceptBtn.setAttribute('data-event', 'consent_accept');
2040
2041			secondary.addEventListener('click', privacy_config.variant === 'manage' ? privacy_cb_openModal : privacy_cb_reject);
2042			acceptBtn.addEventListener('click', privacy_cb_accept);
2043
2044			actions.appendChild(secondary);
2045			actions.appendChild(acceptBtn);
2046			inner.appendChild(p);
2047			inner.appendChild(actions);
2048			wrap.appendChild(inner);
2049			return wrap;
2050		}
2051
2052		// ─── init ──────────────────────────────────────────────────────────────────
2053
2054		function privacy_cb_init() {
2055
2056            if (!document.body) {
2057                document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true });
2058                return;
2059            }
2060
2061			privacy_config = Object.assign({}, privacy_config_defaults, window.privacy_config || {});
2062			if (window.privacy_allow && window.privacy_allow.disabled === true) return;
2063			if (!window.DiPrivacy || window.DiPrivacy.consent !== 'pending' || window.DiPrivacy.gpcEnabled) {
2064                var signals = [];
2065
2066                if (navigator.globalPrivacyControl === true) {
2067                    signals.push('navigator.globalPrivacyControl');
2068                }
2069                if (window.matchMedia && window.matchMedia('(global-privacy-control: 1)').matches) {
2070                    signals.push('matchMedia(global-privacy-control: 1)');
2071                }
2072                var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
2073                if (dnt === '1' || dnt === 'yes') {
2074                    signals.push('doNotTrack (' + dnt + ')');
2075                }
2076
2077                if (signals.length) {
2078                    console.log('[Privacy] GPC/DNT active via: ' + signals.join(', '));
2079                } else {
2080                    console.log('[Privacy] No GPC/DNT signals active — early return triggered by DiPrivacy state (consent=' +
2081                        (window.DiPrivacy && window.DiPrivacy.consent) + ', gpcEnabled=' +
2082                        (window.DiPrivacy && window.DiPrivacy.gpcEnabled) + ')');
2083                }
2084                return;
2085 			}
2086			privacy_cb_injectStyles();
2087			document.body.appendChild(privacy_cb_createDialog());
2088			var banner = privacy_cb_createBanner();
2089			banner.style.setProperty('--di-cb-primary', privacy_config.primaryColor);
2090			banner.style.setProperty('--di-cb-bg', privacy_config.bgColor);
2091			banner.style.setProperty('--di-cb-text', privacy_config.textColor);
2092			banner.style.setProperty('--di-cb-font', privacy_config.fontFamily);
2093			banner.style.setProperty('--di-cb-radius', privacy_config.buttonRadius);
2094			document.body.appendChild(banner);
2095		}
2096
2097		if (document.readyState === 'loading') {
2098            document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true });
2099        } else if (document.body) {
2100            privacy_cb_init();
2101      	} else {
2102            document.addEventListener('DOMContentLoaded', privacy_cb_init, { once: true });
2103        }
2104
2105	})();
2106</script>
2106
2107<!-- 
2107<script>FontAwesomeConfig = {searchPseudoElements: true};</script>
2107 -->
2108<script>
2109	 javascript_deferred.prototype[get_deferred_id()] = function() {
2110	 	$.getScript('https://www.googletagmanager.com/gtag/js?id=G-T926NYNK8M');
2111	 	window.dataLayer = window.dataLayer || [];
2112	 	google_tracking.gtag('js', new Date());
2113	 	google_tracking.gtag('config', 'G-T926NYNK8M');		
2114	 }
2115	javascript_deferred.prototype[get_deferred_id()] = function() {
2116		$.getScript('https://go.doctorsinternet.com/embed/v7/174343173389941/11/987654321301115183');
2117	}
2118</script>
2118
2119
2120
2121						<link rel="canonical" href="https://heartwisecardiology.com/">
2122				
2123						<meta name="description" content="Heartwise Cardiology offers comprehensive cardiac care in Murray Hill, NYC. Our board-certified cardiologists specialize in arrhythmias, heart failure and preventative cardiology.">
2124						<meta name="keywords" content="Cardiologist in Murray Hill, Cardiovascular Specialist Murray Hill New York, NYC Stress Testing, Murray Hill NY Cardiologist, Cholesterol Management 10016, Murray Hill Cardiology Office, Murray Hill NY Cardiologist, Murray Hill heart specialists, Arrhythmia 10016, Murray Hill electrophysiology, Murray Hill NYC Preventive Cardiology, Echocardiogram Murray Hill, Nuclear stress testing 10016, Pacemakers Doctor Murray Hill, Defibrillators 10016, Cardiologist near me">
2125						
2125<script type="application/ld+json">{"@context":{"@vocab":"https:\/\/schema.org\/"},"@graph":[{"@type":"LocalBusiness","parentOrganization":{"name":"Heartwise Cardiology"},"url":"https:\/\/fakedomain.com","mainEntityOfPage":"https:\/\/fakedomain.com","name":"Heartwise Cardiology","address":{"@type":"PostalAddress","streetAddress":"148 East 38th Street","addressLocality":"New York","addressRegion":"NY","postalCode":"10016","telephone":"(212) 679-4488"},"image":"https:\/\/fakedomain.com\/custom\/images\/logo.png","openingHours":["Mo 8:30-17:00","Tu 8:30-17:00","We 8:30-17:00","Th 8:30-17:00","Fr 8:30-17:00"],"paymentAccepted":"Cash, Credit Cards, Personal Checks","currenciesAccepted":"USD"}]}</script>
2125
2126			<style>body {
2127  border: 0px;
2128  padding: 0px;
2129  margin: 0px;
2130  font-family: "arial";
2131  font-size: 16px;
2132  letter-spacing: 0.25px;
2133  word-spacing: 0.5px;
2134  font-weight: normal;
2135  background: white;
2136  box-sizing: border-box;
2137  width: 100%;
2138  height: 100%;
2139  -webkit-tap-highlight-color: rgba(0,0,0,0);
2140  text-rendering: optimizeSpeed !important;
2141  display: flex;
2142  flex-wrap: wrap;
2143}
2144body::after {
2145  content: '';
2146  clear: both;
2147  visibility: hidden;
2148  display: block;
2149}
2150@media (max-width: 360px) {
2151  body {
2152    overflow-x: hidden;
2153  }
2154}
2155body > section {
2156  float: left;
2157  width: 100%;
2158  position: relative;
2159  z-index: 10;
2160  box-sizing: border-box;
2161  display: inline-block;
2162  flex-basis: 100%;
2163}
2164body a {
2165  text-decoration: none;
2166  color: inherit;
2167  transition: color 0.4s;
2168}
2169body a:hover {
2170  color: #0a82d2;
2171}
2172body a svg {
2173  pointer-events: none;
2174}
2175body p {
2176  margin: 1rem 0px;
2177  line-height: 1.6rem;
2178}
2179body img {
2180  max-width: 100%;
2181  max-height: 100%;
2182  image-rendering: -webkit-optimize-contrast;
2183}
2184body picture {
2185  max-width: 100%;
2186  max-height: 100%;
2187}
2188body h1,
2189body h2,
2190body h3,
2191body h4,
2192body h5,
2193body h6 {
2194  margin: 1rem 0px;
2195}
2196body h1 {
2197  font-size: 5rem;
2198}
2199body h2 {
2200  font-size: 4rem;
2201}
2202body h3 {
2203  font-size: 3rem;
2204}
2205body h4 {
2206  font-size: 2rem;
2207}
2208body h5,
2209body h6 {
2210  font-size: 1rem;
2211}
2212body sup {
2213  font-size: 0.75rem;
2214  line-height: 0px;
2215}
2216body li {
2217  line-height: 1.6rem;
2218}
2219body iframe {
2220  width: 100%;
2221  margin: 0px;
2222  padding: 0px;
2223  border: 0px;
2224}
2225body iframe:not([height]) {
2226  height: 100%;
2227}
2228body picture {
2229  max-width: 100%;
2230  max-height: 100%;
2231}
2232body .button {
2233  padding: 20px 40px;
2234  display: inline-block;
2235  cursor: pointer;
2236  transition: background 0.4s, color 0.4s;
2237  margin: 1rem 0px;
2238  text-align: center;
2239  line-height: 1.6rem;
2240  box-sizing: border-box;
2241}
2242@media (max-width: 640px) {
2243  body .button {
2244    padding: 20px;
2245  }
2246}
2247body .float-left {
2248  float: left;
2249}
2250body .float-right {
2251  float: right;
2252}
2253body .position-center {
2254  display: inline-block;
2255  position: relative;
2256  left: 50%;
2257  transform: translate(-50%);
2258}
2259body .clear {
2260  clear: both;
2261}
2262body .inline-block {
2263  display: inline-block;
2264}
2265body .flex {
2266  display: flex;
2267}
2268body .background_container {
2269  position: relative;
2270  overflow: hidden;
2271}
2272body .background_container .background_image {
2273  position: absolute;
2274  min-width: 100%;
2275  min-height: 100%;
2276  transform: translate(-50%,-50%);
2277  left: 50%;
2278  top: 50%;
2279  object-fit: cover;
2280  height: inherit;
2281  width: 100%;
2282  height: 100%;
2283}
2284body .background_container .background_image * {
2285  width: 100%;
2286  object-fit: cover;
2287  object-position: inherit;
2288  height: inherit;
2289}
2290body section[data-type="system-lightbox-container"] {
2291  position: fixed;
2292  width: 100%;
2293  height: 100%;
2294  top: 0px;
2295  left: 0px;
2296  z-index: 99999;
2297  display: flex;
2298  opacity: 0;
2299  pointer-events: none;
2300  transition: opacity 0.4s;
2301  -webkit-user-select: none;
2302  -moz-user-select: none;
2303  -ms-user-select: none;
2304  user-select: none;
2305}
2306body section[data-type="system-lightbox-container"].show {
2307  opacity: 1;
2308  pointer-events: initial;
2309}
2310body section[data-module="ad_tracking"] {
2311  display: none;
2312}
2313body form input[type="submit"] {
2314  display: none;
2315}
2316body form section[data-type="system-lightbox-content"] {
2317  display: none;
2318}
2319body form [data-hidden="1"] {
2320  display: none;
2321}
2322body form input[type="file"] {
2323  display: none;
2324}
2325body form div[data-container="file"] {
2326  margin: 5px;
2327  transition: opacity 0.4s;
2328}
2329body form div[data-container="file"].disabled {
2330  opacity: 0.2;
2331  pointer-events: none;
2332}
2333body form [data-container="file"] label {
2334  display: inline-block;
2335  cursor: pointer;
2336  line-height: 1.6rem;
2337  box-sizing: border-box;
2338  border-radius: 3px;
2339  transition: all .75s ease;
2340  background-size: 500% 500%;
2341  background-position: -2px -2px;
2342  padding: 20px 40px;
2343  color: white;
2344  position: relative;
2345}
2346body form [data-container="file"] label:hover {
2347  background-position: bottom right;
2348}
2349body form [data-container="file"] label .remove_file {
2350  position: absolute;
2351  top: -5px;
2352  left: -5px;
2353  width: 24px;
2354  height: 24px;
2355  background-color: white;
2356  border-radius: 50%;
2357  display: flex;
2358  justify-content: center;
2359  align-items: center;
2360  color: black;
2361  box-shadow: 1px 1px 5px rgba(0,0,0,0.4);
2362  font-size: 1rem;
2363}
2364body form div[data-group="file"] {
2365  display: flex;
2366  flex: 0 0 auto;
2367  width: calc(100% - 20px);
2368  margin: 10px 10px;
2369  flex-wrap: wrap;
2370  justify-content: center;
2371  user-select: none;
2372  transition: opacity 0.4s;
2373}
2374body form div[data-group="file"] > div {
2375  display: flex;
2376  flex-wrap: wrap;
2377  justify-content: center;
2378}
2379body form div[data-group="file"] .max_size_container {
2380  width: 100%;
2381  display: flex;
2382  justify-content: center;
2383  padding: 10px 20px;
2384  box-sizing: border-box;
2385  border: 3px solid #fbfbfb;
2386  border-radius: 3px;
2387  transition: background-color 0.4s, border 0.4s;
2388  margin-top: 20px;
2389}
2390body form div[data-group="file"] .max_size_container .size_divider {
2391  display: inline-block;
2392  margin: 0px 5px;
2393}
2394body form div[data-group="file"] .max_size_container .current_size_warning {
2395  display: none;
2396  margin-right: 10px;
2397  font-size: 24px;
2398}
2399body form div[data-group="file"] .max_size_container .current_size_ok {
2400  display: inline-block;
2401  margin-right: 10px;
2402  font-size: 24px;
2403}
2404body form div[data-group="file"] .too_large {
2405  color: #c40000;
2406  font-weight: bold;
2407  box-sizing: border-box;
2408  border: 3px solid #c40000;
2409  background-color: #c40000;
2410  color: white;
2411}
2412body form div[data-group="file"] .too_large .current_size_warning {
2413  display: inline-block;
2414}
2415body form div[data-group="file"] .too_large .current_size_ok {
2416  display: none;
2417}
2418body form [data-type='submit'].disabled {
2419  opacity: 0.2;
2420  pointer-events: none;
2421}
2422body form[action="https://maps.google.com/maps"] input[type="submit"] {
2423  display: initial;
2424  padding: 5px 10px;
2425  font-size: 1rem;
2426  box-sizing: border-box;
2427  border: 1px solid grey;
2428}
2429body form[action="https://maps.google.com/maps"] input#saddr {
2430  border: 1px solid grey;
2431  margin: 0px 10px;
2432  font-size: 1rem;
2433  padding: 5px 10px;
2434  box-sizing: border-box;
2435}
2436body .ui-widget.ui-widget-content {
2437  border: 0px;
2438}
2439body .ui-datepicker-flex {
2440  display: flex !important;
2441  background-color: rgba(0,0,0,0.95);
2442  position: fixed !important;
2443  top: 0px !important;
2444  left: 0px !important;
2445  z-index: 1000 !important;
2446  width: 100%;
2447  height: 100%;
2448  color: white;
2449  display: none;
2450  flex-direction: column;
2451  justify-content: center;
2452  align-items: center;
2453}
2454body .ui-datepicker-flex th,
2455body .ui-datepicker-flex td {
2456  width: 50px;
2457  height: 50px;
2458  box-sizing: border-box;
2459  text-align: center;
2460  font-size: 1.25rem;
2461  padding: 0px;
2462}
2463body .ui-datepicker-flex th a,
2464body .ui-datepicker-flex td a {
2465  padding: 0px;
2466}
2467@media (max-width: 320px) {
2468  body .ui-datepicker-flex th,
2469  body .ui-datepicker-flex td {
2470    width: 40px;
2471    height: 40px;
2472    font-size: 1rem;
2473  }
2474}
2475body .ui-datepicker-flex .ui-datepicker-header {
2476  display: flex;
2477  justify-content: center;
2478  width: 350px;
2479  border: 0px;
2480  border-bottom: 1px solid white;
2481  border-radius: 0px;
2482  background: initial;
2483  color: white;
2484}
2485body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-prev {
2486  order: 0;
2487}
2488body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-title {
2489  order: 1;
2490}
2491body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-next {
2492  order: 2;
2493}
2494body .ui-datepicker-flex .ui-widget-header .ui-state-hover {
2495  background: white;
2496  border-radius: 0px;
2497}
2498body .ui-datepicker-flex .ui-datepicker-calendar {
2499  width: 350px;
2500}
2501body .ui-datepicker-flex .ui-datepicker-calendar .ui-state-default {
2502  background: initial;
2503  color: white;
2504  border: 0px;
2505  text-align: center;
2506}
2507body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day {
2508  background-color: white;
2509  border-radius: 50%;
2510}
2511body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day a {
2512  color: black;
2513}
2514body .sidebar[data-sidebar="false"] {
2515  display: none;
2516}
2517body .sidebar[data-sidebar="true"] {
2518  flex-basis: 280px;
2519  width: 100%;
2520  flex-grow: 1;
2521  flex-shrink: 0;
2522  margin-left: 40px;
2523  box-sizing: border-box;
2524}
2525body .sidebar[data-sidebar="true"] img,
2526body .sidebar[data-sidebar="true"] picture {
2527  border-radius: 5px;
2528}
2529body .sidebar[data-sidebar="true"] > .label {
2530  font-size: 1.25rem;
2531  margin: 1.5rem 0px 0.5rem;
2532  border-bottom: 1px solid #ececec;
2533  padding-bottom: 0.5rem;
2534}
2535body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] {
2536  padding: 1rem 0rem;
2537}
2538body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] > div {
2539  line-height: 1.6rem;
2540}
2541body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] {
2542  padding: 1rem 0rem;
2543}
2544body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] > div {
2545  line-height: 1.6rem;
2546}
2547body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"],
2548body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] {
2549  display: flex;
2550}
2551body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div.title,
2552body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div.title {
2553  margin-bottom: 10px;
2554}
2555body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"],
2556body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] {
2557  display: flex;
2558  width: 50px;
2559  height: 50px;
2560}
2561body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"] a,
2562body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] a {
2563  font-size: 1.6rem;
2564  display: flex;
2565  width: 100%;
2566  height: 100%;
2567  justify-content: center;
2568  align-items: center;
2569}
2570body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"],
2571body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] {
2572  display: flex;
2573  flex-direction: row;
2574  flex-wrap: wrap;
2575  padding: 1rem 0px;
2576}
2577body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] > div.title,
2578body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] > div.title {
2579  margin-bottom: 10px;
2580}
2581body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row,
2582body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row {
2583  display: flex;
2584  flex: 1 0 100%;
2585}
2586body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day,
2587body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day {
2588  flex: 1 0 40%;
2589  line-height: 1.6rem;
2590}
2591body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time,
2592body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time {
2593  flex: 1 0 60%;
2594  text-align: right;
2595  line-height: 1.6rem;
2596}
2597body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] {
2598  padding: 1rem 20px;
2599}
2600body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul {
2601  list-style: initial;
2602  margin: initial;
2603  padding: initial;
2604}
2605body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul li:not(:last-of-type) {
2606  margin-bottom: 10px;
2607}
2608body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] {
2609  padding: 1rem 20px;
2610}
2611body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul {
2612  list-style: initial;
2613  margin: initial;
2614  padding: initial;
2615}
2616body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul li:not(:last-of-type) {
2617  margin-bottom: 10px;
2618}
2619@media (max-width: 920px) {
2620  body .sidebar[data-sidebar="true"] {
2621    flex-basis: 100%;
2622    max-width: 100%;
2623    margin-left: 0px;
2624    margin-top: 1rem;
2625    justify-content: center;
2626    text-align: center;
2627  }
2628  body .sidebar[data-sidebar="true"] div[data-sidebar] {
2629    justify-content: center;
2630  }
2631  body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul,
2632  body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul {
2633    list-style: none;
2634  }
2635  body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul,
2636  body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul {
2637    list-style: none;
2638  }
2639  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day,
2640  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day {
2641    padding-right: 10px;
2642    box-sizing: border-box;
2643    flex: 1 0 50%;
2644    text-align: right;
2645  }
2646  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time,
2647  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time {
2648    padding-left: 10px;
2649    box-sizing: border-box;
2650    flex: 1 0 50%;
2651    text-align: left;
2652  }
2653}
2654@media (max-width: 920px) and (max-width: 360px) {
2655  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day,
2656  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day {
2657    flex: 1 0 40%;
2658  }
2659  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time,
2660  body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time {
2661    flex: 1 0 60%;
2662  }
2663}
2664@media (max-width: 1080px) {
2665  body section[data-module="blog_content"] .content_container,
2666  body section[data-module="article_content"] .content_container {
2667    flex-wrap: wrap;
2668  }
2669}
2670@media (max-width: 920px) {
2671  body section[data-module="dynamic_content"] .content_container,
2672  body section[data-module="interior_content"] .content_container {
2673    flex-wrap: wrap;
2674  }
2675}
2676</style>
2677					<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link href="https://fonts.googleapis.com/css?family=Asap:400,700&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css?family=Quicksand&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css?family=Lato:400,700&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"></head>
2678					<body data-template-group="homepage">
2679			<style>body {
2680  background: #ffffff;
2681  color: #3c3c3c;
2682  font-family: "Asap";
2683}
2684body a {
2685  color: #333333;
2686}
2687body a:hover {
2688  color: #dac298;
2689}
2690body h1 {
2691  font-family: "Lato";
2692}
2693body h2 {
2694  font-family: "Lato";
2695}
2696body h3 {
2697  font-family: "Lato";
2698}
2699body h1,
2700body h2,
2701body h3,
2702body h4,
2703body h5,
2704body h6 {
2705  color: #333333;
2706  font-weight: 300;
2707}
2708body input,
2709body textarea {
2710  font-family: "Asap";
2711  border: 0px;
2712  border-radius: 0;
2713}
2714body input[type="text"],
2715body textarea {
2716  -webkit-appearance: none;
2717}
2718body .button {
2719  background: #333333;
2720  color: white;
2721  font-size: 1rem;
2722}
2723body .button:hover {
2724  background: #203647;
2725  color: white;
2726}
2727body .text_background {
2728  color: #ffffff;
2729}
2730body .text_primary {
2731  color: #333333;
2732}
2733body .text_secondary {
2734  color: #dac298;
2735}
2736body .text_tertiary {
2737  color: #faf7f2;
2738}
2739body .background_background {
2740  background: #ffffff;
2741}
2742body .background_primary {
2743  background: #333333;
2744}
2745body .background_secondary {
2746  background: #dac298;
2747}
2748body .background_tertiary {
2749  background: #faf7f2;
2750}
2751body .item_float_right {
2752  float: right;
2753  margin: 0 0 15px 15px;
2754}
2755@media (max-width: 480px) {
2756  body .item_float_right {
2757    float: none;
2758    margin: 0 auto 10px;
2759  }
2760}
2761body .item_float_left {
2762  float: left;
2763  margin: 0 15px 15px 0;
2764}
2765@media (max-width: 480px) {
2766  body .item_float_left {
2767    float: none;
2768    margin: 0 auto 10px;
2769  }
2770}
2771body .margin_center {
2772  margin: 0 auto;
2773}
2774body .margin_left {
2775  margin: 0 auto 0 0;
2776}
2777body .margin_right {
2778  margin: 0 0 0 auto;
2779}
2780body .margin_bottom {
2781  margin: auto 0 0 0;
2782}
2783body .margin_top {
2784  margin: 0 0 auto 0;
2785}
2786body .sys_flex_container {
2787  display: flex;
2788  gap: 20px;
2789}
2790body .sys_flex_container.flex_wrap {
2791  flex-wrap: wrap;
2792}
2793@media (max-width: 1024px) {
2794  body .sys_flex_container.flex_wrap_tablet {
2795    flex-wrap: wrap;
2796  }
2797}
2798@media (max-width: 768px) {
2799  body .sys_flex_container.flex_wrap_phablet {
2800    flex-wrap: wrap;
2801  }
2802}
2803@media (max-width: 480px) {
2804  body .sys_flex_container.flex_wrap_phone {
2805    flex-wrap: wrap;
2806  }
2807}
2808body .sys_flex_container.justify_center {
2809  justify-content: center;
2810}
2811body .sys_flex_container.justify_start {
2812  justify-content: flex-start;
2813}
2814body .sys_flex_container.justify_end {
2815  justify-content: flex-end;
2816}
2817body .sys_flex_container.justify_around {
2818  justify-content: space-around;
2819}
2820body .sys_flex_container.justify_between {
2821  justify-content: space-between;
2822}
2823body .sys_flex_container.align_center {
2824  align-items: center;
2825}
2826body .sys_flex_container.align_start {
2827  align-items: flex-start;
2828}
2829body .sys_flex_container.align_end {
2830  align-items: flex-end;
2831}
2832body .sys_flex_container.align_stretch {
2833  align-items: stretch;
2834}
2835body .sys_flex_container > .full_width {
2836  flex-basis: 100%;
2837}
2838@media (max-width: 1024px) {
2839  body .sys_flex_container > .full_width_tablet {
2840    flex-basis: 100%;
2841  }
2842}
2843@media (max-width: 768px) {
2844  body .sys_flex_container > .full_width_phablet {
2845    flex-basis: 100%;
2846  }
2847}
2848@media (max-width: 480px) {
2849  body .sys_flex_container > .full_width_phone {
2850    flex-basis: 100%;
2851  }
2852}
2853body .sys_flex_container.flex_column {
2854  flex-direction: column;
2855}
2856@media (max-width: 1024px) {
2857  body .sys_flex_container.flex_column_tablet {
2858    flex-direction: column;
2859  }
2860}
2861@media (max-width: 768px) {
2862  body .sys_flex_container.flex_column_phablet {
2863    flex-direction: column;
2864  }
2865}
2866@media (max-width: 480px) {
2867  body .sys_flex_container.flex_column_phone {
2868    flex-direction: column;
2869  }
2870}
2871body .sys_grid_container {
2872  display: grid;
2873  gap: 20px;
2874}
2875body .sys_grid_container.two_wide {
2876  grid-template-columns: repeat(2,1fr);
2877}
2878body .sys_grid_container.three_wide {
2879  grid-template-columns: repeat(3,1fr);
2880}
2881body .sys_grid_container.four_wide {
2882  grid-template-columns: repeat(4,1fr);
2883}
2884body .sys_grid_container.five_wide {
2885  grid-template-columns: repeat(5,1fr);
2886}
2887@media (max-width: 1024px) {
2888  body .sys_grid_container.one_wide_tablet {
2889    grid-template-columns: repeat(1,1fr);
2890  }
2891}
2892@media (max-width: 1024px) {
2893  body .sys_grid_container.two_wide_tablet {
2894    grid-template-columns: repeat(2,1fr);
2895  }
2896}
2897@media (max-width: 1024px) {
2898  body .sys_grid_container.three_wide_tablet {
2899    grid-template-columns: repeat(3,1fr);
2900  }
2901}
2902@media (max-width: 1024px) {
2903  body .sys_grid_container.four_wide_tablet {
2904    grid-template-columns: repeat(4,1fr);
2905  }
2906}
2907@media (max-width: 1024px) {
2908  body .sys_grid_container.five_wide_tablet {
2909    grid-template-columns: repeat(5,1fr);
2910  }
2911}
2912@media (max-width: 768px) {
2913  body .sys_grid_container.one_wide_phablet {
2914    grid-template-columns: repeat(1,1fr);
2915  }
2916}
2917@media (max-width: 768px) {
2918  body .sys_grid_container.two_wide_phablet {
2919    grid-template-columns: repeat(2,1fr);
2920  }
2921}
2922@media (max-width: 768px) {
2923  body .sys_grid_container.three_wide_phablet {
2924    grid-template-columns: repeat(3,1fr);
2925  }
2926}
2927@media (max-width: 768px) {
2928  body .sys_grid_container.four_wide_phablet {
2929    grid-template-columns: repeat(4,1fr);
2930  }
2931}
2932@media (max-width: 768px) {
2933  body .sys_grid_container.five_wide_phablet {
2934    grid-template-columns: repeat(5,1fr);
2935  }
2936}
2937@media (max-width: 480px) {
2938  body .sys_grid_container.one_wide_phone {
2939    grid-template-columns: repeat(1,1fr);
2940  }
2941}
2942@media (max-width: 480px) {
2943  body .sys_grid_container.two_wide_phone {
2944    grid-template-columns: repeat(2,1fr);
2945  }
2946}
2947@media (max-width: 480px) {
2948  body .sys_grid_container.three_wide_phone {
2949    grid-template-columns: repeat(3,1fr);
2950  }
2951}
2952@media (max-width: 480px) {
2953  body .sys_grid_container.four_wide_phone {
2954    grid-template-columns: repeat(4,1fr);
2955  }
2956}
2957@media (max-width: 480px) {
2958  body .sys_grid_container.five_wide_phone {
2959    grid-template-columns: repeat(5,1fr);
2960  }
2961}
2962body .sys_grid_container > .full_width {
2963  grid-column: 1/-1;
2964}
2965@media (max-width: 1024px) {
2966  body .sys_grid_container > .full_width_tablet {
2967    grid-column: 1/-1;
2968  }
2969}
2970@media (max-width: 768px) {
2971  body .sys_grid_container > .full_width_phablet {
2972    grid-column: 1/-1;
2973  }
2974}
2975@media (max-width: 480px) {
2976  body .sys_grid_container > .full_width_phone {
2977    grid-column: 1/-1;
2978  }
2979}
2980body .sys_flex_container.no_gap,
2981body .sys_grid_container.no_gap {
2982  gap: 0;
2983}
2984body .sys_flex_container.medium_gap,
2985body .sys_grid_container.medium_gap {
2986  gap: 40px;
2987}
2988body .sys_flex_container.large_gap,
2989body .sys_grid_container.large_gap {
2990  gap: 80px;
2991}
2992@media (max-width: 1024px) {
2993  body .sys_flex_container.no_gap_tablet,
2994  body .sys_grid_container.no_gap_tablet {
2995    gap: 0px;
2996  }
2997}
2998@media (max-width: 1024px) {
2999  body .sys_flex_container.small_gap_tablet,
3000  body .sys_grid_container.small_gap_tablet {
3001    gap: 20px;
3002  }
3003}
3004@media (max-width: 1024px) {
3005  body .sys_flex_container.medium_gap_tablet,
3006  body .sys_grid_container.medium_gap_tablet {
3007    gap: 40px;
3008  }
3009}
3010@media (max-width: 1024px) {
3011  body .sys_flex_container.large_gap_tablet,
3012  body .sys_grid_container.large_gap_tablet {
3013    gap: 80px;
3014  }
3015}
3016@media (max-width: 768px) {
3017  body .sys_flex_container.no_gap_phablet,
3018  body .sys_grid_container.no_gap_phablet {
3019    gap: 0px;
3020  }
3021}
3022@media (max-width: 768px) {
3023  body .sys_flex_container.small_gap_phablet,
3024  body .sys_grid_container.small_gap_phablet {
3025    gap: 20px;
3026  }
3027}
3028@media (max-width: 768px) {
3029  body .sys_flex_container.medium_gap_phablet,
3030  body .sys_grid_container.medium_gap_phablet {
3031    gap: 40px;
3032  }
3033}
3034@media (max-width: 768px) {
3035  body .sys_flex_container.large_gap_phablet,
3036  body .sys_grid_container.large_gap_phablet {
3037    gap: 80px;
3038  }
3039}
3040@media (max-width: 480px) {
3041  body .sys_flex_container.no_gap_phone,
3042  body .sys_grid_container.no_gap_phone {
3043    gap: 0px;
3044  }
3045}
3046@media (max-width: 480px) {
3047  body .sys_flex_container.small_gap_phone,
3048  body .sys_grid_container.small_gap_phone {
3049    gap: 20px;
3050  }
3051}
3052@media (max-width: 480px) {
3053  body .sys_flex_container.medium_gap_phone,
3054  body .sys_grid_container.medium_gap_phone {
3055    gap: 40px;
3056  }
3057}
3058@media (max-width: 480px) {
3059  body .sys_flex_container.large_gap_phone,
3060  body .sys_grid_container.large_gap_phone {
3061    gap: 80px;
3062  }
3063}
3064body div[data-type="locations-social"] {
3065  color: white;
3066}
3067body div[data-type="locations-social"] a:hover {
3068  color: inherit;
3069}
3070body div[data-type="locations-social"] > div {
3071  transition: background 0.2s;
3072}
3073body div[data-type="locations-social"] div[data-type="facebook"] {
3074  background: #4267b2;
3075}
3076body div[data-type="locations-social"] div[data-type="facebook"]:hover {
3077  background: #6283c5;
3078  color: #ffffff;
3079}
3080body div[data-type="locations-social"] div[data-type="twitter"] {
3081  background: #1da1f2;
3082}
3083body div[data-type="locations-social"] div[data-type="twitter"]:hover {
3084  background: #4db5f5;
3085  color: #ffffff;
3086}
3087body div[data-type="locations-social"] div[data-type="google"] {
3088  background: #db4437;
3089}
3090body div[data-type="locations-social"] div[data-type="google"]:hover {
3091  background: #e36c62;
3092  color: #ffffff;
3093}
3094body div[data-type="locations-social"] div[data-type="instagram"] {
3095  background: #833ab4;
3096}
3097body div[data-type="locations-social"] div[data-type="instagram"]:hover {
3098  background: #9c58c9;
3099  color: #ffffff;
3100}
3101body div[data-type="locations-social"] div[data-type="blog"] {
3102  background: #833ab4;
3103}
3104body div[data-type="locations-social"] div[data-type="blog"]:hover {
3105  background: #9c58c9;
3106  color: #ffffff;
3107}
3108body .sidebar[data-sidebar="true"] > .label {
3109  font-size: 1.5rem;
3110  margin: 1.5rem 0px 0.5rem;
3111  border-bottom: 1px solid #333333;
3112  padding-bottom: 0.5rem;
3113  font-weight: bold;
3114  color: #333333;
3115  font-family: "Lato";
3116}
3117body :-moz-placeholder {
3118  color: #3c3c3c;
3119  font-family: "Asap";
3120  text-decoration: none;
3121  font-weight: normal;
3122  opacity: 0.8;
3123}
3124body ::-moz-placeholder {
3125  color: #3c3c3c;
3126  font-family: "Asap";
3127  text-decoration: none;
3128  font-weight: normal;
3129  opacity: 0.8;
3130}
3131body ::-webkit-input-placeholder {
3132  color: #3c3c3c;
3133  font-family: "Asap";
3134  text-decoration: none;
3135  font-weight: normal;
3136  opacity: 0.8;
3137}
3138body :-ms-input-placeholder {
3139  color: #3c3c3c;
3140  font-family: "Asap";
3141  text-decoration: none;
3142  font-weight: normal;
3143  opacity: 0.8;
3144}
3145body form * {
3146  font-family: "Asap";
3147  text-decoration: none;
3148  font-weight: normal;
3149  font-size: 1rem;
3150}
3151body form div[data-container="file"] {
3152  margin: 5px;
3153  transition: opacity 0.4s;
3154}
3155body form div[data-container="file"]:last-of-type label {
3156  background-image: linear-gradient(to bottom right,#333333 25%,#dac298 75%);
3157}
3158body form [data-container="file"] label {
3159  background-image: linear-gradient(to bottom right,#dac298 25%,#333333 75%);
3160}
3161body div[data-micro-template="accordion_container"] {
3162  width: 100%;
3163  max-width: 100%;
3164  font-family: "Asap";
3165}
3166body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title {
3167  display: flex;
3168  justify-content: space-between;
3169  align-items: center;
3170  color: #333333;
3171  cursor: pointer;
3172  border-bottom: 1px solid #3c3c3c;
3173  padding-bottom: 0px;
3174}
3175body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text,
3176body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle {
3177  font-size: 1.5rem;
3178  font-weight: 400;
3179}
3180@media (max-width: 1024px) {
3181  body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text,
3182  body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle {
3183    font-size: 1.2rem;
3184  }
3185}
3186@media (max-width: 480px) {
3187  body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text,
3188  body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle {
3189    font-size: 1.1rem;
3190  }
3191}
3192body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active {
3193  border-color: white;
3194  color: white;
3195}
3196body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active .accordion_title_text {
3197  color: white;
3198}
3199body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_body {
3200  display: none;
3201  padding: 20px 0;
3202  line-height: 1.35em;
3203  text-align: left;
3204}
3205body section[data-type="system-lightbox-container"] .close-icon {
3206  background-color: white;
3207  border-radius: 50%;
3208  box-sizing: border-box;
3209  border: 5px solid white;
3210  display: flex;
3211  justify-content: center;
3212  align-items: center;
3213  top: -10px;
3214  right: -10px;
3215}
3216body section[data-type="system-lightbox-container"] .next-icon {
3217  background-color: white;
3218  border-radius: 50%;
3219  box-sizing: border-box;
3220  border: 4px solid white;
3221  display: flex;
3222  justify-content: center;
3223  align-items: center;
3224  position: absolute;
3225  top: 50%;
3226  right: 0px;
3227  font-size: 2rem;
3228  transform: translate(10px,-50%);
3229  cursor: pointer;
3230}
3231body section[data-type="system-lightbox-container"] .prev-icon {
3232  background-color: white;
3233  border-radius: 50%;
3234  box-sizing: border-box;
3235  border: 4px solid white;
3236  display: flex;
3237  justify-content: center;
3238  align-items: center;
3239  position: absolute;
3240  top: 50%;
3241  left: 0px;
3242  font-size: 2rem;
3243  transform: translate(-10px,-50%);
3244  cursor: pointer;
3245}
3246body section[data-type="system-lightbox-container"] .gallery_grid_modal {
3247  display: none;
3248  position: fixed;
3249  height: 100vh;
3250  width: 100%;
3251  top: 0;
3252  left: 0;
3253  background-color: rgba(0,0,0,0.6);
3254  justify-content: center;
3255  align-items: center;
3256  opacity: 0;
3257  transition: all 0.4s ease-in-out;
3258  z-index: 99999999;
3259}
3260body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container {
3261  cursor: pointer;
3262  margin: 5%;
3263  position: relative;
3264}
3265body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container img {
3266  max-height: 80vh;
3267}
3268body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content {
3269  display: flex;
3270  flex-direction: column;
3271}
3272body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button {
3273  order: 5;
3274  margin: 0;
3275}
3276body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow {
3277  position: absolute;
3278  top: 50%;
3279}
3280body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow svg {
3281  color: #fff;
3282  font-size: 36px;
3283  transition: all 0.2s;
3284}
3285body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow:hover svg {
3286  transform: scale(1.2);
3287}
3288body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left {
3289  left: -50px;
3290}
3291body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right {
3292  right: -50px;
3293}
3294body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption {
3295  position: absolute;
3296  bottom: 100px;
3297  width: 100%;
3298  text-align: center;
3299  background: rgba(0,0,0,0.6);
3300}
3301body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text {
3302  color: #fff;
3303  font-size: 1.25em;
3304  margin: 0;
3305  font-family: "Asap";
3306  padding: 15px 0;
3307}
3308body section[data-type="system-lightbox-container"] .gallery_grid_modal.show {
3309  display: flex;
3310  opacity: 1;
3311}
3312@media (max-width: 768px) {
3313  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption {
3314    bottom: 75px;
3315  }
3316  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text {
3317    font-size: 1em;
3318    padding: 5px;
3319  }
3320  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left {
3321    left: -40px;
3322  }
3323  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right {
3324    right: -40px;
3325  }
3326  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button {
3327    padding: 10px;
3328  }
3329}
3330@media (max-width: 480px) {
3331  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption {
3332    bottom: 50px;
3333  }
3334  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow {
3335    bottom: -40px;
3336    top: initial;
3337  }
3338  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left {
3339    left: 20%;
3340  }
3341  body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right {
3342    right: 20%;
3343  }
3344}
3345body .responsive_video {
3346  padding-bottom: 56.25%;
3347  position: relative;
3348}
3349body .responsive_video iframe,
3350body .responsive_video video {
3351  position: absolute;
3352  height: 100%;
3353  width: 100%;
3354  top: 0;
3355  left: 0;
3356}
3357body .ul_column {
3358  column-count: 2;
3359}
3360@media (max-width: 768px) {
3361  body .ul_column {
3362    column-count: 2;
3363  }
3364}
3365@media (max-width: 480px) {
3366  body .ul_column {
3367    column-count: 1;
3368  }
3369}
3370body section .content_container .content div[data-micro-template="invisalign_list_container"] {
3371  display: grid;
3372  grid-template-columns: repeat(4,1fr);
3373  gap: 40px 20px;
3374}
3375@media (max-width: 1366px) {
3376  body section .content_container .content div[data-micro-template="invisalign_list_container"] {
3377    grid-template-columns: repeat(3,1fr);
3378  }
3379}
3380@media (max-width: 768px) {
3381  body section .content_container .content div[data-micro-template="invisalign_list_container"] {
3382    grid-template-columns: repeat(2,1fr);
3383  }
3384}
3385@media (max-width: 480px) {
3386  body section .content_container .content div[data-micro-template="invisalign_list_container"] {
3387    grid-template-columns: repeat(1,1fr);
3388    gap: 20px 10px;
3389  }
3390}
3391@media (max-width: 480px) {
3392  body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .image {
3393    display: none;
3394  }
3395}
3396body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text {
3397  text-align: center;
3398}
3399@media (max-width: 480px) {
3400  body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text {
3401    text-align: left;
3402  }
3403}
3404body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text p {
3405  margin: 0;
3406}
3407body section .content_container .content .invisalign_video_container {
3408  display: grid;
3409  grid-template-columns: repeat(2,1fr);
3410  gap: 40px;
3411}
3412@media (max-width: 480px) {
3413  body section .content_container .content .invisalign_video_container {
3414    grid-template-columns: repeat(1,1fr);
3415    gap: 20px;
3416  }
3417}
3418body section .content_container .content .invisalign_video_container .invisalign_list .text {
3419  text-align: center;
3420}
3421body section .content_container .content .invisalign_video_container .invisalign_list .text p {
3422  color: #dac298;
3423  font-size: 1.2rem;
3424}
3425@media (max-width: 480px) {
3426  body section .content_container .content .invisalign_video_container .invisalign_list .text p {
3427    font-size: 1.1rem;
3428  }
3429}
3430body section .content_container .content .service_video_container {
3431  margin: 60px auto;
3432  display: flex;
3433  border-bottom: 10px solid #dac298;
3434  box-shadow: 6px 5px 8px 0px #bfbfbf;
3435}
3436@media (max-width: 768px) {
3437  body section .content_container .content .service_video_container {
3438    flex-direction: column;
3439  }
3440}
3441body section .content_container .content .service_video_container > div {
3442  flex: 1;
3443}
3444body section .content_container .content .service_video_container .service_video_text {
3445  padding: 0 40px;
3446  background: #333333;
3447  box-sizing: border-box;
3448  display: flex;
3449  justify-content: center;
3450  align-items: center;
3451}
3452@media (max-width: 640px) {
3453  body section .content_container .content .service_video_container .service_video_text {
3454    padding: 0 20px;
3455  }
3456}
3457body section .content_container .content .service_video_container .service_video_text h4 {
3458  color: #fff;
3459  font-size: 1rem;
3460  font-style: italic;
3461  line-height: 1.4em;
3462  font-weight: 400;
3463}
3464body section .content_container .content .service_testimonial_videos {
3465  background: #333333;
3466  padding: 20px 40px;
3467  border-bottom: 10px solid #dac298;
3468  text-align: center;
3469  box-shadow: 6px 5px 8px 0px #bfbfbf;
3470}
3471@media (max-width: 640px) {
3472  body section .content_container .content .service_testimonial_videos {
3473    padding: 20px;
3474  }
3475}
3476body section .content_container .content .service_testimonial_videos .secondary_divider {
3477  display: inline-block;
3478  margin: 0 auto;
3479  height: 3px;
3480  background: #dac298;
3481  width: 150px;
3482}
3483body section .content_container .content .service_testimonial_videos h2 {
3484  color: #fff;
3485  font-size: 2rem;
3486  margin-bottom: 10px;
3487  padding: 0;
3488  font-weight: 400;
3489}
3490body section .content_container .content .service_testimonial_videos h2.text_center {
3491  text-align: center;
3492}
3493body section .content_container .content .service_testimonial_videos p {
3494  color: #fff;
3495}
3496body section .content_container .content .service_testimonial_videos .testimonial_videos_container {
3497  display: flex;
3498  flex-wrap: wrap;
3499  justify-content: space-between;
3500  text-align: center;
3501}
3502body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video {
3503  flex-basis: 48%;
3504  margin: 20px 0;
3505}
3506@media (max-width: 550px) {
3507  body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video {
3508    flex-basis: 100%;
3509  }
3510}
3511body section .content_container .content .alternating_service_container {
3512  margin-top: 20px;
3513}
3514body section .content_container .content .alternating_service_container .alternating_service {
3515  display: flex;
3516  justify-content: space-between;
3517  align-items: center;
3518  margin-bottom: 30px;
3519  flex-wrap: wrap;
3520}
3521body section .content_container .content .alternating_service_container .alternating_service .image,
3522body section .content_container .content .alternating_service_container .alternating_service .text {
3523  flex-basis: 48%;
3524}
3525@media (max-width: 768px) {
3526  body section .content_container .content .alternating_service_container .alternating_service .image,
3527  body section .content_container .content .alternating_service_container .alternating_service .text {
3528    flex-basis: 100%;
3529  }
3530}
3531body section .content_container .content .alternating_service_container .alternating_service .text h3 {
3532  font-size: 1.4rem;
3533}
3534@media (max-width: 768px) {
3535  body section .content_container .content .alternating_service_container .alternating_service .image {
3536    text-align: center;
3537  }
3538}
3539body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image {
3540  order: 2;
3541  text-align: right;
3542}
3543@media (max-width: 768px) {
3544  body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image {
3545    text-align: center;
3546    order: initial;
3547  }
3548}
3549</style><style></style><style>.section_1 {
3550  background-color: #333333;
3551  color: white;
3552}
3553.section_1 .content_container .content .banner_container {
3554  height: 60px;
3555  display: flex;
3556  justify-content: space-between;
3557  margin: 0 50px;
3558  padding: 10px 0px;
3559  align-items: center;
3560}
3561.section_1 .content_container .content .banner_container .left {
3562  display: flex;
3563  flex-direction: column;
3564}
3565.section_1 .content_container .content .banner_container .left .address {
3566  font-size: 1.3rem;
3567  line-height: 1.5rem;
3568  letter-spacing: 1px;
3569  font-family: "Lato";
3570}
3571.section_1 .content_container .content .banner_container .left .socials {
3572  line-height: 1.3rem;
3573  display: flex;
3574  margin-top: 5px;
3575}
3576.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] {
3577  font-size: 1.2rem;
3578  margin: 0 5px;
3579}
3580.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] a {
3581  color: #ffffff;
3582}
3583.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type {
3584  margin-left: 0;
3585}
3586.section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type {
3587  margin-right: 0;
3588}
3589.section_1 .content_container .content .banner_container .right {
3590  display: flex;
3591}
3592.section_1 .content_container .content .banner_container .right .phone {
3593  display: flex;
3594  flex-direction: column;
3595  font-family: "Lato";
3596}
3597.section_1 .content_container .content .banner_container .right .phone .number {
3598  font-size: 1.8rem;
3599  color: #ffffff;
3600}
3601.section_1 .content_container .content .banner_container .right .phone .number:hover {
3602  color: #dac298;
3603}
3604.section_1 .content_container .content .banner_container .right .tracking {
3605  margin-left: 10px;
3606  display: flex;
3607  font-family: "Lato";
3608  flex-direction: column;
3609}
3610.section_1 .content_container .content .banner_container .right .tracking .number {
3611  font-size: 1.8rem;
3612  color: white;
3613}
3614.section_1 .content_container .content .banner_container .right .tracking .number:hover {
3615  color: #dac298;
3616}
3617.section_1 .content_container .content .banner_container .right .tracking[data-show="false"] {
3618  display: none;
3619}
3620@media (max-width: 1024px) {
3621  .section_1 .content_container .content .banner_container {
3622    height: 80px;
3623    margin: 0 30px;
3624  }
3625  .section_1 .content_container .content .banner_container .left .address {
3626    display: none;
3627  }
3628  .section_1 .content_container .content .banner_container .left .socials {
3629    margin-top: 0px;
3630  }
3631  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] {
3632    font-size: 1.6rem;
3633    margin: 0 5px;
3634  }
3635  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type {
3636    margin-left: 0;
3637  }
3638  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type {
3639    margin-right: 0;
3640  }
3641  .section_1 .content_container .content .banner_container .right .phone .number {
3642    font-size: 1.4rem;
3643  }
3644  .section_1 .content_container .content .banner_container .right .tracking .number {
3645    font-size: 1.4rem;
3646  }
3647}
3648@media (max-width: 768px) {
3649  .section_1 .content_container .content .banner_container {
3650    height: 80px;
3651    margin: 0 30px;
3652  }
3653  .section_1 .content_container .content .banner_container .left .address {
3654    display: none;
3655  }
3656  .section_1 .content_container .content .banner_container .left .socials {
3657    margin-top: 0px;
3658  }
3659  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] {
3660    font-size: 1.5rem;
3661    margin: 0 5px;
3662  }
3663  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type {
3664    margin-left: 0;
3665  }
3666  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type {
3667    margin-right: 0;
3668  }
3669  .section_1 .content_container .content .banner_container .right .phone .label {
3670    font-size: .85rem;
3671  }
3672  .section_1 .content_container .content .banner_container .right .phone .number {
3673    font-size: 1.3rem;
3674  }
3675  .section_1 .content_container .content .banner_container .right .tracking .label {
3676    font-size: .85rem;
3677  }
3678  .section_1 .content_container .content .banner_container .right .tracking .number {
3679    font-size: 1.3rem;
3680  }
3681}
3682@media (max-width: 600px) {
3683  .section_1 .content_container .content .banner_container {
3684    height: 80px;
3685    margin: 0 10px;
3686    flex-direction: column;
3687  }
3688  .section_1 .content_container .content .banner_container .left .socials {
3689    margin-top: 5px;
3690  }
3691  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] {
3692    font-size: 1.2rem;
3693    margin: 0 5px;
3694  }
3695  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type {
3696    margin-left: 0;
3697  }
3698  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type {
3699    margin-right: 0;
3700  }
3701  .section_1 .content_container .content .banner_container .right .phone .label {
3702    font-size: .85rem;
3703  }
3704  .section_1 .content_container .content .banner_container .right .phone .number {
3705    font-size: 1.3rem;
3706  }
3707  .section_1 .content_container .content .banner_container .right .tracking .label {
3708    font-size: .85rem;
3709  }
3710  .section_1 .content_container .content .banner_container .right .tracking .number {
3711    font-size: 1.3rem;
3712  }
3713}
3714@media (max-width: 425px) {
3715  .section_1 .content_container .content .banner_container {
3716    height: auto;
3717  }
3718  .section_1 .content_container .content .banner_container .left .socials {
3719    margin-top: 3px;
3720  }
3721  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"] {
3722    font-size: 1.2rem;
3723    margin: 0 5px 5px;
3724  }
3725  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:first-of-type {
3726    margin-left: 0;
3727  }
3728  .section_1 .content_container .content .banner_container .left .socials [data-micro-template="social_icons"]:last-of-type {
3729    margin-right: 0;
3730  }
3731  .section_1 .content_container .content .banner_container .right {
3732    flex-direction: column;
3733  }
3734  .section_1 .content_container .content .banner_container .right .phone {
3735    margin: 5px 0;
3736    text-align: center;
3737  }
3738  .section_1 .content_container .content .banner_container .right .phone .label {
3739    font-size: .8rem;
3740  }
3741  .section_1 .content_container .content .banner_container .right .phone .number {
3742    font-size: 1.1rem;
3743  }
3744  .section_1 .content_container .content .banner_container .right .tracking {
3745    margin: 5px 0;
3746    text-align: center;
3747    margin-left: 0px;
3748  }
3749  .section_1 .content_container .content .banner_container .right .tracking .label {
3750    font-size: .8rem;
3751  }
3752  .section_1 .content_container .content .banner_container .right .tracking .number {
3753    font-size: 1.1rem;
3754  }
3755}
3756</style>
3757<section class="section_1" data-module="html_module" data-html="/custom/modules/tracking_banner/mod.html" data-json="/custom/modules/tracking_banner/mod.json" data-page="" data-full-path="/">
3758	<div class="content_container">
3759		<div class="content">
3760			
3761			<div class="banner_container">
3762    <div class="left">
3763        <div class="address">
3764            148 East 38th Street<span>, </span>
3765            New York, NY 10016 
3766        </div>
3767        <div class="socials">
3768            <div data-micro-template="social_icons">
3769	<a href="https://www.facebook.com/profile.php?id=61575751475062#" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a>
3770</div><div data-micro-template="social_icons">
3771	<a href="https://www.google.com/maps/place/Heartwise+Cardiology/@40.7485252,-73.9773268,21z/data=!4m6!3m5!1s0x89c25906a6b9e5fb:0x3483795b4d46e516!8m2!3d40.7484683!4d-73.9772785!16s%2Fg%2F1tsyqpvv?entry=ttu&g_ep=EgoyMDI1MDMzMS4wIKXMDSoJLDEwMjExNjQwSAFQAw%3D%3D" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a>
3772</div><div data-micro-template="social_icons">
3773	<a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a>
3774</div>
3775        </div>
3776    </div>
3777    <div class="right">
3778        <div class="phone">
3779            <div class="label">Existing Patients</div>
3780            <a href="tel:+12126794488" class="number tel_12126794488" aria-label="(212) 679-4488" data-click-call="0">(212) 679-4488 </a>
3781        </div>
3782        <div data-show="true" class="tracking">
3783            <div class="label">New Patients</div>
3784            <a href="tel:+12124012665" class="number tel_12124012665" aria-label="(212) 401-2665" data-click-call="0">(212) 401-2665 </a>
3785        </div>
3786    </div>
3787</div>
3788			
3789		</div>
3790		<div class="sidebar" data-sidebar="false">
3791			
3792		</div>
3793	</div>
3794</section><style>.section_2 {
3795  background-color: #ffffff;
3796  height: 100px;
3797  position: relative;
3798  left: 0px;
3799  top: 0px;
3800  z-index: 500;
3801  transition: height 0.2s, background-color 0.4s;
3802  display: flex;
3803  text-transform: uppercase;
3804  align-items: center;
3805  justify-content: center;
3806  padding: 0px 40px;
3807}
3808.section_2 .content_container {
3809  display: flex;
3810  align-items: center;
3811  flex: 0 0 100%;
3812  max-width: 1370px;
3813}
3814.section_2 .content_container .logo {
3815  flex: 0 0 auto;
3816  line-height: 0px;
3817  z-index: 300;
3818}
3819.section_2 .content_container .logo img,
3820.section_2 .content_container .logo picture {
3821  max-height: 100px;
3822  transition: max-height 0.2s;
3823  z-index: 20;
3824  position: relative;
3825}
3826@media (max-width: 425px) {
3827  .section_2 .content_container .logo img,
3828  .section_2 .content_container .logo picture {
3829    height: 85px;
3830    width: 128px;
3831  }
3832}
3833.section_2 .content_container .detail_container .social {
3834  position: absolute;
3835  top: 20px;
3836  left: 20px;
3837  color: white;
3838}
3839.section_2 .content_container .detail_container .social a:hover {
3840  color: #30516a;
3841}
3842.section_2 .content_container .detail_container .social a:not(:last-of-type) {
3843  display: inline-block;
3844  margin-right: 10px;
3845}
3846.section_2 .content_container .detail_container .contact {
3847  position: absolute;
3848  top: 20px;
3849  right: 20px;
3850  color: white;
3851  font-family: "Asap";
3852}
3853.section_2 .content_container .detail_container .contact svg {
3854  position: absolute;
3855  left: -20px;
3856}
3857.section_2 .content_container .detail_container .contact a:hover {
3858  color: #30516a;
3859}
3860.section_2 .content_container nav {
3861  display: flex;
3862  margin: 0px;
3863  z-index: 100;
3864  width: 100%;
3865  text-align: right;
3866  box-sizing: border-box;
3867  color: black;
3868  align-items: center;
3869  justify-content: space-between;
3870  height: 100px;
3871  margin-left: auto;
3872  margin-right: auto;
3873  font-size: .95rem;
3874  font-family: "Asap";
3875}
3876.section_2 .content_container nav a:hover {
3877  color: #30516a;
3878}
3879.section_2 .content_container nav .mobile_menu {
3880  position: absolute;
3881  display: none;
3882  padding-right: inherit;
3883  font-size: 2rem;
3884  cursor: pointer;
3885}
3886.section_2 .content_container nav ul {
3887  padding: 0px;
3888  margin: 0px;
3889}
3890.section_2 .content_container nav ul li {
3891  list-style-type: none;
3892  letter-spacing: 1.5px;
3893}
3894.section_2 .content_container nav ul a {
3895  display: inline-block;
3896}
3897.section_2 .content_container nav ul ul {
3898  display: none;
3899  position: absolute;
3900  padding: 0px;
3901  flex-direction: column;
3902}
3903.section_2 .content_container nav ul > li li {
3904  font-family: "Asap";
3905}
3906.section_2 .content_container nav ul > li li a {
3907  color: white;
3908  line-height: 1.2rem;
3909}
3910.section_2 .content_container nav ul > li li a:hover {
3911  color: #333333;
3912}
3913.section_2 .content_container nav ul > li > ul.group_container {
3914  top: 100px;
3915  box-sizing: border-box;
3916  flex-direction: row;
3917  flex-wrap: wrap;
3918  max-height: 500px;
3919  min-width: 1200px;
3920  max-width: 1200px;
3921  justify-content: center;
3922  background-color: #dac298;
3923  width: initial;
3924  flex-flow: column-wrap;
3925}
3926.section_2 .content_container nav ul > li > ul.group_container h3 {
3927  font-size: 0.9rem;
3928  font-weight: bold;
3929  margin: 0px 0px 0.5rem;
3930  color: #333333;
3931  font-family: "Asap";
3932  text-transform: uppercase;
3933  display: none;
3934}
3935.section_2 .content_container nav ul > li > ul.group_container > li.large_list {
3936  min-width: 580px;
3937}
3938.section_2 .content_container nav ul > li > ul.group_container > li.very_large_list {
3939  min-width: 860px;
3940}
3941.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(1) {
3942  background-color: rgba(32,32,32,0);
3943}
3944.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(2) {
3945  background-color: rgba(64,64,64,0);
3946}
3947.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(3) {
3948  background-color: rgba(64,64,64,0);
3949}
3950.section_2 .content_container nav ul > li > ul.group_container > li:nth-of-type(3) {
3951  background-color: rgba(64,64,64,0);
3952}
3953.section_2 .content_container nav ul > li > ul.group_container > li {
3954  min-width: 400px;
3955  padding-top: 20px;
3956  padding-bottom: 20px;
3957  width: 140px;
3958}
3959.section_2 .content_container nav ul > li > ul.group_container > li > ul {
3960  position: relative;
3961  display: block;
3962  background: none;
3963  margin-bottom: 0.5rem;
3964  padding: 0px 0px 0px 20px;
3965  display: flex;
3966  flex-direction: row;
3967  flex-wrap: wrap;
3968}
3969.section_2 .content_container nav ul > li > ul.group_container > li > ul > li {
3970  line-height: 40px;
3971  text-align: left;
3972  flex-basis: 260px;
3973  margin-right: 20px;
3974}
3975.section_2 .content_container nav ul > li > ul.group_container > li > ul > li:first-of-type {
3976  border-bottom: none;
3977  flex-basis: 100%;
3978}
3979.section_2 .content_container nav ul > li > ul.group_container > li > ul > li:not(:first-of-type) {
3980  border-bottom: 1px solid white;
3981}
3982.section_2 .content_container nav > ul {
3983  margin-left: auto;
3984  display: flex;
3985  height: 100%;
3986}
3987.section_2 .content_container nav > ul > li:last-of-type {
3988  background-color: #30516a;
3989  color: #ffffff;
3990}
3991.section_2 .content_container nav > ul > li:last-of-type a {
3992  color: #ffffff;
3993}
3994.section_2 .content_container nav > ul > li:last-of-type a:hover {
3995  color: #dac298;
3996}
3997.section_2 .content_container nav > ul > li {
3998  display: flex;
3999  justify-content: center;
4000  align-items: center;
4001  text-align: center;
4002  padding: 0px 10px;
4003  font-family: "Asap";
4004}
4005.section_2 .content_container nav > ul > li > ul {
4006  left: 50%;
4007  top: 100px;
4008  transform: translate(-50%);
4009  background-image: linear-gradient(#dac298,rgba(218,194,152,0.9));
4010  width: 100%;
4011  min-width: 290px;
4012}
4013.section_2 .content_container nav > ul > li > ul > li {
4014  line-height: 40px;
4015  width: 100%;
4016  text-align: center;
4017}
4018.section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) {
4019  position: absolute;
4020  left: 100%;
4021  transform: translate(0px,-40px);
4022  background-color: rgba(60,60,60,0.9);
4023}
4024.section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) > li {
4025  line-height: 40px;
4026  width: 140px;
4027}
4028@media (max-width: 1280px) {
4029  .section_2 .content_container nav {
4030    max-width: 100%;
4031    padding: 0px 20px;
4032    box-sizing: border-box;
4033    margin: 20px 0px 0px 0px;
4034    height: initial;
4035  }
4036  .section_2 .content_container nav .mobile_menu {
4037    display: inline-block;
4038    top: 50%;
4039    right: 0px;
4040    transform: translate(0px,-50%);
4041    padding-left: inherit;
4042    margin-right: 20px;
4043  }
4044  .section_2 .content_container nav ul {
4045    background: #333333;
4046  }
4047  .section_2 .content_container nav ul > li {
4048    box-sizing: border-box;
4049  }
4050  .section_2 .content_container nav ul > li > ul.group_container {
4051    max-height: initial;
4052  }
4053  .section_2 .content_container nav ul ul {
4054    position: relative;
4055    transform: initial;
4056  }
4057  .section_2 .content_container nav > ul {
4058    position: absolute;
4059    left: 0px;
4060    display: none;
4061    width: 100%;
4062    top: 100px;
4063    text-align: center;
4064    box-sizing: border-box;
4065    color: white;
4066    background-color: #333333;
4067    padding: 0px 0px;
4068    box-shadow: 10px 10px 40px rgba(0,0,0,0.25);
4069    z-index: 300;
4070  }
4071  .section_2 .content_container nav > ul > li:not(:last-of-type) {
4072    margin: 0px;
4073  }
4074  .section_2 .content_container nav > ul > li:last-of-type {
4075    border-bottom: 1px solid #dac298;
4076  }
4077  .section_2 .content_container nav > ul > li {
4078    width: 100%;
4079    margin: 0px;
4080    border-top: 1px solid #dac298;
4081    font-size: 1rem;
4082    padding: 0px;
4083    line-height: 40px;
4084    display: inline-block;
4085    background-color: #333333;
4086  }
4087  .section_2 .content_container nav > ul > li:first-of-type {
4088    border-top: 0px;
4089  }
4090  .section_2 .content_container nav > ul > li:last-of-type {
4091    border-bottom: 0px;
4092  }
4093  .section_2 .content_container nav > ul > li a {
4094    display: inline-block;
4095    width: 100%;
4096    height: 100%;
4097    color: #ffffff;
4098  }
4099  .section_2 .content_container nav > ul > li > ul {
4100    top: 0px;
4101    padding-top: 0px;
4102    background-color: rgba(102,102,102,0.95);
4103  }
4104  .section_2 .content_container nav > ul > li > ul > li {
4105    width: 100%;
4106    padding: 0px 0px;
4107    box-sizing: border-box;
4108    text-align: center;
4109    background-color: #333333;
4110    background-color: rgba(64,64,64,0.95);
4111  }
4112  .section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) {
4113    position: initial;
4114    left: initial;
4115    padding-top: 20px;
4116    padding-bottom: 20px;
4117    transform: initial;
4118    text-align: center;
4119  }
4120  .section_2 .content_container nav > ul > li > ul > li > ul:not([data-group-container]) > li {
4121    line-height: 40px;
4122    width: 100%;
4123  }
4124  .section_2 .content_container nav > ul > li > ul.group_container {
4125    top: 0px;
4126    max-width: 100%;
4127    max-height: initial;
4128    min-width: 100%;
4129  }
4130  .section_2 .content_container nav > ul > li > ul.group_container h3 {
4131    margin: 0px;
4132    text-align: center;
4133    border: none !important;
4134    color: #dac298;
4135  }
4136  .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(1),
4137  .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(2),
4138  .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(3),
4139  .section_2 .content_container nav > ul > li > ul.group_container > li:nth-of-type(4) {
4140    background-color: #333333;
4141  }
4142  .section_2 .content_container nav > ul > li > ul.group_container > li {
4143    padding: 0px;
4144    min-width: 100%;
4145  }
4146  .section_2 .content_container nav > ul > li > ul.group_container > li > ul {
4147    padding-left: 0px;
4148    margin-bottom: 0px;
4149  }
4150  .section_2 .content_container nav > ul > li > ul.group_container > li > ul > li {
4151    text-align: center;
4152    flex-basis: 100%;
4153    margin-right: 0px;
4154    border-bottom: none;
4155    border: none !important;
4156  }
4157}
4158@media (max-width: 640px) {
4159  .section_2 {
4160    padding: 0px 20px;
4161  }
4162  .section_2 .content_container nav .mobile_menu {
4163    margin-right: 0px;
4164  }
4165}
4166.section_2.not_top,
4167.section_2.condensed {
4168  height: 100px;
4169}
4170.section_2.not_top {
4171  background: white;
4172}
4173.section_2.condensed {
4174  background-color: white;
4175}
4176</style>
4177<section class="section_2" data-module="minimal_menu_v2" data-html="" data-json="/custom/modules/minimal_menu/module.json" data-page="" data-full-path="/">
4178	<div class="content_container">
4179		<div class="logo">
4180			<a href="/" aria-label="link"><picture><source srcset="/cache/lo-custom_images_logo.webp 380w, /cache/custom_images_logo.webp 640w" sizes="(max-width: 380px) 100v
4180w, 640px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a logo with text that reads  HEARTWISE  above a stylized heart symbol, followed by  CARDIOLOGY." class="" src="/custom/images/logo.png" data-lazy-img="false" data-src="/custom/images/logo.png"></picture></a>
4181		</div>
4182		<nav>
4183			<div class="mobile_menu"><i class="fas fa-bars"></i></div><ul><li data-url="/" data-label="Home" data-new-window="" data-group="" data-group-label="">Home</li><li data-url="/" data-label="About Us" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">About Us<ul><li data-url="/our-office/" data-label="Our Office" data-new-window="" data-group="" data-group-label="">Our Office</li><li data-url="/office-tour/" data-label="Office Tour" data-new-window="" data-group="" data-group-label="">Office Tour</li><li data-url="/new-patients/" data-label="New Patients" data-new-window="" data-group="" data-group-label="">New Patients</li><li data-url="/our-community/" data-label="Our Community" data-new-window="" data-group="" data-group-label="">Our Community</li><li data-url="/testimonials/" data-label="Testimonials" data-new-window="" data-group="" data-group-label="">Testimonials</li><li data-url="/faq/" data-label="FAQ" data-new-window="" data-group="" data-group-label="">FAQ</li><li data-url="/articles/" data-label="Recent Articles" data-new-window="" data-group="" data-group-label="">Recent Articles</li></ul></li><li data-url="/staff/" data-label="Our Doctors" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Our Doctors<ul><li data-url="/staff/david-j-harnick-md/" data-label="David J Harnick, MD" data-new-window="">David J Harnick, MD</li><li data-url="/staff/raymonda-rastegar-md-facc/" data-label="Raymonda  Rastegar, MD, FACC" data-new-window="">Raymonda  Rastegar, MD, FACC</li></ul></li><li data-url="/" data-label="Services" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Services<ul><li data-url="/services/ablation-therapy-for-arrhythmias/" data-label="Ablation Therapy for Arrhythmias" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Ablation Therapy for Arrhythmias</li><li data-url="/services/aortic-aneurysm/" data-label="Aortic Aneurysm" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Aortic Aneurysm</li><li data-url="/services/arrhythmia/" data-label="Arrhythmia" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Arrhythmia</li><li data-url="/services/atrial-fibrillation/" data-label="Atrial Fibrillation" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Atrial Fibrillation</li><li data-url="/services/chest-pain/" data-label="Chest Pain" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Chest Pain</li><li data-url="/services/cholesterol-management/" data-label="Cholesterol Management" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Cholesterol Management</li><li data-url="/services/concierge-service/" data-label="Concierge Service" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Concierge Service</li><li data-url="/services/defibrillator/" data-label="Defibrillator" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Defibrillator</li><li data-url="/services/echo/" data-label="Echocardiogram (Echo)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Echocardiogram (Echo)</li><li data-url="/services/electrophysiology/" data-label="Electrophysiology" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Electrophysiology</li><li data-url="/services/event-holter/" data-label="Event & Holter Monitors" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Event & Holter Monitors</li><li data-url="/services/heart-failure/" data-label="Heart Failure" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Heart Failure</li><li data-url="/services/implantable-loop-recorders/" data-label="Implantable Loop Recorders (ILR)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Implantable Loop Recorders (ILR)</li><li data-url="/services/mens-health/" data-label="Men's Health" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Men's Health</li><li data-url="/services/nuclear-stress-testing/" data-label="Nuclear Stress Testing" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Nuclear Stress Testing</li><li data-url="/services/pacemaker/" data-label="Pacemaker" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Pacemaker</li><li data-url="/services/palpitations/" data-label="Palpitations" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Palpitations</li><li data-url="/services/pvd/" data-label="Peripheral Vascular Disease (PVD)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Peripheral Vascular Disease (PVD)</li><li data-url="/services/preventive-cardiology/" data-label="Preventive Cardiology" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Preventive Cardiology</li><li data-url="/services/stroke/" data-label="Stroke/TIA’s and Carotid Disease" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Stroke/TIA’s and Carotid Disease</li><li data-url="/services/syncope/" data-label="Syncope (Fainting)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Syncope (Fainting)</li><li data-url="/services/tilt-table-testing/" data-label="Tilt Table Testing (TTT)" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Tilt Table Testing (TTT)</li><li data-url="/services/valvular-heart-disease-and-heart-murmurs/" data-label="Valvular Heart Disease and Heart Murmurs" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Valvular Heart Disease and Heart Murmurs</li><li data-url="/services/womens-health/" data-label="Women's Health" data-group="arrhythmias" data-group-label="Arrhythmias & Rhythm Disorders">Women's Health</li></ul></li><li data-url="https://1749.portal.athenahealth.com" data-label="Patient Portal" data-new-window="" data-group="" data-group-label="">Patient Portal</li><li data-url="https://payment.patient.athenahealth.com/statement/?src=statement" data-label="Pay Online" data-new-window="" data-group="" data-group-label="">Pay Online</li><li data-url="/contact/" data-label="Contact Us" data-new-window="" data-group="" data-group-label="">Contact Us</li><li data-url="/appointments/" data-label="Request an Appointment" data-new-window="" data-group="" data-group-label="">Request an Appointment</li></ul>		</nav>
4184	</div>		
4185</section>
4185<script>
4186	javascript.prototype[get_id()] = function() {
4187		var json = {"settings":{"group_labels":{"group_1":"Group 1","group_2":"Group 2","group_3":"Group 3","group_4":"Group 4","group_5":"Group 5"},"use_flex":true},"content":{"menu":[{"label":"Home","group":"","url":"\/"},{"label":"About Us","group":"","url":"\/","menu":[{"label":"Our Office","url":"\/our-office\/"},{"label":"Office Tour","url":"\/office-tour\/"},{"label":"New Patients","url":"\/new-patients\/"},{"label":"Our Community","url":"\/our-community\/"},{"label":"Testimonials","url":"\/testimonials\/"},{"label":"FAQ","url":"\/faq\/"},{"label":"Recent Articles","url":"\/articles\/","aleso_articles_required":3}]},{"label":"Our Doctors","url":"\/staff\/","menu":"staff"},{"label":"Services","group":"","url":"\/","menu":"services"},{"label":"Patient Portal","group":"","url":"https:\/\/1749.portal.athenahealth.com"},{"label":"Pay Online","group":"","url":"https:\/\/payment.patient.athenahealth.com\/statement\/?src=statement"},{"label":"Contact Us","group":"","url":"\/contact\/"},{"label":"Request an Appointment","group":"","url":"\/appointments\/"}]}};
4188		var display_type = (
4189			json.hasOwnProperty('settings') &&
4190			json.settings.hasOwnProperty('use_flex') &&
4191			json.settings.use_flex
4192			? 'flex' : 'block'
4193		);
4194		
4195		var scroll_disabled = false;
4196		var scrollbar_width = scrollbar_width();
4197
4198		function open_menu() {
4199			$('.section_2 nav')
4200				.addClass('open');
4201	
4202			if (scroll_disabled) {
4203				return;
4204			}
4205					
4206			scroll_disabled = true;
4207			scrollTop = $(window).scrollTop();
4208
4209			$('body')
4210				.css({
4211				});
4212
4213			$('.section_2 .mobile_menu')
4214				.css({
4215					'transform': 'translate(-'+scrollbar_width+'px, -50%)'
4216				});
4217				
4218			$('.section_2')
4219				.addClass('condensed');
4220
4221			setTimeout(function() {
4222				$('.section_2 nav > ul').animate({
4223					height: 'toggle',
4224					opacity: 'toggle'
4225				}, 200).css('display', 'block');
4226			}, 200);
4227		}
4228
4229		function close_menu(resize) {
4230			setTimeout(function() {
4231				$('.section_2 nav').removeClass('open');
4232				$('.section_2').removeClass('condensed');
4233
4234				if (!scroll_disabled) {
4235					return;
4236				}
4237				
4238				$('body')
4239					.css({
4240						'top': -1 * scrollTop,
4241						'position': 'initial',
4242						'overflow': 'initial',
4243						'pointer-events': 'initial',
4244						'padding-right': 'initial'
4245					});
4246					
4247				$('.section_2 .mobile_menu')
4248					.css({
4249						'transform': 'translate(0px, -50%)'
4250					});
4251				
4252				scroll_disabled = false;			
4253				$(window).scrollTop(scrollTop);
4254			}, 200);
4255
4256			if (!resize) {
4257				$('.section_2 nav > ul').animate({
4258					height: 'toggle',
4259					opacity: 'toggle'
4260				}, 200).css('display', 'block');
4261			}
4262		}
4263		
4264		function scrollbar_width() {
4265			var div = $('<div style="width: 50px; height: 50px; overflow: hidden; position: absolute; top:-200px; left: -200px ;"><div style="height: 100px;">');
4266			$('body').append(div);
4267			var w1 = $('div', div).innerWidth();
4268			div.css('overflow-y', 'scroll');
4269			var w2 = $('div', div).innerWidth();
4270			$(div).remove();
4271			return (w1 - w2);
4272		}
4273
4274		// Convert LI elements to links
4275		$('.section_2 nav *[data-url]:not([data-url=""])').each(function() {
4276			$(this).contents().filter(function() {
4277				return this.nodeType == 3;
4278			})
4279			.replaceWith('<a href="'+$(this).attr('data-url')+'">'+$(this).attr('data-label')+'');
4280			if ($(this).attr('data-url').includes('http')) {
4281				$(this).children('a').attr('target', '_blank');
4282				$(this).children('a').attr('rel', 'noopener');
4283			}
4284		});
4285		
4286		// Find UL elements containing groups and categorize them
4287		$('.section_2 nav ul > li').each(function() {
4288			if ($(this).attr('data-group')) {
4289				var parent_ul	= $(this).closest('ul');
4290				var group		= $(this).attr('data-group')
4291
4292				$(parent_ul).addClass('group_container');
4293
4294				if ($(this).siblings('li[data-group-container="'+group+'"]').length == 0) {
4295					group_container_li =
4296						$('<li />')
4297							.attr('data-group-container', group)
4298							.appendTo(parent_ul);
4299
4300					group_container_ul =
4301						$('<ul />')
4302							.attr('data-group-container', group)
4303							.appendTo(group_container_li);
4304
4305					group_label =
4306						$('<li />')
4307							.appendTo(group_container_ul);
4308
4309					group_header =
4310						$('<h3 />')
4311							.html($(this).attr('data-group-label'))
4312							.appendTo(group_label);
4313				}
4314				
4315				$(this).appendTo($(this).siblings('li[data-group-container="'+group+'"]').children('ul[data-group-container="'+group+'"]'));
4316			}
4317		});
4318		
4319		$('.section_2 nav > ul > li > ul > li:not([data-group-container])').each(function() {
4320			$(this).closest('ul').closest('li').css('position', 'relative');
4321		});
4322			
4323		// Set click and hover events
4324		$('.section_2 nav li:not([data-group-container]):has(> ul)').mouseover(function() {
4325			if ($('.section_2 .mobile_menu').css('display') == 'none') {
4326				$('> ul', this).stop().fadeIn(200).css('display', 'flex');
4327			}
4328		});
4329		
4330		// Adjust columns based on the menu height specified in the CSS (Desktop only)
4331		$('.section_2 nav > ul > li').mouseover(function() {
4332			if ($('.section_2 .mobile_menu').css('display') == 'none') {
4333				$('ul[data-group-container]').each(function() {
4334					if ($(this).height() > $(this).closest('ul.group_container').height()) {
4335						var large_list = $(this).closest($('li[data-group-container]'));
4336						
4337						if (!$(large_list).hasClass('large_list')) {
4338							$(large_list).addClass('large_list');
4339							
4340							if ($(this).height() > $(this).closest('ul.group_container').height()) {
4341								$(large_list).addClass('very_large_list');
4342							}
4343						}
4344					}
4345				});
4346			}
4347		});
4348
4349		$('.section_2 nav li:not([data-group-container]):has(> ul)').mouseout(function() {
4350			if ($('.section_2 .mobile_menu').css('display') == 'none') {
4351				$('> ul', this).stop().fadeOut(200);
4352			}
4353		});
4354
4355		$('.section_2 nav .mobile_menu').click(function() {
4356			if ($('.section_2 .overlay').hasClass('display')) {
4357				$('.section_2 .overlay').removeClass('display');
4358			}
4359			else {
4360				$('.section_2 .overlay').addClass('display');
4361			}
4362
4363			if ($('.section_2 nav').hasClass('open')) {
4364				close_menu(false);
4365			}
4366			else {
4367				open_menu();
4368			}
4369		});
4370
4371		$('.section_2 nav li:has(> ul)').click(function(e) {
4372			e.preventDefault();
4373			if ($('.section_2 .mobile_menu').css('display') != 'none') {
4374				$(this).children('ul').animate({
4375					height: 'toggle',
4376					opacity: 'toggle'
4377				}, 200, function() {
4378					// Add code here to display scroll arrow
4379				}).css('display', 'block');
4380			}
4381		});
4382		
4383		$('.section_2 nav li > ul > li').click(function(e) {
4384			e.stopPropagation();
4385		});
4386
4387		// Close the menu on horizontal resize
4388		var window_width = $(window).width();
4389
4390		window.addEventListener('resize', function() {
4391			if ($(window).width() == window_width) {
4392				return;
4393			}
4394			else {
4395				close_menu(true);
4396				$('.section_2 .overlay').removeClass('display');
4397				$('.large_list').removeClass('large_list');
4398				$('.very_large_list').removeClass('very_large_list');
4399				if ($('.section_2 .mobile_menu').css('display') == 'none') {
4400					$('.section_2 nav > ul').css('display', display_type);
4401				}
4402				else {
4403					$('.section_2 nav > ul').fadeOut(0);
4404					$('.section_2 nav > ul  > li > ul').fadeOut(0);
4405				}
4406			}
4407			window_width = $(window).width();
4408		});
4409	}
4410</script>
vendor: 1 bytes, line 4410
4410
4411<script>
4412	javascript.prototype[get_id()] = function() {
4413		$(document).scroll(function() {
4414			var position	= $(document).scrollTop();
4415			
4416			if (position > 100) {
4417				if (!$('.section_2').hasClass('not_top')) {
4418					$('.section_2').addClass('not_top');
4419				}
4420			}
4421			else {
4422				if ($('.section_2').hasClass('not_top')) {
4423					$('.section_2').removeClass('not_top');
4424				}
4425			}
4426		});
4427	}
4428</script>
4428<style>.section_3 {
4429  height: calc(100vh - 200px);
4430  min-height: 600px;
4431}
4432@media (max-width: 1440px) {
4433  .section_3 {
4434    height: 700px;
4435    min-height: 0px;
4436  }
4437}
4438@media (max-width: 1024px) {
4439  .section_3 {
4440    height: 650px;
4441  }
4442}
4443@media (max-width: 768px) {
4444  .section_3 {
4445    height: 380px;
4446  }
4447}
4448@media (max-width: 480px) {
4449  .section_3 {
4450    height: 300px;
4451  }
4452}
4453.section_3 .content_container {
4454  width: 100%;
4455  height: 100%;
4456}
4457.section_3 .content_container .content {
4458  width: 100%;
4459  height: 100%;
4460}
4461.section_3 .content_container .content .banner_content_container {
4462  position: absolute;
4463  z-index: 100;
4464  width: 30%;
4465  min-width: 700px;
4466  height: 100%;
4467  display: flex;
4468  justify-content: center;
4469  align-items: center;
4470  background-color: rgba(51,51,51,0.5);
4471}
4472@media (max-width: 1440px) {
4473  .section_3 .content_container .content .banner_content_container {
4474    min-width: 500px;
4475  }
4476}
4477@media (max-width: 1024px) {
4478  .section_3 .content_container .content .banner_content_container {
4479    width: 100%;
4480    min-width: initial;
4481    display: none;
4482  }
4483}
4484.section_3 .content_container .content .banner_content_container .banner_content {
4485  padding: 0 20px 0 40px;
4486  width: 80%;
4487}
4488.section_3 .content_container .content .banner_content_container .banner_content h3 {
4489  color: white;
4490  text-align: left;
4491  font-size: 2.4rem;
4492}
4493.section_3 .content_container .content .banner_content_container .banner_content h4 {
4494  color: white;
4495  text-align: left;
4496}
4497.section_3 .content_container .content .banner_content_container .banner_content p {
4498  color: #ffffff;
4499}
4500@media (max-width: 1024px) {
4501  .section_3 .content_container .content .banner_content_container .banner_content h3 {
4502    text-align: center;
4503  }
4504  .section_3 .content_container .content .banner_content_container .banner_content h4 {
4505    text-align: center;
4506  }
4507}
4508@media (max-width: 768px) {
4509  .section_3 .content_container .content .banner_content_container .banner_content h3 {
4510    font-size: 1.5rem;
4511  }
4512  .section_3 .content_container .content .banner_content_container .banner_content h4 {
4513    font-size: 1.2rem;
4514  }
4515}
4516@media (max-width: 425px) {
4517  .section_3 .content_container .content .banner_content_container .banner_content h3 {
4518    font-size: 1rem;
4519  }
4520  .section_3 .content_container .content .banner_content_container .banner_content h4 {
4521    font-size: .8rem;
4522  }
4523}
4524.section_3 .content_container .content .banner_content_container .banner_content .button_container {
4525  display: flex;
4526  justify-content: flex-start;
4527}
4528@media (max-width: 1024px) {
4529  .section_3 .content_container .content .banner_content_container .banner_content .button_container {
4530    justify-content: center;
4531  }
4532}
4533.section_3 .content_container .content .banner_content_container .banner_content .button_container .button {
4534  color: #333333;
4535  background-color: #dac298;
4536  font-weight: 600;
4537  font-size: 0.9rem;
4538  padding: 20px 30px;
4539  display: inline-block;
4540  border-top-left-radius: 10px;
4541  border-bottom-left-radius: 10px;
4542  border-bottom-right-radius: 10px;
4543  letter-spacing: 1px;
4544  transition: all 0.2s;
4545  border-top-right-radius: 0px;
4546  border: none;
4547  text-transform: uppercase;
4548  margin-top: 10px;
4549}
4550.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:hover {
4551  background-color: #30516a;
4552  color: #ffffff;
4553}
4554.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:first-of-type {
4555  margin-left: 0px;
4556}
4557.section_3 .content_container .content .banner_content_container .banner_content .button_container .button:last-of-type {
4558  margin-right: 0px;
4559}
4560@media (max-width: 768px) {
4561  .section_3 .content_container .content .banner_content_container .banner_content .button_container .button {
4562    padding: 10px 20px;
4563    font-size: 1.2rem;
4564  }
4565}
4566@media (max-width: 425px) {
4567  .section_3 .content_container .content .banner_content_container .banner_content .button_container .button {
4568    font-size: 1rem;
4569    padding: 5px 10px;
4570  }
4571}
4572.section_3 .content_container .content .block_container {
4573  position: absolute;
4574  width: 100%;
4575  height: 100%;
4576  opacity: 0;
4577  transition: opacity 2s;
4578  overflow: hidden;
4579}
4580.section_3 .content_container .content .block_container .block {
4581  height: 100%;
4582}
4583.section_3 .content_container .content .block_container .block .background_container {
4584  width: 100%;
4585  height: 100%;
4586  position: relative;
4587  background-color: rgba(0,0,0,0.2);
4588}
4589.section_3 .content_container .content .block_container .block .background_container .background_content_container {
4590  position: absolute;
4591  width: 100%;
4592  height: 100%;
4593  display: flex;
4594  flex-direction: column;
4595  justify-content: center;
4596  align-items: center;
4597  transition: width 400ms;
4598}
4599@media (max-width: 1440px) {
4600  .section_3 .content_container .content .block_container .block .background_container .background_content_container {
4601    width: 65%;
4602  }
4603}
4604@media (max-width: 1024px) {
4605  .section_3 .content_container .content .block_container .block .background_container .background_content_container {
4606    width: 100%;
4607  }
4608}
4609.section_3 .content_container .content .block_container .block .background_container .background_content_container .background_content {
4610  width: 80%;
4611  display: flex;
4612  flex-direction: column;
4613}
4614.section_3 .content_container .content .block_container .block .background_container .background_image {
4615  object-position: 18% 50%;
4616  z-index: -100;
4617}
4618.section_3 .content_container .content .block_container .block .background_container .background_image[src="/custom/images/staff/banner1.jpg"],
4619.section_3 .content_container .content .block_container .block .background_container .background_image[src="/custom/images/family/banner3.jpg"] {
4620  object-position: 50% 50%;
4621}
4622@media (max-width: 1024px) {
4623  .section_3 .content_container .content .block_container .block .background_container .background_image {
4624    object-position: right;
4625  }
4626}
4627.section_3 .content_container .content .block_container .block .background_container.expand {
4628  transition: transform 8s;
4629  transform: scale(1.1);
4630  transform-origin: center center;
4631}
4632.section_3 .content_container .content .block_container.start {
4633  transition: opacity 0s;
4634  opacity: 1;
4635}
4636.section_3 .content_container .content .block_container.show {
4637  opacity: 1;
4638}
4639</style>
4640<section class="section_3" data-module="sphinx_banner_custom" data-html="/custom/modules/sphinx_banner_custom/1.0.0/mod.html" data-json="/custom/modules/sphinx_banner/mod.json" data-page="" data-full-path="/">
4641	<div class="content_container">
4642		<div class="content">
4643			<div class="block_container">
4644	<div class="block">
4645		<div class="background_container">
4646			<picture class="background_image"><source srcset="/cache/sm-custom_images_home_banner_1.webp 420w, /cache/md-custom_images_home_banner_1.webp 640w, /cache/lg-custom_images_home_banner_1.webp 1024w, /cache/xl-custom_images_home_banner_1.webp 1366w, /cache/custom_images_home_banner_1.webp 1600w" sizes="(max-width: 420px) 100v
4646w, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1600px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a cityscape with the iconic Empire State Building and the Manhattan skyline visible in the background under a clear blue sky." class="background_image" src="/custom/images/home_banner/1.jpg" data-lazy-img="false" data-src="/custom/images/home_banner/1.jpg"></picture>
4647		</div>
4648	</div>
4649</div><div class="block_container">
4650	<div class="block">
4651		<div class="background_container">
4652			<picture class="background_image"><source srcset="/cache/sm-custom_images_home_banner_2.webp 420w, /cache/md-custom_images_home_banner_2.webp 640w, /cache/lg-custom_images_home_banner_2.webp 1024w, /cache/xl-custom_images_home_banner_2.webp 1366w, /cache/custom_images_home_banner_2.webp 1600w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1600px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a woman making a heart gesture with her hands against a sunlit background." class="background_image" src="/custom/images/home_banner/2.jpg" data-lazy-img="false" data-src="/custom/images/home_banner/2.jpg"></picture>
4653		</div>
4654	</div>
4655</div>
4656			<div class="banner_content_container">
4657				<div class="banner_content">
4658					<h4>
4659   David J Harnick, MD, <br>Raymonda Rastegar, MD FACC
4660
4661</h4>
4662<h3>Heartwise Cardiology</h3>
4663<p>Cardiology & Electrophysiology located in Murray Hill, New York.</p>
4664					<div class="button_container"><a href="/appointments/" class="button" role="button" aria-label="Request an Appointment">Request an Appointment</a></div>			
4665				</div>
4666			</div>
4667		</div>
4668	</div>
4669</section>
4669<script>
4670	javascript.prototype[get_id()] = function() {
4671		var json = {"settings":{"slide_duration":6,"parallax":true,"header":"\/custom\/modules\/sphinx_banner\/header.html","mobile_image":"\/custom\/images\/home_banner\/2.jpg"},"content":[{"image":"\/custom\/images\/home_banner\/1.jpg"},{"image":"\/custom\/images\/home_banner\/2.jpg"}],"buttons":[{"label":"Request an Appointment","url":"\/appointments\/"}]};
4672		
4673		var banner_fade_counter = 1;
4674		var banner_fade_duration = json.settings.slide_duration * 1000;
4675		
4676		$('.section_3 .block_container:first-of-type').addClass('active');
4677		$('.section_3 .block_container:first-of-type').addClass('start');
4678
4679		
4680		setInterval(function() {
4681			if ($('.section_3 .block_container').length > 1) {
4682				$('.section_3 .block_container.active').removeClass('active');
4683				$('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').css('z-index', '10');
4684				banner_fade_counter++;
4685			
4686			
4687				if (banner_fade_counter > $('.section_3 .block_container').length) {
4688					banner_fade_counter = 1;
4689				}
4690				$('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').addClass('active');
4691				$('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').css('z-index', '20');
4692				if (
4693					json.settings.hasOwnProperty('expand') &&
4694					json.settings.expand
4695				) {
4696					$('.section_3 .block_container:nth-of-type('+banner_fade_counter+') .background_container').addClass('expand');
4697				}
4698				$('.section_3 .block_container:nth-of-type('+banner_fade_counter+')').addClass('show');
4699				setTimeout(function() {
4700					$('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+'))').css('z-index', '10');
4701					$('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+'))').removeClass('show');
4702					$('.section_3 .block_container:not(:nth-of-type('+banner_fade_counter+')) .background_container').removeClass('expand');
4703					$('.section_3 .block_container.start').removeClass('start');
4704				}, 3000);
4705			}
4706		}, banner_fade_duration);
4707		
4708
4709	}
4710</script>
4710<style>.section_4 {
4711  padding: 40px 40px;
4712}
4713.section_4 .content_container {
4714  max-width: 100%;
4715  justify-content: center;
4716  display: flex;
4717  margin-left: auto;
4718  margin-right: auto;
4719  box-sizing: border-box;
4720}
4721.section_4 .content_container .content {
4722  width: 100%;
4723}
4724.section_4 .content_container .content h2 {
4725  text-align: center;
4726}
4727.section_4 .content_container .content h3 {
4728  font-size: 1.5rem;
4729}
4730@media (max-width: 640px) {
4731  .section_4 {
4732    padding: 20px 20px;
4733  }
4734}
4735</style><style>.section_4 .content_container .content {
4736  margin: 40px 0px 50px;
4737}
4738.section_4 .content_container .content h3 {
4739  text-align: center;
4740}
4741.section_4 .content_container .content h4 {
4742  text-align: center;
4743}
4744.section_4 .content_container .content p {
4745  text-align: center;
4746}
4747.section_4 .content_container .content a {
4748  color: #bf964d;
4749}
4750.section_4 .content_container .content span {
4751  text-decoration: underline;
4752}
4753</style>
4754<section class="section_4" data-module="content" data-html="/custom/content/home/welcome.html" data-json="" data-page="" data-full-path="/">
4755	<div class="content_container">
4756		<div class="content">
4757			<h4>
4758    EXPERIENCED CARE YOU CAN TRUST
4759</h4>
4760<h3>
4761    About Heartwise Cardiology
4762</h3>
4763
4764<div class="main">
4765	<div class="left">
4766
4767<p>Heartwise Cardiology provides comprehensive medical care to adults in and around the Murray Hill neighborhood of Manhattan, New York. Board-certified cardiologists David Harnick, MD, and Raymonda Rastegar, MD, specialize in the diagnosis and treatment of acute and chronic heart conditions and take a personalized, conservative approach to care.</p>
4768    
4769   <p>The modern Heartwise Cardiology office is equipped with advanced, high-end diagnostic technologies, including electrocardiogram (EKG), echocardiogram, nuclear stress testing, and tilt table testing. This allows <span>our providers to accurately identify the causes of heart-related symptoms such as shortness of breath, palpitations, syncope (fainting), and chest pain</span> without having to refer patients elsewhere.</p>
4770    
4771    
4772    <p>Customized treatment plans address a wide range of conditions, including atrial fibrillation and other types of arrhythmias, coronary artery disease, and heart failure. The heart specialists use noninvasive cardiology treatments and also provide minimally invasive procedures for the placement of defibrillators and pacemakers. </p> 
4773    
4774    <p>Heartwise Cardiology prioritizes preventive cardiology to lower risk factors for heart disease, heart attack, and other serious conditions. The physicians offer heart disease screenings, routine blood pressure checks, and cholesterol management services on-site. They also design individualized preventive cardiology care plans that address the unique needs of men’s and women’s health. </p>
4775    
4776    <p>In addition to the wide range of services available in-office, the Heartwise Cardiology providers affiliate with the best teaching hospitals in New York City to provide patients with the highest quality of care. Reach out to the practice by phone or <a href="/appointments/" aria-label="online">online</a> today.</p>
4777</div>
4778
4779<div class="right">
4780</div>
4781</div>
4782
4783		</div>
4784	</div>
4785</section><style></style><style>.section_5 .content_container .content .block_container .block .background_container .background_image {
4786  filter: brightness(.8);
4787  z-index: -10;
4788  height: 100%;
4789}
4790.section_5 .content_container .content .block_container .block .background_content_container {
4791  margin: 60px 0;
4792}
4793.section_5 .content_container .content .block_container .block .background_content_container .background_content {
4794  display: flex;
4795  flex-direction: column;
4796  justify-content: center;
4797  align-items: center;
4798}
4799.section_5 .content_container .content .block_container .block .background_content_container .background_content >.title {
4800  font-family: "Lato";
4801  text-align: center;
4802  color: #fff;
4803  text-shadow: 0px 0px 50px rgba(0,0,0,0.5);
4804}
4805.section_5 .content_container .content .block_container .block .background_content_container .background_content >.title[data-show="false"] {
4806  display: none;
4807}
4808.section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container {
4809  display: flex;
4810  width: 100%;
4811  justify-content: center;
4812  max-width: 1600px;
4813  align-items: flex-start;
4814  flex-wrap: wrap;
4815}
4816@media (max-width: 1280px) {
4817  .section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container {
4818    flex-wrap: wrap;
4819  }
4820}
4821@media (max-width: 768px) {
4822  .section_5 .content_container .content .block_container .block .background_content_container .background_content .flex_container {
4823    flex-direction: column;
4824    width: 90%;
4825  }
4826}
4827</style><style>.section_5 [data-micro-template="home_expertise"] {
4828  display: flex;
4829  flex-direction: column;
4830  padding: 30px 20px 0px;
4831  margin: 10px 2px 0px;
4832  width: auto;
4833  width: -moz-available;
4834  width: -webkit-fill-available;
4835  width: fill-available;
4836  justify-content: center;
4837  align-items: center;
4838  flex-basis: 25%;
4839}
4840@media (max-width: 1280px) {
4841  .section_5 [data-micro-template="home_expertise"] {
4842    padding: 20px;
4843    margin: 30px 0px 0px;
4844    flex-basis: 40%;
4845  }
4846}
4847.section_5 [data-micro-template="home_expertise"] .icon {
4848  display: flex;
4849  justify-content: center;
4850  align-items: center;
4851  max-width: 180px;
4852  border-radius: 100%;
4853  overflow: hidden;
4854}
4855.section_5 [data-micro-template="home_expertise"] .icon .icon-img {
4856  display: none;
4857}
4858.section_5 [data-micro-template="home_expertise"] .icon .icon-fa {
4859  display: flex;
4860}
4861.section_5 [data-micro-template="home_expertise"] .icon[data-icon-type="img"] .icon-img {
4862  display: flex;
4863}
4864.section_5 [data-micro-template="home_expertise"] .icon[data-icon-type="img"] .icon-fa {
4865  display: none;
4866}
4867.section_5 [data-micro-template="home_expertise"] .title {
4868  font-family: "Lato";
4869  color: #ffffff;
4870  font-size: 1.6rem;
4871  line-height: 1.8rem;
4872  margin: 15px 0px;
4873  text-align: center;
4874}
4875@media (max-width: 1024px) {
4876  .section_5 [data-micro-template="home_expertise"] .title {
4877    line-height: 1.6rem;
4878    font-size: 1.4rem;
4879  }
4880}
4881.section_5 [data-micro-template="home_expertise"] .description {
4882  font-family: "Asap";
4883  color: #ffffff;
4884  font-size: 1rem;
4885  text-align: center;
4886  line-height: 1.75rem;
4887}
4888.section_5 [data-micro-template="home_expertise"] .button_container {
4889  margin-top: 10px;
4890}
4891.section_5 [data-micro-template="home_expertise"] .button_container .button {
4892  background-color: #dac298;
4893  font-size: .9rem;
4894  font-weight: bold;
4895  padding: 5px 30px;
4896  display: inline-block;
4897  border-top-left-radius: 10px;
4898  border-bottom-left-radius: 10px;
4899  border-bottom-right-radius: 10px;
4900  letter-spacing: 1px;
4901  transition: all 400ms;
4902  border-top-right-radius: 0px;
4903  text-transform: uppercase;
4904  color: #333333;
4905}
4906.section_5 [data-micro-template="home_expertise"] .button_container .button:hover {
4907  background-color: #30516a;
4908  color: #ffffff;
4909}
4910</style>
4911<section class="section_5" data-module="html_module" data-html="/custom/modules/home_expertise/mod.html" data-json="/custom/modules/home_expertise/mod.json" data-page="" data-full-path="/">
4912	<div class="content_container">
4913		<div class="content">
4914			
4915			<div class="block_container">
4916	<div class="block">
4917		<div class="background_container">
4918			<div class="background_content_container">
4919				<div class="background_content">
4920                    <h3 class="title" data-show="true">
4921                        Advanced Cardiovascular Services for Heart Health
4922					</h3>
4923                    <div class="flex_container">
4924                         <div data-micro-template="home_expertise">
4925    <div class="icon" data-icon-type="img">
4926        <i class="/custom/modules/home_expertise/images/icon1.png icon-fa"></i>
4927        <picture><source srcset="/cache/custom_modules_home_expertise_images_icon1.webp 95w" sizes="95px" data-lazy-picture="false" type="image/webp"><img alt="The image features an icon representing an ECG monitor with a heart symbol on its screen, connected by a cord to a device labeled  EKG." class="icon-img" src="/custom/modules/home_expertise/images/icon1.png" data-lazy-img="false" data-src="/custom/modules/home_expertise/images/icon1.png"></picture>
4928    </div>
4929    <h5 class="title">
4930        Echocardiogram
4931    </h5>
4932    <div class="description">
4933        Non-invasive ultrasound imaging to assess heart structure and function.
4934    </div>
4935    <div class="button_container">
4936        <a href="/services/echo/" class="button" role="button" aria-label="Learn More">Learn More</a>
4937    </div>
4938</div>
4939<div data-micro-template="home_expertise">
4940    <div class="icon" data-icon-type="img">
4941        <i class="/custom/modules/home_expertise/images/icon2.png icon-fa"></i>
4942        <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon2.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a pixelated icon with a heart shape inside a square frame, which appears to be a simplified representation of an ECG  electrocardiogram  machine, often used for monitoring heart activity." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon2.png"></picture>
4943    </div>
4944    <h5 class="title">
4945        Nuclear Stress Testing
4946    </h5>
4947    <div class="description">
4948        Evaluates blood flow and heart function under physical or chemical stress.
4949    </div>
4950    <div class="button_container">
4951        <a href="/services/nuclear-stress-testing/" class="button" role="button" aria-label="Learn More">Learn More</a>
4952    </div>
4953</div>
4954<div data-micro-template="home_expertise">
4955    <div class="icon" data-icon-type="img">
4956        <i class="/custom/modules/home_expertise/images/icon3.png icon-fa"></i>
4957        <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon3.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp">
4957<img alt="The image displays a stylized graphic resembling a heart with a cross inside it, set against a black background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon3.png"></picture>
4958    </div>
4959    <h5 class="title">
4960        Implantable Loop Recorders (ILR)
4961    </h5>
4962    <div class="description">
4963        Long-term heart rhythm monitoring for arrhythmia detection and diagnosis.
4964    </div>
4965    <div class="button_container">
4966        <a href="/services/implantable-loop-recorders/" class="button" role="button" aria-label="Learn More">Learn More</a>
4967    </div>
4968</div>
4969<div data-micro-template="home_expertise">
4970    <div class="icon" data-icon-type="img">
4971        <i class="/custom/modules/home_expertise/images/icon4.png icon-fa"></i>
4972        <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon4.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a stylized icon of an electrical outlet with three plugs inserted into it." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon4.png"></picture>
4973    </div>
4974    <h5 class="title">
4975        Tilt Table Testing (TTT)
4976    </h5>
4977    <div class="description">
4978        Diagnoses fainting causes by monitoring blood pressure and heart rate changes.
4979    </div>
4980    <div class="button_container">
4981        <a href="/services/tilt-table-testing/" class="button" role="button" aria-label="Learn More">Learn More</a>
4982    </div>
4983</div>
4984<div data-micro-template="home_expertise">
4985    <div class="icon" data-icon-type="img">
4986        <i class="/custom/modules/home_expertise/images/icon5.png icon-fa"></i>
4987        <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon5.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image displays a stylized graphic with a cartoon-like appearance featuring a character s face and a football helmet, set against a dark background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon5.png"></picture>
4988    </div>
4989    <h5 class="title">
4990        Pacemakers
4991    </h5>
4992    <div class="description">
4993        Regulate slow heart rhythms with electrical impulses for stability.
4994    </div>
4995    <div class="button_container">
4996        <a href="/services/pacemaker/" class="button" role="button" aria-label="Learn More">Learn More</a>
4997    </div>
4998</div>
4999<div data-micro-template="home_expertise">
5000    <div class="icon" data-icon-type="img">
5001        <i class="/custom/modules/home_expertise/images/icon6.png icon-fa"></i>
5002        <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/custom_modules_home_expertise_images_icon6.webp 95w" sizes="95px" data-lazy-picture="true" type="image/webp"><img alt="The image displays a pixelated emoji-like graphic resembling a heart shape with a face-like feature, rendered in a monochromatic palette against a dark background." class="icon-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/home_expertise/images/icon6.png"></picture>
5003    </div>
5004    <h5 class="title">
5005        Defibrillators
5006    </h5>
5007    <div class="description">
5008        Deliver shocks to restore normal heart rhythm during cardiac emergencies.
5009    </div>
5010    <div class="button_container">
5011        <a href="/services/defibrillator/" class="button" role="button" aria-label="Learn More">Learn More</a>
5012    </div>
5013</div>
5014
5015                    </div>
5016				</div>
5017			</div>
5018			<picture class="background_image"><source srcset="/cache/sm-custom_modules_home_expertise_images_bg.webp 420w, /cache/md-custom_modules_home_expertise_images_bg.webp 640w, /cache/lg-custom_modules_home_expertise_images_bg.webp 1024w, /cache/xl-custom_modules_home_expertise_images_bg.webp 1366w, /cache/custom_modules_home_expertise_images_bg.webp 1900w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1900px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a close-up view of a blurred, abstract design with flowing lines against a dark background, which could be interpreted as an artistic representation or possibly a graphical element related to technology or digital interfaces." class="background_image" src="/custom/modules/home_expertise/images/bg.jpg" data-lazy-img="false" data-src="/custom/modules/home_expertise/images/bg.jpg"></picture>
5019		</div>
5020	</div>
5021</div>
5022			
5023		</div>
5024		<div class="sidebar" data-sidebar="false">
5025			
5026		</div>
5027	</div>
5028</section><style></style><style>.section_6 .content_container .content {
5029  margin: 120px 0px;
5030  display: flex;
5031  justify-content: center;
5032  align-items: center;
5033  flex-wrap: wrap;
5034}
5035@media (max-width: 480px) {
5036  .section_6 .content_container .content {
5037    margin: 60px 0px;
5038  }
5039}
5040.section_6 .content_container .content div[data-micro-template="home_doctor"]:not(:first-child) {
5041  margin-top: 40px;
5042}
5043</style><style>.section_6 div[data-micro-template="home_doctor"] {
5044  display: flex;
5045  max-width: 1200px;
5046  width: 80%;
5047}
5048@media (max-width: 480px) {
5049  .section_6 div[data-micro-template="home_doctor"] {
5050    width: 94%;
5051  }
5052}
5053.section_6 div[data-micro-template="home_doctor"]:nth-of-type(even) {
5054  flex-direction: row-reverse;
5055}
5056.section_6 div[data-micro-template="home_doctor"]:nth-of-type(odd) {
5057  flex-direction: row;
5058}
5059.section_6 div[data-micro-template="home_doctor"] .text_container {
5060  flex: 1 1 auto;
5061  width: 70%;
5062  display: flex;
5063  flex-direction: column;
5064  align-items: center;
5065  justify-content: center;
5066  background-color: #ecf1f3;
5067}
5068.section_6 div[data-micro-template="home_doctor"] .text_container .text_content {
5069  padding: 15px 40px;
5070}
5071.section_6 div[data-micro-template="home_doctor"] .text_container .text_content .btn {
5072  color: #ffffff;
5073  background-color: #30516a;
5074  font-weight: 600;
5075  font-size: 0.9rem;
5076  padding: 12px 30px;
5077  display: inline-block;
5078  border-top-left-radius: 10px;
5079  border-bottom-left-radius: 10px;
5080  border-bottom-right-radius: 10px;
5081  letter-spacing: 1px;
5082  transition: all 0.2s;
5083  border-top-right-radius: 0px;
5084  border: none;
5085  text-transform: uppercase;
5086  margin-top: 10px;
5087}
5088.section_6 div[data-micro-template="home_doctor"] .text_container .text_content .btn:hover {
5089  background-color: #dac298;
5090  color: #333333;
5091}
5092.section_6 div[data-micro-template="home_doctor"] .background_container {
5093  flex: 1 1 auto;
5094  width: 30%;
5095  min-height: 440px;
5096}
5097.section_6 div[data-micro-template="home_doctor"] .background_container .background_content .background_image {
5098  object-position: 50% 20%;
5099  height: 100%;
5100}
5101@media (max-width: 1024px) {
5102  .section_6 div[data-micro-template="home_doctor"] .text_container {
5103    width: 60%;
5104  }
5105  .section_6 div[data-micro-template="home_doctor"] .text_container .text_content {
5106    width: 80%;
5107  }
5108  .section_6 div[data-micro-template="home_doctor"] .text_container .text_content h3 {
5109    font-size: 2.5rem;
5110  }
5111  .section_6 div[data-micro-template="home_doctor"] .background_container {
5112    width: 40%;
5113  }
5114}
5115@media (max-width: 768px) {
5116  .section_6 div[data-micro-template="home_doctor"]:nth-of-type(n) {
5117    flex-direction: column-reverse;
5118    flex-wrap: wrap;
5119  }
5120  .section_6 div[data-micro-template="home_doctor"] .text_container {
5121    width: 100%;
5122  }
5123  .section_6 div[data-micro-template="home_doctor"] .text_container .text_content {
5124    padding: 20px 0;
5125  }
5126  .section_6 div[data-micro-template="home_doctor"] .text_container .text_content h3 {
5127    font-size: 1.8rem;
5128  }
5129  .section_6 div[data-micro-template="home_doctor"] .background_container {
5130    width: 100%;
5131    min-height: 400px;
5132  }
5133  .section_6 div[data-micro-template="home_doctor"] .background_container .background_content .background_image {
5134    min-height: auto;
5135  }
5136}
5137</style>
5138<section class="section_6" data-module="html_module" data-html="/custom/modules/home_doctor/mod.html" data-json="/custom/modules/home_doctor/mod.json" data-page="" data-full-path="/">
5139	<div class="content_container">
5140		<div class="content">
5141			
5142			<div data-micro-template="home_doctor">
5143    <div class="text_container"> 
5144        <div class="text_content">
5145            <h4>Get to know our Doctor</h4>
5146            <h3>David J Harnick, MD</h3>
5147            <p><strong>Board Certified in Cardiovascular Diseases and Cardiac Electrophysiology</strong></p>
5148<p>Dr. David Harnick is a board-certified cardiologist and electrophysiologist who provides exceptional cardiovascular care at Heartwise Cardiology in the Murray Hill and Upper East Side neighborhoods of New York City. While he treats the full range of heart conditions, he specializes in helping patients with cardiac arrhythmias, dizziness, and syncope.</p> 
5149            <a href="/staff/david-j-harnick-md/" class="btn" aria-label="More About our Doctor">More About our Doctor</a>
5150        </div>  
5151    </div>
5152    <div class="background_container">
5153        <div class="background_content">
5154            <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_dr_harnick.webp 420w, /cache/custom_images_dr_harnick.webp 640w" sizes="(max-width: 420px) 100v
5154w, 640px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a man wearing glasses, smiling, and dressed in formal attire standing against a blurred background." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/dr_harnick.jpg"></picture>
5155        </div>
5156    </div>
5157</div><div data-micro-template="home_doctor">
5158    <div class="text_container"> 
5159        <div class="text_content">
5160            <h4>Get to know our Doctor</h4>
5161            <h3>Raymonda  Rastegar, MD, FACC</h3>
5162            
5163<p><strong>Board Certified in Cardiovascular Diseases</strong></p>
5164<p>Dr. Raymonda Rastegar is a triple-boarded cardiologist with certifications in general cardiology, echocardiography, and nuclear cardiology. She has expertise in general and noninvasive cardiology, as well as preventive care. At Heartwise Cardiology in the Murray Hill neighborhood of Manhattan, New York, she treats varied cardiovascular conditions with a special interest in helping patients prevent heart disease and heart attacks.</p> 
5165            <a href="/staff/raymonda-rastegar-md-facc/" class="btn" aria-label="More About our Doctor">More About our Doctor</a>
5166        </div>  
5167    </div>
5168    <div class="background_container">
5169        <div class="background_content">
5170            <picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_dr_rastegar.webp 420w, /cache/custom_images_dr_rastegar.webp 640w" sizes="(max-width: 420px) 100vw, 640px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a woman dressed in business attire with a confident expression, standing beside a man who appears to be in a formal setting." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/dr_rastegar.jpg"></picture>
5171        </div>
5172    </div>
5173</div>
5174			
5175		</div>
5176		<div class="sidebar" data-sidebar="false">
5177			
5178		</div>
5179	</div>
5180</section>
5180<script>
5181
5182	javascript.prototype[get_id()] = function() {
5183		$('.section_6 div[data-micro-template="staff_list"] ').each(function (index, element) {
5184			$element_1 = $(this).find(".staff_content");
5185			$element_2 = $(this).find("> h3");
5186
5187			$($element_1).prepend($element_2);
5188		});
5189	}
5190    
5191</script>
5191<style>.section_7 .block_container {
5192  display: flex;
5193  flex-direction: column;
5194}
5195.section_7 .block_container .block {
5196  display: flex;
5197  flex-wrap: wrap;
5198}
5199.section_7 .block_container .block .background_container {
5200  width: 100%;
5201  height: 680px;
5202  display: flex;
5203  justify-content: center;
5204  align-items: center;
5205}
5206.section_7 .block_container .block .background_container .background_content {
5207  position: relative;
5208  z-index: 20;
5209  width: 100%;
5210  height: 100%;
5211  display: flex;
5212  align-items: center;
5213  justify-content: center;
5214}
5215.section_7 .block_container .block .background_container .background_image {
5216  max-height: initial;
5217}
5218</style><style>.section_7 {
5219  background-color: #222;
5220}
5221.section_7 .content_container {
5222  padding: 80px 40px;
5223}
5224@media (max-width: 480px) {
5225  .section_7 .content_container {
5226    padding: 80px 20px;
5227  }
5228}
5229@media (max-width: 1024px) {
5230  .section_7 .content_container .content .block_container .block {
5231    flex-direction: column;
5232    justify-content: center;
5233    align-items: center;
5234  }
5235}
5236.section_7 .content_container .content .block_container .block .background_container {
5237  height: 550px;
5238  justify-content: initial;
5239  align-items: initial;
5240  flex: 1;
5241  max-width: 100%;
5242}
5243@media (max-width: 1024px) {
5244  .section_7 .content_container .content .block_container .block .background_container {
5245    flex: auto;
5246    width: 400px;
5247    height: 400px;
5248    justify-content: center;
5249  }
5250}
5251.section_7 .content_container .content .block_container .block .split_content {
5252  flex-basis: 50%;
5253  max-width: 100%;
5254  display: flex;
5255  flex-direction: column;
5256  justify-content: center;
5257  padding: 60px;
5258  box-sizing: border-box;
5259}
5260@media (max-width: 1024px) {
5261  .section_7 .content_container .content .block_container .block .split_content {
5262    padding: 30px 20px;
5263  }
5264}
5265.section_7 .content_container .content .block_container .block .split_content p {
5266  color: #ffffff;
5267}
5268.section_7 .content_container .content .block_container .block .split_content .title {
5269  text-align: left;
5270  padding-right: 100px;
5271  box-sizing: border-box;
5272}
5273@media (max-width: 1280px) {
5274  .section_7 .content_container .content .block_container .block .split_content .title {
5275    padding-right: 0px;
5276  }
5277}
5278.section_7 .content_container .content .block_container .block .split_content .title h2 {
5279  font-size: 1.8rem;
5280  letter-spacing: 3px;
5281  font-weight: 300;
5282  text-transform: uppercase;
5283  line-height: 1.6em;
5284  color: #ffffff;
5285}
5286@media (max-width: 1024px) {
5287  .section_7 .content_container .content .block_container .block .split_content .title h2 {
5288    font-size: 2rem;
5289  }
5290}
5291@media (max-width: 550px) {
5292  .section_7 .content_container .content .block_container .block .split_content .title h2 {
5293    font-size: 1.45rem;
5294  }
5295}
5296.section_7 .content_container .content .block_container .block .split_content .title h3 {
5297  font-size: 1.5rem;
5298  text-transform: uppercase;
5299  margin: 0;
5300  font-weight: 400;
5301  color: #ffffff;
5302}
5303@media (max-width: 1024px) {
5304  .section_7 .content_container .content .block_container .block .split_content .title h3 {
5305    font-size: 1.2rem;
5306  }
5307}
5308.section_7 .content_container .content .block_container .block .split_content .text {
5309  font-size: 1rem;
5310  max-width: 100%;
5311  padding-right: 100px;
5312  box-sizing: border-box;
5313}
5314@media (max-width: 1280px) {
5315  .section_7 .content_container .content .block_container .block .split_content .text {
5316    padding-right: 0px;
5317  }
5318}
5319@media (max-width: 768px) {
5320  .section_7 .content_container .content .block_container .block .split_content .text {
5321    margin-top: 0;
5322  }
5323}
5324.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] {
5325  display: flex;
5326  flex-wrap: wrap;
5327}
5328.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] .button {
5329  color: white;
5330  background-color: #f53457;
5331  margin: 5px 10px 5px 0;
5332  text-transform: uppercase;
5333  font-weight: 600;
5334  font-size: .75rem;
5335  padding: 8px 25px;
5336  letter-spacing: 2px;
5337  box-sizing: border-box;
5338  border: 2px solid #f53457;
5339  transition: all 0.3s;
5340}
5341.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] .button:hover {
5342  background: #203647;
5343  border-color: #203647;
5344}
5345.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:last-of-type .button {
5346  margin-right: 0;
5347}
5348.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:first-of-type .button {
5349  background: none;
5350  color: #f53457;
5351  box-sizing: border-box;
5352}
5353.section_7 .content_container .content .block_container .block .split_content div[data-micro-template="buttons_container"] div[data-micro-template="buttons"]:first-of-type .button:hover {
5354  color: #203647;
5355}
5356</style>
5357<section class="section_7" data-module="parallax_image" data-html="/custom/modules/basilisk_split/module.html" data-json="/custom/modules/basilisk_split/module2.json" data-page="" data-full-path="/">
5358	<div class="content_container">
5359		<div class="content">
5360			<div class="block_container">
5361	<div class="block">
5362		<div class="background_container">
5363			<picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_modules_basilisk_split_images_bg.webp 420w, /cache/md-custom_modules_basilisk_split_images_bg.webp 640w, /cache/custom_modules_basilisk_split_images_bg.webp 1024w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, 1024px" data-lazy-picture="true" type="image/webp"><img alt="The image shows a building with large windows, featuring an architectural style with a prominent black frame around the windows and a white facade." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/modules/basilisk_split/images/bg.jpg"></picture>
5364        </div>
5365        <div class="split_content">
5366            <div class="title">
5367                <h3></h3>
5368                <h2>The success of our practice is dependent on our high quality and compassionate care</h2>
5369            </div>
5370            <div class="text">
5371                
5372<p>We get back to the basics of medicine: availability, affability, and ability. We want to help people live happy, productive, and fulfilling lives free of cardiovascular disease, its complications, and untimely death.</p>
5373                
5374            </div>
5375        </div>
5376	</div>
5377</div>
5378
5379		</div>
5380	</div>
5381</section>
5381<script>
5382	javascript.prototype[get_id()] = function() {
5383		var json = {"settings":{"parallax":false},"content":[{"image":"\/custom\/modules\/basilisk_split\/images\/bg.jpg","title":"The success of our practice is dependent on our high quality and compassionate care","subtitle":"","text":"\/custom\/modules\/basilisk_split\/content2.html","button":[{}]}]};
5384
5385		function shift_image() {
5386			if (
5387				json.settings.hasOwnProperty('parallax') &&
5388				json.settings.parallax
5389			) {
5390				$('.section_7 .background_image').each(function() {
5391					var elementHeight = $(this).height();
5392					var startEffect = $(this).offset().top - $(window).height();
5393					var endEffect = $(this).offset().top + elementHeight;
5394
5395					var pageHeight = $(document).height();
5396
5397					var scrollDistance = endEffect - startEffect;
5398					var scrollPosition = $(document).scrollTop();
5399
5400					if (scrollPosition > startEffect && scrollPosition < endEffect) {
5401						scrollPercent = ((scrollPosition - startEffect) / scrollDistance * 100).toFixed(4);
5402						/* $(this).css('transform', 'translate(-50%, -'+(100 - scrollPercent)+'%)'); */
5403						$(this).css('object-position', 'center '+(100 - scrollPercent)+'%');
5404					}
5405				});
5406			}
5407			else {
5408				$('.section_7 .background_image').addClass('static');
5409			}
5410		}
5411		
5412		shift_image();
5413
5414		$(window).resize(function() {
5415			shift_image();
5416		});
5417
5418		$(document).scroll(function() {
5419			shift_image();
5420		});
5421	}
5422</script>
5422<style>.section_8 {
5423  padding: 40px 40px;
5424}
5425.section_8 .content_container {
5426  max-width: 100%;
5427  justify-content: center;
5428  display: flex;
5429  margin-left: auto;
5430  margin-right: auto;
5431  box-sizing: border-box;
5432}
5433.section_8 .content_container .content {
5434  width: 100%;
5435}
5436.section_8 .content_container .content h2 {
5437  text-align: center;
5438}
5439.section_8 .content_container .content h3 {
5440  font-size: 1.5rem;
5441}
5442@media (max-width: 640px) {
5443  .section_8 {
5444    padding: 20px 20px;
5445  }
5446}
5447</style><style>.section_8 {
5448  background-color: #fafafa;
5449  padding: 0px;
5450}
5451.section_8 iframe {
5452  height: 620px;
5453}
5454@media (max-width: 480px) {
5455  .section_8 .grid_reviewBlockWrapper__kOwhf {
5456    overflow: hidden !important;
5457  }
5458}
5459.section_8 .content_container {
5460  margin: 30px auto;
5461}
5462.section_8 .content_container .content h4 {
5463  color: white;
5464  text-align: center;
5465}
5466.section_8 .content_container .content h3.h3 {
5467  color: white;
5468  text-align: center;
5469}
5470</style>
5471<section class="section_8" data-module="content" data-html="/custom/content/home/testimonials.html" data-json="" data-page="" data-full-path="/">
5472	<div class="content_container">
5473		<div class="content">
5474			<div id="bf-revz-widget-987654321301115183"></div>
5475		</div>
5476	</div>
5477</section><style>.section_9 {
5478  padding: 40px 40px;
5479}
5480.section_9 .content_container {
5481  max-width: 100%;
5482  justify-content: center;
5483  display: flex;
5484  margin-left: auto;
5485  margin-right: auto;
5486  box-sizing: border-box;
5487}
5488.section_9 .content_container .content {
5489  width: 100%;
5490}
5491.section_9 .content_container .content h2 {
5492  text-align: center;
5493}
5494.section_9 .content_container .content h3 {
5495  font-size: 1.5rem;
5496}
5497@media (max-width: 640px) {
5498  .section_9 {
5499    padding: 20px 20px;
5500  }
5501}
5502</style><style>.section_9 {
5503  background-color: #222;
5504}
5505.section_9 .content_container .content {
5506  margin: 40px 0px 50px;
5507}
5508.section_9 .content_container .content .main {
5509  max-width: 1200px;
5510  margin: 0 auto;
5511  text-align: center;
5512}
5513.section_9 .content_container .content .main:first-of-type {
5514  border-bottom: 1px solid #444;
5515  padding-bottom: 40px;
5516}
5517.section_9 .content_container .content .main h3 {
5518  margin-bottom: 20px;
5519  text-transform: uppercase;
5520  letter-spacing: 2px;
5521  color: #ffffff;
5522}
5523.section_9 .content_container .content .inner {
5524  display: flex;
5525  flex-wrap: wrap;
5526  justify-content: center;
5527}
5528.section_9 .content_container .content .box {
5529  background-color: #444;
5530  color: white;
5531  padding: 15px 20px;
5532  border-radius: 8px;
5533  margin: 10px;
5534  font-size: 18px;
5535  display: flex;
5536  align-items: center;
5537  justify-content: center;
5538  gap: 10px;
5539}
5540.section_9 .content_container .content .svg-inline--fa {
5541  color: #dac298;
5542}
5543</style>
5544<section class="section_9" data-module="content" data-html="/custom/content/home/awards.html" data-json="" data-page="" data-full-path="/">
5545	<div class="content_container">
5546		<div class="content">
5547			<div class="main">
5548<h3>Awards</h3>
5549    <div class="inner">
5550        <div class="box"><i class="fas fa-trophy"></i> NY BEST DOCTORS</div>
5551        <div class="box"><i class="fas fa-trophy"></i> NY TIMES BEST DOCTORS</div>
5552        <div class="box"><i class="fas fa-trophy"></i> NY TOP DOCS</div>
5553    </div>
5554</div>
5555<div class="main">
5556    <h3>Credentials</h3>
5557    <div class="inner">
5558	<div class="box"><i class="fas fa-id-badge"></i> GENERAL CARD AND EP</div>
5559	<div class="box"><i class="fas fa-id-badge"></i> BOARD CERTIFICATIONS</div>
5560	<div class="box"><i class="fas fa-id-badge"></i> FULL SERVICES OFFICE TESTING</div>
5561         </div>
5562	
5563</div>
5564		</div>
5565	</div>
5566</section><style>.section_10 {
5567  --aleso-article-columns: 3;
5568  padding: 40px 20px;
5569}
5570@media (max-width: 480px) {
5571  .section_10 {
5572    --aleso-article-columns: 1;
5573  }
5574}
5575.section_10 .content_container {
5576  width: min(100%,1400px);
5577  margin: 0 auto;
5578}
5579.section_10 .content_container .content .aleso_articles_title {
5580  text-align: center;
5581}
5582.section_10 .content_container .content .aleso_articles_container {
5583  display: grid;
5584  grid-template-columns: repeat(var(--aleso-article-columns),1fr);
5585  gap: 40px;
5586  box-sizing: border-box;
5587  padding: 10px 0;
5588}
5589@media (max-width: 1024px) {
5590  .section_10 .content_container .content .aleso_articles_container {
5591    gap: 20px;
5592  }
5593}
5594@media (max-width: 480px) {
5595  .section_10 .content_container .content .aleso_articles_container {
5596    display: flex;
5597    flex-wrap: nowrap;
5598    overflow: auto;
5599    padding-bottom: 20px;
5600  }
5601}
5602@media (max-width: 480px) {
5603  .section_10 .content_container .content .aleso_articles_container .aleso_article_c
5603ontainer {
5604    width: 85vw;
5605    flex-shrink: 0;
5606  }
5607}
5608.section_10 .content_container .content .aleso_articles_container .aleso_article_container h4 {
5609  font-family: "Lato";
5610  font-size: 1.25rem;
5611  margin-bottom: 0;
5612  font-weight: 500;
5613}
5614</style><style>.section_10 {
5615  --aleso-article-columns: 3;
5616  padding: 40px 20px;
5617}
5618@media (max-width: 480px) {
5619  .section_10 {
5620    --aleso-article-columns: 1;
5621  }
5622}
5623.section_10 .content_container {
5624  width: min(100%,1400px);
5625  margin: 0 auto;
5626}
5627.section_10 .content_container .content .aleso_articles_title {
5628  text-align: center;
5629}
5630.section_10 .content_container .content .aleso_articles_container {
5631  display: grid;
5632  grid-template-columns: repeat(var(--aleso-article-columns),1fr);
5633  gap: 40px;
5634  box-sizing: border-box;
5635  padding: 10px 0;
5636}
5637@media (max-width: 1024px) {
5638  .section_10 .content_container .content .aleso_articles_container {
5639    gap: 20px;
5640  }
5641}
5642@media (max-width: 480px) {
5643  .section_10 .content_container .content .aleso_articles_container {
5644    display: flex;
5645    flex-wrap: nowrap;
5646    overflow: auto;
5647    padding-bottom: 20px;
5648  }
5649}
5650@media (max-width: 480px) {
5651  .section_10 .content_container .content .aleso_articles_container .aleso_article_container {
5652    width: 85vw;
5653    flex-shrink: 0;
5654  }
5655}
5656.section_10 .content_container .content .aleso_articles_container .aleso_article_container h4 {
5657  font-family: "Lato";
5658  font-size: 1.25rem;
5659  margin-bottom: 0;
5660  font-weight: 500;
5661}
5662</style>
5663<section class="section_10" data-module="pegasus_articles" data-html="/custom/modules/pegasus_articles/module.html" data-json="" data-page="" data-full-path="/">
5664	<div class="content_container">
5665		<div class="content">
5666			
5667			<style>.section_10 .aleso_article_container .aleso_article_image {
5668  aspect-ratio: 1.5;
5669}
5670.section_10 .aleso_article_container .date_posted {
5671  margin: 0px;
5672  padding: 0px;
5673  color: #625877;
5674  font-size: 12px;
5675  font-weight: bold;
5676}
5677</style><style>.section_10 .aleso_articles_container {
5678  display: grid;
5679  grid-template-columns: repeat(3,1fr);
5680  gap: 40px;
5681}
5682@media (max-width: 768px) {
5683  .section_10 .aleso_articles_container {
5684    grid-template-columns: repeat(2,1fr);
5685  }
5686}
5687@media (max-width: 480px) {
5688  .section_10 .aleso_articles_container {
5689    grid-template-columns: repeat(1,1fr);
5690  }
5691}
5692</style><h2 class="aleso_articles_title">Recent Articles</h2>
5693<div class="aleso_articles_container">
5694<a href="/articles/14253/balancing-cholesterol-a-comprehensive-guide-to-heart-health/" class="aleso_article_container" aria-label="Balancing Cholesterol: A Comprehensive Guide to Heart Health Dive into the science behind cholesterol, understanding 'good' (HDL) and 'bad' (LDL) types, and learn how regular monitoring and lifestyle changes can maintain heart health. Explore modern diagnostic tools, actionable strategies for cholesterol management, and personalized care plans at Heartwise Cardiology. December 17, 2025">
5695	<div>
5696		<div class="background_container aleso_article_image">
5697			<picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1766001387.030a8b8a.10137028247.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1766001387.030a8b8a.10137028247.lg.jpg"></picture>
5698		</div>
5699		<h4>Balancing Cholesterol: A Comprehensive Guide to Heart Health</h4>
5700		<p>Dive into the science behind cholesterol, understanding 'good' (HDL) and 'bad' (LDL) types, and learn how regular monitoring and lifestyle changes can maintain heart health. Explore modern diagnostic tools, actionable strategies for cholesterol management, and personalized care plans at Heartwise Cardiology.</p>
5701		<p class="date_posted">December 17, 2025</p>
5702	</div>
5703</a><a href="/articles/14252/advancing-heart-health-nuclear-stress-testing-echocardiograms/" class="aleso_article_c
5703ontainer" aria-label="Advancing Heart Health: The Role of Nuclear Stress Testing and Echocardiograms Explore the pivotal role of nuclear stress testing and echocardiograms in assessing heart function under physical stress. These advanced diagnostic tools offer unprecedented insights into cardiac health, enabling early detection and personalized treatment plans for conditions like coronary artery disease. December 17, 2025">
5704	<div>
5705		<div class="background_container aleso_article_image">
5706			<picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1766000998.8009e05b.10132548796.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1766000998.8009e05b.10132548796.lg.jpg"></picture>
5707		</div>
5708		<h4>Advancing Heart Health: The Role of Nuclear Stress Testing and Echocardiograms</h4>
5709		<p>Explore the pivotal role of nuclear stress testing and echocardiograms in assessing heart function under physical stress. These advanced diagnostic tools offer unprecedented insights into cardiac health, enabling early detection and personalized treatment plans for conditions like coronary artery disease.</p>
5710		<p class="date_posted">December 17, 2025</p>
5711	</div>
5712</a><a href="/articles/14251/decoding-chest-pain-cardiac-vs-non-cardiac-origins/" class="aleso_article_container" aria-label="Decoding Chest Pain: Cardiac vs. Non-Cardiac Origins Chest pain can be alarming, but understanding its nuances is crucial for distinguishing between potentially life-threatening cardiac issues and non-cardiac causes. This comprehensive guide explores the varied symptoms of chest discomfort, from dull aches to sharp stabs, and delves into advanced diagnostic tools like nuclear stress testing and echocardiograms that help pinpoint underlying issues quickly and accurately. December 17, 2025">
5713	<div>
5714		<div class="background_container aleso_article_image">
5715			<picture class="background_image"><source srcset="/cache/sm-storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" data-srcset="/cache/storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" data-srcset-sm="/cache/sm-storage.aleso.ai_images_1765999928.4a678de8.10189146112.lg.webp" type="image/webp"><img alt="Heartwise Cardiology" class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-src="https://storage.aleso.ai//images/1765999928.4a678de8.10189146112.lg.jpg"></picture>
5716		</div>
5717		<h4>Decoding Chest Pain: Cardiac vs. Non-Cardiac Origins</h4>
5718		<p>Chest pain can be alarming, but understanding its nuances is crucial for distinguishing between potentially life-threatening cardiac issues and non-cardiac causes. This comprehensive guide explores the varied symptoms of chest discomfort, from dull aches to sharp stabs, and delves into advanced diagnostic tools like nuclear stress testing and echocardiograms that help pinpoint underlying issues quickly and accurately.</p>
5719		<p class="date_posted">December 17, 2025</p>
5720	</div>
5721</a>
5722</div>
5723			
5724		</div>
5725		<div class="sidebar" data-sidebar="false">
5726			
5727		</div>
5728	</div>
5729</section>
5729<script>
5730    javascript.prototype[get_id()] = function () {
5731        if(document.querySelectorAll('.section_10 .aleso_article_container').length < 3) {
5732            document.querySelector('.section_10').style.display = 'none';
5733        }
5734    }
5735</script>
5735
5736<style>.section_11 .block_container {
5737  display: flex;
5738  flex-direction: column;
5739}
5740.section_11 .block_container .block {
5741  display: flex;
5742  flex-wrap: wrap;
5743}
5744.section_11 .block_container .block .background_container {
5745  width: 100%;
5746  height: 680px;
5747  display: flex;
5748  justify-content: center;
5749  align-items: center;
5750}
5751.section_11 .block_container .block .background_container .background_content {
5752  position: relative;
5753  z-index: 20;
5754  width: 100%;
5755  height: 100%;
5756  display: flex;
5757  align-items: center;
5758  justify-content: center;
5759}
5760.section_11 .block_container .block .background_container .background_image {
5761  max-height: initial;
5762}
5763</style><style>.section_11 .block_container .block .background_container {
5764  height: 600px;
5765}
5766@media (max-width: 768px) {
5767  .section_11 .block_container .block .background_container {
5768    height: 400px;
5769  }
5770}
5771@media (max-width: 480px) {
5772  .section_11 .block_container .block .background_container {
5773    height: 300px;
5774  }
5775}
5776.section_11 .block_container .block .background_container .background_content .background_image {
5777  object-position: 50% 15%;
5778}
5779</style>
5780<section class="section_11" data-module="parallax_image" data-html="/system/modules/parallax_image/1.0.2/module.html" data-json="/custom/modules/parallax/home.json" data-page="" data-full-path="/">
5781	<div class="content_container">
5782		<div class="content">
5783			<div class="block_container">
5784	<div class="block">
5785		<div class="background_container">
5786			<div class="background_content"></div>
5787			<picture class="background_image"><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_home_parallax_1.webp 420w, /cache/md-custom_images_home_parallax_1.webp 640w, /cache/lg-custom_images_home_parallax_1.webp 1024w, /cache/xl-custom_images_home_parallax_1.webp 1366w, /cache/custom_images_home_parallax_1.webp 1920w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1920px" data-lazy-picture="true" type="image/webp"><img alt="The image shows an aerial view of a city skyline with numerous high-rise buildings, including recognizable landmarks such as the Empire State Building and the Statue of Liberty in the distance, with water bodies interspersed among the urban landscape." class="background_image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/home_parallax/1.jpg"></picture>
5788		</div>
5789	</div>
5790</div>
5791		</div>
5792	</div>
5793</section>
5793<script>
5794	javascript.prototype[get_id()] = function() {
5795		var json = {"settings":{"parallax":true},"content":[{"image":"\/custom\/images\/home_parallax\/1.jpg","content":""}]};
5796
5797		function shift_image() {
5798			if (
5799				json.settings.hasOwnProperty('parallax') &&
5800				json.settings.parallax
5801			) {
5802				$('.section_11 .background_image').each(function() {
5803					var elementHeight = $(this).height();
5804					var startEffect = $(this).offset().top - $(window).height();
5805					var endEffect = $(this).offset().top + elementHeight;
5806
5807					var pageHeight = $(document).height();
5808
5809					var scrollDistance = endEffect - startEffect;
5810					var scrollPosition = $(document).scrollTop();
5811
5812					if (scrollPosition > startEffect && scrollPosition < endEffect) {
5813						scrollPercent = ((scrollPosition - startEffect) / scrollDistance * 100).toFixed(4);
5814						/* $(this).css('transform', 'translate(-50%, -'+(100 - scrollPercent)+'%)'); */
5815						$(this).css('object-position', 'center '+(100 - scrollPercent)+'%');
5816					}
5817				});
5818			}
5819			else {
5820				$('.section_11 .background_image').addClass('static');
5821			}
5822		}
5823		
5824		shift_image();
5825
5826		$(window).resize(function() {
5827			shift_image();
5828		});
5829
5830		$(document).scroll(function() {
5831			shift_image();
5832		});
5833	}
5834</script>
5834<style></style><style>.section_12 {
5835  border-top: 5px solid #333333;
5836}
5837.section_12 .content_container .content .custom_footer {
5838  max-width: 1200px;
5839  margin: 50px auto;
5840  display: flex;
5841  flex-wrap: wrap;
5842  justify-content: space-between;
5843  align-items: center;
5844  box-sizing: border-box;
5845}
5846@media (max-width: 1024px) {
5847  .section_12 .content_container .content .custom_footer {
5848    padding: 40px;
5849    margin: auto;
5850  }
5851}
5852@media (max-width: 980px) {
5853  .section_12 .content_container .content .custom_footer {
5854    flex-direction: column;
5855    padding: 20px;
5856    margin: 30px 0px;
5857  }
5858}
5859.section_12 .content_container .content .custom_footer a {
5860  color: F48C1C;
5861  transition: all 0.2s;
5862}
5863.section_12 .content_container .content .custom_footer a:hover {
5864  color: #dac298;
5865  transition: all 0.2s;
5866}
5867.section_12 .content_container .content .custom_footer .text {
5868  flex-basis: 48%;
5869  box-sizing: border-box;
5870  display: flex;
5871  flex-wrap: wrap;
5872  justify-content: space-between;
5873}
5874@media (max-width: 1024px) {
5875  .section_12 .content_container .content .custom_footer .text {
5876    flex-basis: 45%;
5877  }
5878}
5879@media (max-width: 980px) {
5880  .section_12 .content_container .content .custom_footer .text {
5881    flex-direction: column;
5882  }
5883}
5884.section_12 .content_container .content .custom_footer .text h3 {
5885  line-height: 3.5rem;
5886  margin: 15px 0px 25px;
5887  color: #dac298;
5888}
5889.section_12 .content_container .content .custom_footer .text h4 {
5890  font-family: "Lato";
5891  font-weight: 100;
5892  line-height: auto;
5893  margin: 0px;
5894  color: #dac298;
5895  margin-bottom: 20px;
5896}
5897@media (max-width: 480px) {
5898  .section_12 .content_container .content .custom_footer .text h4 {
5899    color: #333333;
5900  }
5901}
5902.section_12 .content_container .content .custom_footer .text .information {
5903  flex-basis: 50%;
5904  box-sizing: border-box;
5905}
5906.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="full_address_social"] div {
5907  line-height: 1.6rem;
5908}
5909.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] {
5910  display: flex;
5911  flex-direction: row;
5912  margin-top: 40px;
5913}
5914@media (max-width: 980px) {
5915  .section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] {
5916    margin-top: 20px;
5917  }
5918}
5919.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] {
5920  margin-right: 20px;
5921  font-size: 26px;
5922}
5923.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] a {
5924  color: #30516a;
5925}
5926.section_12 .content_container .content .custom_footer .text .information div[data-micro-template="social_icons_container"] div[data-micro-template="social_icons"] a:hover {
5927  color: #dac298;
5928}
5929.section_12 .content_container .content .custom_footer .text .hours {
5930  flex-basis: 50%;
5931  box-sizing: border-box;
5932}
5933@media (max-width: 980px) {
5934  .section_12 .content_container .content .custom_footer .text .hours {
5935    margin: 20px 0px;
5936  }
5937}
5938.section_12 .content_container .content .custom_footer .text .hours .row {
5939  display: flex;
5940  justify-content: space-between;
5941  line-height: 1.6rem;
5942}
5943.section_12 .content_container .content .custom_footer .map {
5944  flex-basis: 40%;
5945}
5946@media (max-width: 1024px) {
5947  .section_12 .content_container .content .custom_footer .map {
5948    flex-basis: 45%;
5949  }
5950}
5951@media (max-width: 980px) {
5952  .section_12 .content_container .content .custom_footer .map {
5953    width: 100%;
5954  }
5955}
5956.section_12 .content_container .content .custom_footer .map div[data-micro-template="map"] {
5957  height: 350px;
5958  width: 100%;
5959}
5960</style>
5961<section class="section_12" data-module="html_module" data-html="/custom/modules/custom_footer/module.html" data-json="/custom/modules/custom_footer/module.json" data-page="" data-full-path="/">
5962	<div class="content_container">
5963		<div class="content">
5964			
5965			<div class="custom_footer">
5966	<div class="text">
5967		<h4>Heartwise Cardiology</h4>
5968		
5969		<div class="information">
5970			<div data-micro-template="full_address_social">
5971	<div>148 East 38th Street</div>
5972	<div></div>
5973	<div><span>New York</span>, <span>NY</span> <span>10016</span></div>
5974	<div>Existing Patients: <a href="tel:+12126794488" aria-label="(212) 679-4488" class="tel_12126794488" data-click-call="0">(212) 679-4488</a></div>
5975    <div>New Patients: <a href="tel:+12126794488" aria-label="(212) 401-2665" class="tel_12126794488" data-click-call="0">(212) 401-2665</a></div>
5976
5977
5978	<div data-micro-template="social_icons_container">
5979	<div data-micro-template="social_icons">
5980	<a href="https://www.facebook.com/profile.php?id=61575751475062#" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a>
5981</div><div data-micro-template="social_icons">
5982	<a href="https://www.google.com/maps/place/Heartwise+Cardiology/@40.7485252,-73.9773268,21z/data=!4m6!3m5!1s0x89c25906a6b9e5fb:0x3483795b4d46e516!8m2!3d40.7484683!4d-73.9772785!16s%2Fg%2F1tsyqpvv?entry=ttu&g_ep=EgoyMDI1MDMzMS4wIKXMDSoJLDEwMjExNjQwSAFQAw%3D%3D" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a>
5983</div><div data-micro-template="social_icons">
5984	<a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a>
5985</div>
5986</div>
5987</div>
5988
5989		</div>
5990		<div class="hours">
5991			<div data-micro-template="office_hours">
5992	<div class="row"><div class="day">Monday</div><div class="time">8:30 am - 5:00 pm</div></div>
5993	<div class="row"><div class="day">Tuesday</div><div class="time">8:30 am - 5:00 pm</div></div>
5994	<div class="row"><div class="day">Wednesday</div><div class="time">8:30 am - 5:00 pm</div></div>
5995	<div class="row"><div class="day">Thursday</div><div class="time">8:30 am - 5:00 pm</div></div>
5996	<div class="row"><div class="day">Friday</div><div class="time">8:30 am - 5:00 pm</div></div>
5997	<div class="row"><div class="day">Saturday</div><div class="time">Closed</div></div>
5998	<div class="row"><div class="day">Sunday</div><div class="time">Closed</div></div>
5999</div>
6000		</div>
6001	</div>
6002	<div class="map">
6003		<div data-micro-template="map">
6004	<iframe src="" allowfullscreen="" data-src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d188.91335563171376!2d-73.97732677988395!3d40.748525195819965!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25906a6b9e5fb%3A0x3483795b4d46e516!2sHeartwise%20Cardiology!5e0!3m2!1sen!2sus!4v1743625860145!
60045m2!1sen!2sus" aria-label="iframe"></iframe>
6005</div>
6006	</div>
6007</div>
6008			
6009		</div>
6010		<div class="sidebar" data-sidebar="false">
6011			
6012		</div>
6013	</div>
6014</section><style>.section_13 {
6015  padding: 40px 40px;
6016}
6017.section_13 .content_container {
6018  max-width: 100%;
6019  justify-content: center;
6020  display: flex;
6021  margin-left: auto;
6022  margin-right: auto;
6023  box-sizing: border-box;
6024}
6025.section_13 .content_container .content {
6026  width: 100%;
6027}
6028.section_13 .content_container .content h2 {
6029  text-align: center;
6030}
6031.section_13 .content_container .content h3 {
6032  font-size: 1.5rem;
6033}
6034@media (max-width: 640px) {
6035  .section_13 {
6036    padding: 20px 20px;
6037  }
6038}
6039</style><style>.section_13 {
6040  padding: 0px;
6041  background-color: #333333;
6042  color: white;
6043}
6044.section_13 .content_container {
6045  max-width: initial;
6046}
6047.section_13 .content_container .content h3 {
6048  margin: 0px;
6049  font-size: 2.5rem;
6050}
6051.section_13 .copyright {
6052  margin: 40px 0;
6053  text-align: center;
6054  font-size: 0.75rem;
6055}
6056.section_13 .copyright div:not(:last-of-type) {
6057  margin-bottom: 10px;
6058}
6059.section_13 .copyright a {
6060  color: #ffffff;
6061}
6062.section_13 .copyright a:hover {
6063  color: #dac298;
6064}
6065.section_13 .more_services {
6066  display: flex;
6067  justify-content: space-between;
6068  align-items: center;
6069}
6070.section_13 .button {
6071  background-color: #f53457;
6072}
6073@media (max-width: 768px) {
6074  .section_13 {
6075    padding: 10px;
6076  }
6077  .section_13 .more_services {
6078    flex-direction: column;
6079  }
6080}
6081</style>
6082<section class="section_13" data-module="content" data-html="/custom/content/home_copyright/home_copyright.html" data-json="" data-page="" data-full-path="/">
6083	<div class="content_container">
6084		<div class="content">
6085			<div class="copyright">
6086	<div>
6087	© 2026 Heartwise Cardiology. All Rights Reserved. | <a href="/accessibility/" aria-label="Accessibility Policy">Accessibility Policy</a> | <a href="/privacy-policy/" aria-label="Privacy Policy">Privacy Policy</a> | <a href="/terms-conditions/" aria-label="Terms & Conditions">Terms & Conditions</a>
6088</div>
6089<div>
6090	<a href="https://doctorsinternet.com" aria-label="Medical Marketing" rel="noopener" target="_blank">Medical Marketing</a>
6091</div>
6092<div>
6093	<a href="/heart-specialist-near-me/" aria-label="Heart Specialist Near Me">Heart Specialist Near Me</a> | <a href="/cardiologist-near-me/" aria-label="Cardiologist Near Me">Cardiologist Near Me</a> | <a href="/cardiologist-in-midtown/" aria-label="Cardiologist in Midtown">Cardiologist in Midtown</a>
6094</div>
6095</div>
6096
6097
6098
6099		</div>
6100	</div>
6101</section><style>@media (max-width: 700px) {
6102  section[data-page="library"] .content_container .content .library_group_image {
6103    float: none;
6104  }
6105}
6106div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active .accordion_title_text {
6107  color: #333333;
6108}
6109.associations {
6110  display: flex;
6111  justify-content: center;
6112  flex-wrap: wrap;
6113  align-items: center;
6114}
6115.associations img {
6116  margin-bottom: 10px;
6117  padding: 30px;
6118}
6119section .content_container .content h2 {
6120  font-size: 36px;
6121  letter-spacing: 2px;
6122  color: #333333;
6123  font-weight: 300;
6124  text-transform: uppercase;
6125}
6126section .content_container .content h3 {
6127  font-size: 1.8rem;
6128  letter-spacing: 3px;
6129  font-weight: 300;
6130  color: #333333;
6131  text-transform: uppercase;
6132  line-height: 1.6em;
6133}
6134section .content_container .content h4 {
6135  font-size: 1.2rem;
6136  letter-spacing: 4px;
6137  font-weight: 300;
6138  color: #3c3c3c;
6139  text-transform: uppercase;
6140  line-height: 1.6em;
6141  font-family: "Lato";
6142}
6143section[data-module="content"] .content_container {
6144  max-width: 1200px;
6145}
6146section[data-module="content"] .content_container .content h2 {
6147  font-size: 36px;
6148  letter-spacing: 2px;
6149  color: #333333;
6150  font-weight: 300;
6151  text-transform: uppercase;
6152}
6153section[data-module="content"] .content_container .content h3 {
6154  font-size: 1.8rem;
6155  letter-spacing: 3px;
6156  font-weight: 300;
6157  color: #333333;
6158  text-transform: uppercase;
6159  line-height: 1.6em;
6160}
6161section[data-module="content"] .content_container .content h4 {
6162  font-size: 1.2rem;
6163  letter-spacing: 4px;
6164  font-weight: 300;
6165  color: #3c3c3c;
6166  text-transform: uppercase;
6167  line-height: 1.6em;
6168  font-family: "Lato";
6169}
6170section[data-module="content"] .content_container .content li,
6171section[data-module="content"] .content_container .content p {
6172  font-size: 1rem;
6173  line-height: 1.6em;
6174  word-spacing: 0.5px;
6175  letter-spacing: 0.25px;
6176}
6177</style>
6178						
6179						<section data-type="system-lightbox-container"></section>
6180						
6180<script src="/system/js/jquery-3.5.1.min.js"></script>
6180
6181			
6181<script src="https://kit.fontawesome.com/10cd9403cd.js" async></script>
6181
6182						
6182<script>
6183	var scroll_disabled = false;
6184	var extras_loaded = false;
6185	var form_button_lock = false;
6186	var click_lock = false;
6187	var _userway_config = { position: 5, color: "#053e67", language: "en", account: "72Ve6c8l9z" };
6188	var timeout = false;
6189	var window_width = null;
6190	var window_height = null;
6191	var google_conversion = false;
6192	var facebook_conversion = false;
6193	var file_field_counter = 0;
6194	const api = 'https://referrals.di-api.com/';
6195	var newSession = false;
6196	var newVisitor = false;
6197	let socket = null;
6198	const pageID = uuid();
6199
6200	function gtag(arguments) {
6201		dataLayer.push(arguments);
6202	}
6203
6204	google_tracking = {
6205		gtag: function () {
6206			dataLayer.push(arguments);
6207		}
6208	};
6209
6210	facebook_tracking = {
6211		fbq: function () {
6212			n.queue.push(arguments);
6213		}
6214	};
6215
6216	function Socket(visitorId, sessionId, pageId) {
6217		const ws = "wss://socket.di-api.com/analytics"
6218		this.promise = new Promise((resolve, reject) => {
6219			this.visitorId = visitorId;
6220			this.sessionId = sessionId;
6221			this.pageId = pageId;
6222			this.connection = null;
6223
6224			this.attempts = 0;
6225			this.interval = 1000;
6226			this.has_reconnect = false;
6227			var multiplier = 1.25;
6228
6229			var connect = () => {
6230				this.connection = new WebSocket(`${ws}?visitor_id=${visitorId}&session_id=${sessionId}&page_id=${pageId}`);
6231				this.attempts++;
6232
6233				this.connection.onopen = (e) => {
6234					{/* console.log(this.connection);
6235				console.log(e); */}
6236					this.attempts = 0;
6237					this.interval = 1000;
6238					console.log('Connection established');
6239
6240					resolve(1)
6241				}
6242
6243				this.connection.onclose = (e) => {
6244					console.log('Connection closed');
6245					this.connection = null;
6246
6247					if (this.has_reconnect) {
6248						this.interval *= multiplier;
6249						setTimeout(function () {
6250							reconnect();
6251						}, this.interval);
6252					}
6253				}
6254
6255				this.connection.onerror = (e) => {
6256					console.log('%cConnection error ', 'color: red; display: block; width: 100%;', e);
6257					this.connection.close();
6258					resolve(-1)
6259				}
6260
6261				this.connection.onmessage = (e) => {
6262					if (e.data) {
6263
6264					}
6265				}
6266			}
6267
6268			var reconnect = () => {
6269				if (this.connection === null && this.id !== null) {
6270					console.log('Reconnecting...')
6271					connect(ws);
6272					return 1;
6273				} else {
6274					console.log('Needs to Reconnect...')
6275					return -1;
6276				}
6277			}
6278
6279
6280			if (this.id !== null) {
6281				connect()
6282			}
6283		})
6284	}
6285
6286	Socket.prototype.kill = function () {
6287		if (this.connection !== null) {
6288			if (this.connection.readyState) {
6289				this.has_reconnect = false;
6290				this.connection.close();
6291				return 1;
6292			} else {
6293				return -1;
6294			}
6295		} else {
6296			return -1;
6297		}
6298	}
6299
6300	Socket.prototype.get_state = function () {
6301		if (this.connection !== null) {
6302			return this.connection.readyState;
6303		} else {
6304			return null;
6305		}
6306	}
6307
6308	function get_visitor_id() {
6309		let visitorID = localStorage.getItem('visitorID');
6310		if (!visitorID) {
6311			newVisitor = true;
6312			visitorID = uuid();
6313			localStorage.setItem('visitorID', visitorID);
6314		}
6315		return visitorID;
6316	}
6317
6318	function get_session_id() {
6319		let sessionID = sessionStorage.getItem('sessionID');
6320		if (!sessionID) {
6321			newSession = true;
6322			sessionID = uuid();
6323			sessionStorage.setItem('sessionID', sessionID);
6324		}
6325		return sessionID;
6326	}
6327
6328	function get_tracking_permitted() {
6329		const consent = window.DiPrivacy.consent ?? null;
6330		if (consent === 'granted') {
6331			return 1;
6332		} else if (consent === 'denied') {
6333			return 0;
6334		} else {
6335			return null;
6336		}
6337	}
6338
6339
6340	function is_valid_interaction_type(type) {
6341		// Array of patterns (including static strings as patterns)
6342		const patterns = [
6343			/^call$/, // Exact match of 'call'
6344			/^click$/, // Exact match of 'click'
6345			/^form_submission$/, // Exact match of 'form_submission'
6346			/^landing$/, // Exact match of 'landing'
6347			/^page$/, // Exact match of 'page'
6348			/^question_\d+$/, // Matches 'question_' followed by one or more digits
6349			/^tracking_permitted$/, // Exact match of 'tracking_permitted'
6350		];
6351
6352		// Iterate over the patterns and check if the type matches any of them
6353		for (let pattern of patterns) {
6354			if (pattern.test(type)) {
6355				return true;
6356			}
6357		}
6358
6359		return false;
6360	}
6361
6362	function track_submit(elem) {
6363		return new Promise((resolve, reject) => {
6364
6365			const visitorID = get_visitor_id();
6366			const sessionID = get_session_id()
6367
6368			let aios_module = elem.closest('[data-mid]');
6369			let aios_content = elem.closest('[data-cid]')
6370
6371			if (aios_module instanceof jQuery) {
6372				if (aios_module.length) {
6373					aios_module = aios_module[0]
6374				} else {
6375					aios_module = null;
6376				}
6377			}
6378
6379			if (aios_content instanceof jQuery) {
6380				if (aios_content.length) {
6381					aios_content = aios_content[0];
6382				} else {
6383					aios_content = null;
6384				}
6385			}
6386
6387
6388
6389			let request = {};
6390			request.action = 'page_interaction';
6391			request.type = 'form_submission';
6392			request.visitor_id = visitorID;
6393			request.session_id = sessionID;
6394			request.page_id = pageID;
6395			request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null;
6396			request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null;
6397			request.domain = window.location.hostname;
6398			request.page = window.location.pathname;
6399			request.href = null;
6400			request.source = (get_cookie('source') ? get_cookie('source') : null);
6401			request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null);
6402			request.location = (get_cookie('location') ? get_cookie('location') : null);
6403			request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null;
6404			request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null;
6405			request.referrer = document.referrer;
6406			request.tracking_permitted = get_tracking_permitted();
6407
6408			if (get_tracking_permitted() === 1) { }
6409			else {
6410				request.visitor_id = null;
6411				if (document.referrer) {
6412					request.referrer = (new URL(document.referrer)).hostname || null;
6413				}
6414			}
6415
6416
6417
6418			// console.log(request)
6419
6420			let xhr = new XMLHttpRequest();
6421			xhr.open('POST', api);
6422			xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
6423			xhr.onreadystatechange = function () {
6424				// console.log(xhr.readyState)
6425				if (xhr.readyState == 2) {
6426					resolve(true);
6427				}
6428				if (xhr.readyState == 4) {
6429					if (xhr.status == 200) {
6430					} else {
6431					}
6432				}
6433			}
6434			xhr.onerror = function () {
6435				reject(xhr.status);
6436			}
6437			xhr.send(encodeURI('action=' + JSON.stringify(request)));
6438		});
6439	}
6440
6441	function track_click(elem) {
6442		return new Promise((resolve, reject) => {
6443
6444			const visitorID = get_visitor_id();
6445			const sessionID = get_session_id()
6446
6447			let click_type = 'click';
6448			let aios_module = elem.closest('[data-mid]');
6449			let aios_content = elem.closest('[data-cid]')
6450
6451			if (aios_module instanceof jQuery) {
6452				if (aios_module.length) {
6453					aios_module = aios_module[0]
6454				} else {
6455					aios_module = null;
6456				}
6457			}
6458
6459			if (aios_content instanceof jQuery) {
6460				if (aios_content.length) {
6461					aios_content = aios_content[0];
6462				} else {
6463					aios_content = null;
6464				}
6465			}
6466
6467			if (elem.hasAttribute('href')) {
6468				if (elem.getAttribute('href').indexOf('tel:') > -1) {
6469					click_type = 'call'
6470				}
6471			}
6472
6473			if (elem.tagName === 'BUTTON') {
6474				if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) {
6475					const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event');
6476					if (elem_type === 'consent_accept' || elem_type === 'consent_reject') {
6477						click_type = 'tracking_permitted';
6478					} else if (is_valid_interaction_type(elem_type)) {
6479						click_type = elem_type;
6480					}
6481				}
6482			}
6483
6484			if (elem.hasAttribute('data-click-tracking')) {
6485				if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) {
6486					const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event');
6487					if (is_valid_interaction_type(elem_type)) {
6488						click_type = elem_type;
6489					}
6490				}
6491			}
6492
6493			let request = {};
6494			request.action = 'page_interaction';
6495			request.type = click_type;
6496			request.visitor_id = visitorID;
6497			request.session_id = sessionID;
6498			request.page_id = pageID;
6499			request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null;
6500			request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null;
6501			request.domain = window.location.hostname;
6502			request.page = window.location.pathname;
6503			request.href = elem.getAttribute('href');
6504			request.source = (get_cookie('source') ? get_cookie('source') : null);
6505			request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null);
6506			request.location = (get_cookie('location') ? get_cookie('location') : null);
6507			request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null;
6508			request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null;
6509			request.referrer = document.referrer;
6510			request.tracking_permitted = get_tracking_permitted();
6511
6512			if (get_tracking_permitted() === 1) { }
6513			else {
6514				request.visitor_id = null;
6515				if (document.referrer) {
6516					request.referrer = (new URL(document.referrer)).hostname || null;
6517				}
6518			}
6519
6520			console.log(request);
6521
6522			let xhr = new XMLHttpRequest();
6523			xhr.open('POST', api);
6524			xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
6525			xhr.onreadystatechange = function () {
6526				// console.log(xhr.readyState)
6527				if (xhr.readyState == 2) {
6528					resolve(true);
6529				}
6530				if (xhr.readyState == 4) {
6531					if (xhr.status == 200) {
6532					} else {
6533					}
6534				}
6535			}
6536			xhr.onerror = function () {
6537				reject(xhr.status);
6538			}
6539			xhr.send(encodeURI('action=' + JSON.stringify(request)));
6540		});
6541	}
6542
6543	function track_load() {
6544		return new Promise((resolve, reject) => {
6545			const visitorID = get_visitor_id();
6546			const sessionID = get_session_id()
6547			{/* pageID = uuid(); */ }
6548
6549			let request = {};
6550			request.action = 'page_interaction';
6551			request.type = (newSession) ? 'landing' : 'page';
6552			request.visitor_id = visitorID;
6553			request.session_id = sessionID;
6554			request.page_id = pageID;
6555			request.domain = window.location.hostname;
6556			request.page = window.location.pathname;
6557			request.source = (get_cookie('source') ? get_cookie('source') : null);
6558			request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null);
6559			request.location = (get_cookie('location') ? get_cookie('location') : null);
6560			request.referrer = document.referrer;
6561			request.tracking_permitted = get_tracking_permitted();
6562
6563			if (get_tracking_permitted() === 1) { }
6564			else {
6565				request.visitor_id = null;
6566				if (document.referrer) {
6567					request.referrer = (new URL(document.referrer)).hostname || null;
6568				}
6569			}
6570
6571			let xhr = new XMLHttpRequest();
6572			xhr.open('POST', api);
6573			xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
6574			xhr.onreadystatechange = function () {
6575				if (xhr.readyState == 2) {
6576					resolve(true);
6577				}
6578				if (xhr.readyState == 4) {
6579					if (xhr.status == 200) {
6580					} else {
6581					}
6582				}
6583			}
6584			xhr.onerror = function () {
6585				reject(xhr.status);
6586			}
6587			xhr.send(encodeURI('action=' + JSON.stringify(request)));
6588		});
6589	}
6590
6591	function deferred_websocket() {
6592		return new Promise((resolve, reject) => {
6593			let visitorID = get_visitor_id();
6594			const sessionID = get_session_id();
6595
6596			if (get_tracking_permitted() !== 1) {
6597				visitorID = null;
6598			}
6599
6600			window.addEventListener('scroll', function () {
6601				if (socket === null) {
6602					socket = new Socket(visitorID, sessionID, pageID);
6603					resolve(true);
6604				}
6605			});
6606
6607			window.addEventListener('mousemove', function () {
6608				if (socket === null) {
6609					socket = new Socket(visitorID, sessionID, pageID);
6610					resolve(true);
6611				}
6612			});
6613
6614			window.addEventListener('click', function () {
6615				if (socket === null) {
6616					socket = new Socket(visitorID, sessionID, pageID);
6617					resolve(true);
6618				}
6619			});
6620		});
6621	}
6622
6623	function clone_lightbox(selected, dom, section, settings) {
6624		var counter = 0;
6625		clonedDom = dom.cloneNode(true);
6626		document.querySelector('section[data-type="system-lightbox-container"]').appendChild(clonedDom);
6627		document.querySelector('section[data-type="system-lightbox-container"] > [data-action="lightbox"]').setAttribute('data-origin', section);
6628		var lightboxItems = document.querySelectorAll('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]');
6629		lightboxItems[selected].classList.add('selected');
6630
6631		var closeLightboxElement = document.createElement('div');
6632		closeLightboxElement.classList.add('close-icon');
6633		closeLightboxElement.innerHTML = `
6634            <i class="fal fa-times-circle">
6635        `;
6636		closeLightboxElement.addEventListener('click', function (e) {
6637			e.preventDefault();
6638			close_lightbox();
6639		});
6640
6641		var nextLightboxElement = document.createElement('div');
6642		nextLightboxElement.classList.add('next-icon');
6643		nextLightboxElement.innerHTML = `
6644            <i class="fal fa-chevron-circle-right">
6645        `;
6646
6647		var prevLightboxElement = document.createElement('div');
6648		prevLightboxElement.classList.add('prev-icon');
6649		prevLightboxElement.innerHTML = `
6650            <i class="fal fa-chevron-circle-left">
6651        `;
6652
6653		lightboxItems[selected].appendChild(closeLightboxElement);
6654		lightboxItems[selected].appendChild(nextLightboxElement);
6655		lightboxItems[selected].appendChild(prevLightboxElement);
6656
6657		$('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]').each(function () {
6658			$(this).attr('data-index', counter),
6659				counter++;
6660		});
6661
6662		open_lightbox();
6663	}
6664
6665	function open_lightbox() {
6666		$('section[data-type="system-lightbox-container"]').addClass('show');
6667		setTimeout(function () {
6668			$('*[data-type="system-lightbox-close"]').click(close_lightbox);
6669		}, 400);
6670
6671		$('section[data-type="system-lightbox-container"] [data-lazy-picture="true"]').each(function () {
6672			var data_srcset = $(this).attr('data-srcset');
6673			var srcset = $(this).attr('srcset');
6674
6675			if (data_srcset !== '') {
6676				$(this).attr('srcset', data_srcset);
6677			}
6678		});
6679
6680		$('section[data-type="system-lightbox-container"] [data-lazy-img="true"]').each(function () {
6681			var src = $(this).attr('data-src');
6682			if (src) {
6683				$(this).attr('src', src);
6684			}
6685		});
6686	}
6687
6688	function close_lightbox() {
6689		$('*[data-type="system-lightbox-close"]').unbind();
6690		$('section[data-type="system-lightbox-container"]').removeClass('show');
6691		setTimeout(function () {
6692			$('section[data-type="system-lightbox-container"]').empty();
6693		}, 0);
6694	}
6695
6696	function reset_lightbox_container() {
6697		const $container = $('section[data-type="system-lightbox-container"]');
6698
6699		// Remove only injected lightbox-content clones
6700		$container.find('section[data-type="system-lightbox-content"]').remove();
6701
6702		// Remove container click handlers (or at least the ones you add via namespace)
6703		$container.off('click.autoOutsideClose');
6704	}
6705
6706	(function wrapOpenLightbox() {
6707		if (window.__openLightboxWrapped2) return;
6708		window.__openLightboxWrapped2 = true;
6709
6710		function wait() {
6711			if (typeof window.open_lightbox !== 'function') {
6712				setTimeout(wait, 25);
6713				return;
6714			}
6715
6716			const originalOpen = window.open_lightbox;
6717
6718			// Global config
6719			window.override_lightbox = window.override_lightbox || false;
6720			window.lightbox_allowed_source = window.lightbox_allowed_source || null;
6721			window.lightbox_call_source = null; // ephemeral, set right before allowed opens
6722
6723			// Helper: run a function while temporarily marking the caller
6724			window.with_lightbox_source = function (sourceId, fn) {
6725				const prev = window.lightbox_call_source;
6726				window.lightbox_call_source = sourceId;
6727				try {
6728					return fn();
6729				} finally {
6730					window.lightbox_call_source = prev;
6731				}
6732			};
6733
6734			window.open_lightbox = function () {
6735				// If override is active, only allow calls tagged by the allowed source
6736				if (window.override_lightbox) {
6737					if (!window.lightbox_allowed_source) return; // locked down hard
6738					if (window.lightbox_call_source !== window.lightbox_allowed_source) {
6739						return; // ignore everyone else
6740					}
6741				}
6742
6743				return originalOpen.apply(this, arguments);
6744			};
6745		}
6746
6747		wait();
6748	})();
6749
6750	function uuid(verbose = false) {
6751		let id = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
6752			(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
6753		)
6754		if (verbose) {
6755			console.log(id);
6756		}
6757		return id
6758	}
6759
6760	function set_cookie(name, value, days, domain) {
6761		var expires = '';
6762		if (domain == null) {
6763			var domain = window.location.hostname;
6764			domain = domain.split('.');
6765
6766			if (domain.length == 2) {
6767				domain = domain.join('.');
6768			}
6769
6770			if (domain.length == 3) {
6771				domain = domain.slice(Math.max(domain.length - 2, 1));
6772				domain = domain.join('.');
6773			}
6774		}
6775		if (days) {
6776			var date = new Date();
6777			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
6778			expires = '; expires=' + date.toUTCString();
6779		}
6780		document.cookie = name + '=' + (value || '') + expires + '; domain=' + domain + '; path=/';
6781	}
6782
6783	function get_cookie(name) {
6784		var name_eq = name + '=';
6785		var ca = document.cookie.split(';');
6786		for (var i = 0; i < ca.length; i++) {
6787			var c = ca[i];
6788			while (c.charAt(0) == ' ') c = c.substring(1, c.length);
6789			if (c.indexOf(name_eq) == 0) return c.substring(name_eq.length, c.length);
6790		}
6791		return null;
6792	}
6793
6794	function disable_scroll() {
6795		if (scroll_disabled) {
6796			return;
6797		}
6798
6799		scroll_disabled = true;
6800		scrollTop = $(window).scrollTop();
6801
6802		$('body')
6803			.css({
6804				'top': -1 * scrollTop,
6805				'position': 'fixed',
6806				'overflow': 'hidden',
6807				'pointer-events': 'none',
6808			});
6809	}
6810
6811	function load_extras() {
6812		$.getScript('https://cdn.userway.org/widget.js');
6813		javascript_deferred.load.forEach(function (v) {
6814			javascript_deferred.prototype[v]();
6815		});
6816
6817		$('iframe[data-src]').each(function () {
6818			var src = $(this).attr('data-src');
6819			if (!(src == null || src == '')) {
6820				$(this).attr('src', src);
6821			}
6822		});
6823
6824		$('iframe[data-srcdoc]').each(function () {
6825			var srcdoc = atob($(this).attr('data-srcdoc'));
6826			if (!(srcdoc == null || srcdoc == '')) {
6827				$(this).attr('srcdoc', srcdoc);
6828			}
6829		});
6830	}
6831
6832	function update_deferred_images() {
6833		$('[data-lazy-picture="false"]').each(function () {
6834			var data_srcset = $(this).attr('data-srcset');
6835			var srcset = $(this).attr('srcset');
6836
6837			if (data_srcset !== '') {
6838				$(this).attr('srcset', data_srcset);
6839			}
6840		});
6841
6842		$('[data-lazy-img="false"]').each(function () {
6843			var src = $(this).attr('data-src');
6844			if (src) {
6845				$(this).attr('src', src);
6846			}
6847		});
6848
6849		/* $('source[data-srcset]').each(function() {
6850			if ($('body').attr('data-width') > 360) {
6851				var src = $(this).attr('data-srcset');
6852				$(this).attr('srcset', src);
6853			}
6854			else {
6855				var src = $(this).attr('data-srcset-sm');
6856				$(this).attr('srcset', src);
6857			}
6858		}); */
6859
6860
6861		$('video source[data-src]').each(function () {
6862			if ($('body').attr('data-width') > 360) {
6863				var src = $(this).attr('data-src');
6864				$(this).attr('src', src);
6865				$(this).closest('video')[0].load();
6866
6867				if ($(this).closest('video')[0].hasAttribute('muted')) {
6868					$(this).closest('video')[0].play();
6869				}
6870			}
6871		});
6872	}
6873
6874	function lazy_load_deferred_images() {
6875		const lazySections = document.querySelectorAll('body > section')
6876
6877		lazySections.forEach(section => {
6878			// section.classList.add('lazying');
6879			createObserver(section);
6880		});
6881
6882
6883		function createObserver(el) {
6884			let observer;
6885
6886			let options = {
6887				root: null,
6888				rootMargin: "100px 0px",
6889				threshold: 0
6890			};
6891
6892			observer = new window.IntersectionObserver(handleIntersect, options);
6893			observer.observe(el);
6894		}
6895
6896		function handleIntersect(entries, o) {
6897			entries.forEach((entry) => {
6898				if (entry.isIntersecting) {
6899					const lazyAssets = entry.target.querySelectorAll('[data-lazy-picture="true"], [data-lazy-img="true"]');
6900					// console.log('Lazy Assets', lazyAssets);
6901
6902					lazyAssets.forEach((asset) => {
6903						load(asset);
6904					});
6905
6906					o.unobserve(entry.target)
6907
6908				} else {
6909				}
6910			});
6911		}
6912
6913		function load(asset) {
6914
6915			if (asset.tagName === 'IMG') {
6916				if (asset.hasAttribute('data-src')) {
6917					const source = asset.getAttribute('data-src');
6918					if (source) {
6919						asset.setAttribute('src', source);
6920						asset.removeAttribute('data-src')
6921					}
6922				} else {
6923				}
6924			}
6925
6926			if (asset.tagName === 'SOURCE') {
6927				if (asset.hasAttribute('data-srcset')) {
6928					const source = asset.getAttribute('data-srcset');
6929					if (source) {
6930						asset.setAttribute('srcset', source);
6931						asset.removeAttribute('data-srcset')
6932					}
6933				} else {
6934				}
6935			}
6936		}
6937
6938		// document.addEventListener('scroll', function () {
6939
6940		// });
6941	}
6942
6943
6944	function set_resize_listeners() {
6945		window.addEventListener('resize', function () {
6946			if ($(window).width() == window_width) {
6947				return;
6948			}
6949			else {
6950				clearTimeout(timeout);
6951				timeout = setTimeout(get_viewport_size, 50);
6952			}
6953			window_width = $(window).width();
6954		});
6955
6956		window.addEventListener('resize', function () {
6957			if ($(window).height() == window_height) {
6958				return;
6959			}
6960			else {
6961				clearTimeout(timeout);
6962				timeout = setTimeout(get_viewport_size, 50);
6963			}
6964			window_height = $(window).height();
6965		});
6966	}
6967
6968	function set_scroll_listeners() {
6969		$(document).one('scroll', function () {
6970			if (!extras_loaded) {
6971				extras_loaded = true;
6972				load_extras();
6973			}
6974		});
6975
6976		$(document).one('mousemove', function () {
6977			if (!extras_loaded) {
6978				extras_loaded = true;
6979				load_extras();
6980			}
6981		});
6982	}
6983
6984	function set_accordion_listeners() {
6985		if ($('div[data-micro-template="accordion"]')) {
6986			$('div[data-accordion="title"').click(function () {
6987				var $container = $(this).closest($('div[data-micro-template="accordion_container"]'));
6988				var $toggles = $container.find('.accordion_toggle');
6989				var $bodies = $container.find('.accordion_body');
6990				var $titles = $container.find('.accordion_title');
6991
6992				$titles.removeClass('active');
6993				$toggles.text("+");
6994				$bodies.slideUp();
6995
6996				if (!$(this).next().is(":visible")) {
6997					$(this).addClass('active');
6998					$(this).next().slideDown();
6999					$(this).children('.accordion_toggle').text('-');
7000				}
7001			});
7002		}
7003	}
7004
7005
7006	function get_form_info(form) {
7007		const el = $(form)[0];
7008		return {
7009			page: window.location.pathname,
7010			form: {
7011				id: el.getAttribute('data-form-id') || null,
7012				type: el.getAttribute('data-type') || null,
7013				category: el.getAttribute('data-category') || null,
7014			},
7015		};
7016	}
7017
7018	function dispatch_form_event(name, form, response) {
7019		const detail = get_form_info(form);
7020		detail.response = response;
7021		$(form)[0].dispatchEvent(new CustomEvent(name, { bubbles: true, detail: detail }));
7022	}
7023
7024	function form_actions() {
7025		if ($('form').length) {
7026			if ($('input[data-toggle="datepicker"]').length) {
7027				$.getScript('/system/js/datepicker/datepicker.js', function () {
7028					$('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/system/js/datepicker/datepicker.css'));
7029					$('input[data-toggle="datepicker"]').each(function () {
7030
7031						let start_date;
7032
7033						if ($(this).attr('name') == 'dob' || $(this).attr('name') == 'birthdate' || $(this).attr('data-email-label').includes('Birth')) {
7034							start_date = '1907-03-04';
7035						}
7036
7037						const data_start_date = $(this).attr('data-start-date');
7038
7039						if (data_start_date) {
7040							start_date = data_start_date;
7041						}
7042
7043						if (start_date) {
7044							const match = /^([+-])(\d+)([dwy])$/.exec(start_date);
7045							if (match) {
7046								const [, sign, amountStr, unit] = match;
7047								const amount = parseInt(amountStr, 10) * (sign === '-' ? -1 : 1);
7048								start_date = new Date();
7049								if (unit === 'd') start_date.setDate(start_date.getDate() + amount);
7050								else if (unit === 'w') start_date.setDate(start_date.getDate() + amount * 7);
7051								else if (unit === 'y') start_date.setFullYear(start_date.getFullYear() + amount);
7052							} else {
7053								start_date = new Date(start_date);
7054							}
7055						} else {
7056							start_date = new Date();
7057						}
7058
7059						var disabled = {
7060							'mon': $(this).attr('data-mon'),
7061							'tue': $(this).attr('data-tue'),
7062							'wed': $(this).attr('data-wed'),
7063							'thu': $(this).attr('data-thu'),
7064							'fri': $(this).attr('data-fri'),
7065							'sat': $(this).attr('data-sat'),
7066							'sun': $(this).attr('data-sun'),
7067						};
7068
7069						$(this).datepicker({
7070							'autoHide': true,
7071							'startDate': start_date,
7072							'filter': function (date, view) {
7073								if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } }
7074								if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } }
7075								if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } }
7076								if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } }
7077								if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } }
7078								if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } }
7079								if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } }
7080							}
7081						});
7082					});
7083				});
7084			}
7085
7086			$('form input[type="file"]').change(function () {
7087				var max_file_size = $(this).closest('[data-group="file"]').attr('data-max-size');
7088				var current_label = $(this).closest('label').find('.label_name').text();
7089				console.log(current_label);
7090				var current_form = $(this).closest('form');
7091				var container = $(this).closest('[data-container="file"]');
7092				var selected_file = $(this).val().split('/').pop().split('\\').pop();
7093
7094				$(this).closest('label').find('.label_name').text(selected_file);
7095				$(this).closest('label').find('.label_name').append('<div class="remove_file"><i class="fal fa-times">');
7096
7097				var total_file_size = 0;
7098
7099				$(current_form).find('input[type="file"]').each(function () {
7100					if ($(this).val().length > 0) {
7101						total_file_size += $(this).prop('files')[0].size;
7102					}
7103				});
7104
7105				$(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2));
7106
7107				if ($(container).next('[data-container="file"]').length < 1) {
7108					file_field_counter++;
7109					var current_name = $(container).attr('data-name');
7110					var next_container = $(container).clone(true).insertAfter(container);
7111					$(next_container).find('input').attr('name', current_name + '_' + file_field_counter);
7112					$(next_container).find('input').val('');
7113					$(next_container).find('label .label_name').text(current_label);
7114				}
7115
7116				if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) {
7117					$(current_form).find('.max_size_container').addClass('too_large');
7118					$(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled');
7119					$(current_form).find('[data-type="submit"]').addClass('disabled');
7120					$(current_form).addClass('disabled');
7121				}
7122				else {
7123					$(current_form).find('.max_size_container').removeClass('too_large');
7124					$(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled');
7125					$(current_form).find('[data-type="submit"]').removeClass('disabled');
7126					$(current_form).removeClass('disabled');
7127				}
7128
7129				$(container).find('.remove_file').click(function (e) {
7130					e.preventDefault();
7131					$(container).remove();
7132
7133					total_file_size = 0;
7134
7135					$(current_form).find('input[type="file"]').each(function () {
7136						if ($(this).val().length > 0) {
7137							total_file_size += $(this).prop('files')[0].size;
7138						}
7139					});
7140
7141					if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) {
7142						$(current_form).find('.max_size_container').addClass('too_large');
7143						$(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled');
7144						$(current_form).find('[data-type="submit"]').addClass('disabled');
7145						$(current_form).addClass('disabled');
7146					}
7147					else {
7148						$(current_form).find('.max_size_container').removeClass('too_large');
7149						$(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled');
7150						$(current_form).find('[data-type="submit"]').removeClass('disabled');
7151						$(current_form).removeClass('disabled');
7152					}
7153
7154					if ($('form.disabled').length > 0) {
7155						$('form [data-type="submit_multi"]').addClass('disabled');
7156					}
7157					else {
7158						$('form [data-type="submit_multi"]').removeClass('disabled');
7159					}
7160
7161					$(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2));
7162				});
7163			});
7164
7165			$('form *[data-required="true"], form *[data-required="1"]').each(function () {
7166				var placeholder = $(this).attr('placeholder');
7167				$(this).attr('required', true);
7168				$(this).attr('placeholder', placeholder + ' *');
7169				$(this).find('option[value=""]').text($(this).find('option[value=""]').text() + ' *');
7170			});
7171
7172			$('form fieldset').each(function () {
7173				var field_name = $(this).attr('name');
7174				var default_value = $(this).attr('value');
7175
7176				if (default_value !== '') {
7177					$(this).find('input[data-type="radio"][name="' + field_name + '"][value="' + default_value + '"]').attr('checked', true);
7178					$(this).find('input[data-type="radio"][id="' + field_name + '_' + default_value + '"]').attr('checked', true);
7179					$(this).find('input[data-type="checkbox"][name="' + default_value + '"]').attr('checked', true);
7180					$(this).find('input[data-type="checkbox"][id="' + field_name + '_' + default_value + '"]').attr('checked', true);
7181				}
7182			});
7183
7184			$('form *[data-readonly="true"], form *[data-readonly="1"]').each(function () {
7185				$(this).attr('readonly', true);
7186			});
7187
7188			$('form *[data-hidden="true"], form *[data-hidden="1"]').each(function () {
7189				$(this).css('display', 'none');
7190			});
7191
7192			$('form[data-dynamic="true"]').on('submit', function (e) {
7193				console.time('Click 2 Submit')
7194				e.preventDefault();
7195				var submitted_form = $(this);
7196				var recaptcha_site_key = $(this).attr('data-recaptcha-site-key');
7197				var recaptcha_secret_key = $(this).attr('data-recaptcha-secret-key');
7198				var recaptcha_processor = $(this).attr('data-recaptcha-processor');
7199
7200				if (
7201					recaptcha_site_key !== '' &&
7202					recaptcha_secret_key !== '' &&
7203					recaptcha_processor !== ''
7204				) {
7205					if (this.checkValidity()) {
7206						grecaptcha.ready(function () {
7207							grecaptcha.execute(recaptcha_site_key, { action: 'submit' }).then(function (token) {
7208								$.post(recaptcha_processor, {
7209									secret: recaptcha_secret_key,
7210									response: token
7211								})
7212									.done(function (recaptcha) {
7213										prepare_submission(submitted_form, recaptcha).then((val) => {
7214											return submit_form(val.form_submit, val.recaptcha, val.form_data, val.db_only, val.recipients, val.recipients_add, val.ad_recipients, val.cc, val.cc_add, val.subject, val.category, val.is_hipaa, val.reply_to, val.pdf, val.ad_source, val.ad_campaign, val.ad_location, val.ad_source_key, val.ad_campaign_ke
7214y, val.ad_location_key, val.submission_url);
7215										}).then((val) => {
7216											// Done
7217											track_submit(submitted_form);
7218
7219											// Custom Event
7220											dispatch_form_event("tdi:form:success", submitted_form, val);
7221
7222										});
7223									})
7224							});
7225						});
7226					}
7227				}
7228				else {
7229					if (this.checkValidity()) {
7230						prepare_submission(submitted_form, null).then((val) => {
7231							return submit_form(val.form_submit, val.recaptcha, val.form_data, val.db_only, val.recipients, val.recipients_add, val.ad_recipients, val.cc, val.cc_add, val.subject, val.category, val.is_hipaa, val.reply_to, val.pdf, val.ad_source, val.ad_campaign, val.ad_location, val.ad_source_key, val.ad_campaign_key, val.ad_location_key, val.submission_url);
7232						}).then((val) => {
7233							// Done
7234							track_submit(submitted_form);
7235
7236							// Custom Event
7237							dispatch_form_event("tdi:form:success", submitted_form, val);
7238
7239						});
7240					}
7241				}
7242			});
7243
7244			$('form .button.submit[data-dynamic="true"]').click(function () {
7245				if (!form_button_lock && !click_lock) {
7246					click_lock = true;
7247					$(this).closest('form').find('input[type="submit"]')[0].click();
7248				}
7249				setTimeout(function () {
7250					click_lock = false;
7251				}, 1000);
7252			});
7253
7254			$('form select[name="location"]').change(function (e) {
7255				$(this).closest('form').find('input[name="date"').val('');
7256				if ($(this).find(':selected').data('datesDisabled')) {
7257					var $selectedOption = $(this).find(':selected').data('datesDisabled');
7258					$selectedOption = atob($selectedOption);
7259
7260					$(this).closest('form').find('input[data-toggle="datepicker"]').each(function () {
7261						var disabled = JSON.parse($selectedOption);
7262						$(this).datepicker('destroy');
7263						$(this).datepicker({
7264							'autoHide': true,
7265							'filter': function (date, view) {
7266								if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } }
7267								if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } }
7268								if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } }
7269								if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } }
7270								if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } }
7271								if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } }
7272								if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } }
7273							}
7274						});
7275						$(this).datepicker('update');
7276					});
7277				}
7278			});
7279
7280
7281
7282			$('form input[name^="phone"][data-type="text"]').on('input', function () {
7283    			var el = this;
7284                var oldValue = el.value;
7285                var selStart = el.selectionStart;
7286
7287                // digits to the left of the caret in the OLD value
7288                var digitsLeft = oldValue.slice(0, selStart).replace(/\D/g, '').length;
7289
7290                var digits = oldValue.replace(/\D/g, '');
7291
7292
7293                var intl = digits.length > 10;
7294
7295                var formatted;
7296                if (!intl) {
7297                    var m = digits.slice(0, 10).match(/^(\d{0,3})(\d{0,3})(\d{0,4})$/);
7298                    formatted = !m[2] ? m[1] : '(' + m[1] + ') ' + m[2] + (m[3] ? '-' + m[3] : '');
7299                } else {
7300                    formatted = '+' + digits.slice(0, 15);
7301                }
7302
7303                el.value = formatted;
7304
7305                if (el === document.activeElement) {
7306                    var pos = 0, seen = 0;
7307                    while (pos < formatted.length && seen < digitsLeft) {
7308                        if (/\d/.test(formatted[pos])) seen++;
7309                        pos++;
7310                    }
7311                    el.setSelectionRange(pos, pos);
7312                }
7313			});
7314		}
7315	}
7316
7317	function prepare_submission(form_submit, recaptcha) {
7318		return new Promise((resolve, reject) => {
7319			console.time('prepare_submission()');
7320			form_button_lock = true;
7321			$(form_submit).find('.button.submit[data-dynamic="true"]').text('Sending...');
7322
7323			const appendLocation = $(form_submit).attr('data-append-location') === '1' ? true : false;
7324			const locationSelected = $(form_submit).find('select[name="location"] option:selected') ? $(form_submit).find('select[name="location"] option:selected').text() : null;
7325
7326			var form_data = {};
7327			var recipients_add = [];
7328			var cc_add = [];
7329			var db_only = $(form_submit).attr('data-db-only');
7330			var recipients = $(form_submit).attr('data-recipients');
7331			var ad_recipients = $(form_submit).attr('data-ad-recipients');
7332			var cc = $(form_submit).attr('data-cc');
7333			var subject = $(form_submit).attr('data-subject');
7334			var category = $(form_submit).attr('data-category') + (appendLocation && locationSelected ? ` (${locationSelected})` : '');
7335			var is_hipaa = $(form_submit).attr('data-hipaa');
7336			var reply_to = $(form_submit).attr('data-reply-to');
7337			var pdf = $(form_submit).attr('data-pdf');
7338			var submission_url = $(form_submit).attr('data-submission-url');
7339
7340			var ad_source = $(form_submit).find('[data-ad-tracking="source"]').val();
7341			var ad_campaign = $(form_submit).find('[data-ad-tracking="campaign"]').val();
7342			var ad_location = $(form_submit).find('[data-ad-tracking="ad_location"]').val();
7343
7344			var ad_source_key = (get_cookie('source') ? get_cookie('source') : null);
7345			var ad_campaign_key = (get_cookie('campaign') ? get_cookie('campaign') : null);
7346			var ad_location_key = (get_cookie('location') ? get_cookie('location') : null);
7347
7348			$(form_submit).find('input, textarea, select, fieldset').each(function () {
7349				if (
7350					$(this).is('input:not([type="file"])') &&
7351					$(this)[0].hasAttribute('name') &&
7352					$(this)[0].hasAttribute('data-email-label')
7353				) {
7354					value_obj = {
7355						'label': $(this).attr('data-email-label'),
7356						'name': $(this).attr('name'),
7357						'value': $(this).val(),
7358						'type': 'text'
7359					};
7360					form_data[$(this).attr('name')] = value_obj;
7361				}
7362
7363				if (
7364					$(this).is('textarea') &&
7365					$(this)[0].hasAttribute('name') &&
7366					$(this)[0].hasAttribute('data-email-label')
7367				) {
7368					value_obj = {
7369						'label': $(this).attr('data-email-label'),
7370						'name': $(this).attr('name'),
7371						'value': $(this).val(),
7372						'type': 'textarea'
7373					};
7374					form_data[$(this).attr('name')] = value_obj;
7375				}
7376
7377				if (
7378					$(this).is('select') &&
7379					$(this)[0].hasAttribute('name') &&
7380					$(this)[0].hasAttribute('data-email-label')
7381				) {
7382					value_obj = {
7383						'label': $(this).attr('data-email-label'),
7384						'name': $(this).attr('name'),
7385						'value': $(this).val(),
7386						'type': 'select'
7387					};
7388					form_data[$(this).attr('name')] = value_obj;
7389
7390					if (
7391						$(this).find(':selected').length > 0 &&
7392						$(this).find(':selected')[0].hasAttribute('data-recipients') &&
7393						$(this).find(':selected').attr('data-recipients').length
7394					) {
7395						recipients_add.push($(this).find(':selected').attr('data-recipients'));
7396					}
7397
7398					if (
7399						$(this).find(':selected').length > 0 &&
7400						$(this).find(':selected')[0].hasAttribute('data-cc') &&
7401						$(this).find(':selected').attr('data-cc').length
7402					) {
7403						cc_add.push($(this).find(':selected').attr('data-cc'));
7404					}
7405				}
7406
7407				if (
7408					$(this).is('fieldset') &&
7409					$(this)[0].hasAttribute('name') &&
7410					$(this)[0].hasAttribute('data-email-label')
7411				) {
7412					var val = [];
7413					var keys = [];
7414					$(this).find('input:checked').each(function () {
7415						val.push($(this).attr('value'));
7416						keys.push($(this).attr('name'));
7417					});
7418					value_obj = {
7419						'label': $(this).attr('data-email-label'),
7420						'name': $(this).attr('name'),
7421						'keys': keys.join('; '),
7422						'value': val.join('; '),
7423						'type': $(this).attr('type')
7424					};
7425					form_data[$(this).attr('name')] = value_obj;
7426				}
7427			});
7428
7429			console.timeEnd('prepare_submission()');
7430			console.time('submit_form()');
7431			resolve({
7432				"form_submit": form_submit,
7433				"recaptcha": recaptcha,
7434				"form_data": form_data,
7435				"db_only": db_only,
7436				"recipients": recipients,
7437				"recipients_add": recipients_add,
7438				"ad_recipients": ad_recipients,
7439				"cc": cc,
7440				"cc_add": cc_add,
7441				"subject": subject,
7442				"category": category,
7443				"is_hipaa": is_hipaa,
7444				"reply_to": reply_to,
7445				"pdf": pdf,
7446				"ad_source": ad_source,
7447				"ad_campaign": ad_campaign,
7448				"ad_location": ad_location,
7449				"ad_source_key": ad_source_key,
7450				"ad_campaign_key": ad_campaign_key,
7451				"ad_location_key": ad_location_key,
7452				"submission_url": submission_url
7453			})
7454		});
7455	}
7456
7457	function submit_form(form_submit, recaptcha, form_data, db_only, recipients, recipients_add, ad_recipients, cc, cc_add, subject, category, is_hipaa, reply_to, pdf, ad_source, ad_campaign, ad_location, ad_source_key, ad_campaign_key, ad_location_key, submission_url) {
7458		return new Promise((resolve, reject) => {
7459			var email_list = [];
7460			var first_name = null;
7461			var last_name = null;
7462
7463			var file_size_total = 0;
7464			var files_uploaded = [];
7465			var files_selected = 0;
7466
7467			if (
7468				form_submit[0].hasAttribute('data-google-conversion') &&
7469				google_conversion
7470			) {
7471				const conversion_code = $(form_submit[0]).attr('data-google-conversion');
7472				if (conversion_code.length > 0) {
7473					google_tracking.gtag('event', 'conversion', { 'send_to': conversion_code });
7474				}
7475			}
7476
7477			if (
7478				form_submit[0].hasAttribute('data-facebook-conversion') &&
7479				facebook_conversion
7480			) {
7481				const conversion_type = $(form_submit[0]).attr('data-facebook-conversion');
7482				if (conversion_type.length > 0) {
7483					facebook_tracking.fbq('track', conversion_type);
7484				}
7485			}
7486
7487			$(form_submit).find('input[type="file"]').each(function () {
7488				var file_selected = $(this).val();
7489				if (file_selected.length > 0) {
7490					files_selected++;
7491				}
7492			});
7493
7494			$(form_submit).find('input[type="file"]').each(function () {
7495				var file_to_upload = $(this).val();
7496				var submit_promise = new Promise((res, rej) => {
7497					if (file_to_upload.length > 0) {
7498						var xhr = new XMLHttpRequest();
7499						var file = $(this).prop('files')[0];
7500						var formData = new FormData();
7501						formData.append('file', file);
7502
7503						xhr.onreadystatechange = function () {
7504							if (xhr.readyState == 4) {
7505								files_uploaded.push(xhr.responseText);
7506								res(xhr.responseText);
7507							}
7508						}
7509
7510						xhr.open('POST', '/system/processors/file_upload/processor.php', true);
7511						xhr.send(formData);
7512					} else {
7513						res('')
7514					}
7515				}).then((file) => {
7516					if (file) {
7517						return file;
7518					} else {
7519						return '';
7520					}
7521				});
7522				files_uploaded.push(submit_promise);
7523			});
7524
7525			$(form_submit).find('input[type="email"]').each(function () {
7526				email_list.push($(this).val());
7527			});
7528
7529			$(form_submit).find('input[type="text"][data-email-label="First Name"]').each(function () {
7530				first_name = $(this).val();
7531			});
7532
7533			$(form_submit).find('input[type="text"][data-email-label="Last Name"]').each(function () {
7534				last_name = $(this).val();
7535			});
7536
7537
7538			if ((first_name === null || first_name === '') && (last_name === null || last_name === '')) {
7539				$(form_submit).find('input[type="text"][data-email-label="Full Name"], input[type="text"][data-email-label="Name"]').each(function () {
7540					const full_name = $(this).val();
7541					first_name = full_name;
7542				});
7543			}
7544
7545
7546			console.time('POST to processor.php')
7547			$.post('/system/processors/validation/processor.php', {
7548				type: 'date_time',
7549				val: null
7550			})
7551				.done(function (validation) {
7552					console.timeEnd('POST to processor.php')
7553					console.time('Wait For Files')
7554
7555					Promise.all(files_uploaded).then((value) => {
7556						console.timeEnd('Wait For Files')
7557						let uploaded_files = value.filter(file => file);
7558						console.log(JSON.stringify(uploaded_files));
7559						console.log('Files Uploaded');
7560						console.time('POST to submission_url')
7561						$.post(submission_url, {
7562							validation: validation,
7563							db_only: db_only,
7564							recipients: recipients,
7565							recipients_add: JSON.stringify(recipients_add),
7566							ad_recipients: ad_recipients,
7567							recaptcha: recaptcha,
7568							cc: cc,
7569							cc_add: JSON.stringify(cc_add),
7570							subject: subject,
7571							category: category,
7572							first_name: first_name,
7573							last_name: last_name,
7574							is_hipaa: is_hipaa,
7575							reply_to: reply_to,
7576							pdf: pdf,
7577							ad_source: ad_source,
7578							ad_campaign: ad_campaign,
7579							ad_location: ad_location,
7580							ad_source_key: ad_source_key,
7581							ad_campaign_key: ad_campaign_key,
7582							ad_location_key: ad_location_key,
7583							files: JSON.stringify(uploaded_files),
7584							data: JSON.stringify(form_data),
7585							email_list: JSON.stringify(email_list)
7586						})
7587							.done(function (data) {
7588								console.timeEnd('POST to submission_url')
7589
7590								form_button_lock = false;
7591								form_submit[0].reset();
7592								$(form_submit).find('.remove_file').click();
7593								$('form .button.submit[data-dynamic="true"]').each(function () {
7594									var placeholder = $(this).attr('placeholder');
7595									$(this).text(placeholder);
7596								});
7597
7598								if ($(form_submit).attr('data-action') !== '') {
7599									var action = $(form_submit).attr('data-action');
7600
7601									if (action == 'close_lightbox') {
7602										close_lightbox();
7603									}
7604
7605									if (action == 'redirect') {
7606										var redirect = $(form_submit).attr('data-confirmation');
7607										window.location.replace(redirect);
7608									}
7609
7610									if (action == 'function') {
7611										var form_complete_function = $(form_submit).attr('data-confirmation');
7612										window[form_complete_function](form_data);
7613									}
7614
7615									if (action == 'none') { }
7616								}
7617								else {
7618									var confirmation = $(form_submit).children('section[data-type="system-lightbox-content"]');
7619									$(confirmation).clone().appendTo('section[data-type="system-lightbox-container"]');
7620									open_lightbox();
7621								}
7622								resolve(false);
7623							});
7624					});
7625				});
7626		});
7627	}
7628
7629	function get_viewport_size() {
7630		viewport_size = viewport();
7631		$('body').attr('data-width', viewport_size.width);
7632		$('body').attr('data-height', viewport_size.height);
7633	}
7634
7635	function viewport() {
7636		var e = window, a = 'inner';
7637		if (!('innerWidth' in window)) {
7638			a = 'client';
7639			e = document.documentElement || document.body;
7640		}
7641		return { width: e[a + 'Width'], height: e[a + 'Height'] };
7642	}
7643
7644	function set_tracking() {
7645		const url_parameters = new URLSearchParams(window.location.search);
7646		const source = url_parameters.get('source');
7647		const campaign = url_parameters.get('campaign');
7648		const location = url_parameters.get('location');
7649
7650		if (source) {
7651			set_cookie('source', source, 90, null);
7652		}
7653
7654		if (campaign) {
7655			set_cookie('campaign', campaign, 90, null);
7656		}
7657
7658		if (location) {
7659			set_cookie('location', location, 90, null);
7660		}
7661	}
7662
7663	function load_functions() {
7664		javascript.load.forEach(function (v) {
7665			javascript.prototype[v]();
7666		});
7667	}
7668
7669	function load_fa() {
7670		/* $.getScript('https://kit.fontawesome.com/10cd9403cd.js'); */
7671	}
7672
7673	function load_default_subs() {
7674		$('video:not(.no_subs)').each(function () {
7675			var found_video = $(this);
7676
7677			if ($(this).find('source').length) {
7678				var video_source = $(this).find('source').attr('src').split('/').pop();
7679			}
7680			else {
7681				var video_source = $(this).attr('src').split('/').pop();
7682			}
7683
7684			$.get('/custom/content/subs/' + video_source + '.vtt', function (data) {
7685				if (data === 'Error') {
7686					$('<track/>')
7687						.attr('label', 'English')
7688						.attr('kind', 'subtitles')
7689						.attr('srclang', 'en')
7690						.attr('src', '/system/content/subs/no_audio.vtt')
7691						.appendTo(found_video);
7692				}
7693				else {
7694					$('<track/>')
7695						.attr('label', 'English')
7696						.attr('kind', 'subtitles')
7697						.attr('srclang', 'en')
7698						.attr('src', '/custom/content/subs/' + video_source + '.vtt')
7699						.appendTo(found_video);
7700				}
7701			})
7702				.fail(function (data) {
7703					$('<track/>')
7704						.attr('label', 'English')
7705						.attr('kind', 'subtitles')
7706						.attr('srclang', 'en')
7707						.attr('src', '/system/content/subs/no_audio.vtt')
7708						.appendTo(found_video);
7709				});
7710		});
7711	}
7712
7713	function stalling(ms) {
7714		return setTimeout(() => {
7715		}, ms);
7716	}
7717
7718	function initialize() {
7719	    console.log('Initializing...');
7720		window_width = $(window).width();
7721		window_height = $(window).height();
7722		get_viewport_size();
7723		viewport_size = viewport();
7724		update_deferred_images();
7725		set_resize_listeners();
7726		set_scroll_listeners();
7727		set_accordion_listeners();
7728		form_actions();
7729		set_tracking();
7730		load_functions();
7731		load_fa();
7732		load_default_subs();
7733
7734		track_load();
7735		deferred_websocket();
7736		lazy_load_deferred_images();
7737
7738		// Add Tracking to each button
7739		const selection = document.querySelectorAll('section[class^="section_"], #di-consent-banner, #di-cookie-pref-dialog');
7740		for (var i = 0; i < selection.length; i++) {
7741			var found_buttons = selection[i].querySelectorAll("a[href], [data-click-tracking]:not(a[href]), button:not(a[href])");
7742			found_buttons = Array.from(new Set(found_buttons));
7743			found_buttons.forEach(element => {
7744				element.addEventListener('click', function (e) {
7745					var stall = false;
7746					if (this.tagName === 'A' && this.getAttribute('href') !== '#') {
7747						stall = stalling(500);
7748					}
7749
7750					track_click(this).then(() => {
7751						if (stall !== false) {
7752							clearTimeout(stall);
7753						}
7754					})
7755				})
7756			});
7757		}
7758	}
7759
7760	$(document).ready(initialize);
7761</script>
7761
7762
7763						
7763<script>
7764			// Override any default global variables from SYSTEM_JS
7765			(function() {
7766				var overrides = {
7767				};
7768
7769				// Apply overrides to global scope
7770				for (var key in overrides) {
7771					if (overrides.hasOwnProperty(key)) {
7772						window[key] = overrides[key];
7773					}
7774				}
7775			})();
7776			</script>
7776
7777						
7778						
7778<script src="https://api.aleso.ai/aleso.js" async></script>
7778
7779					</body>
7780				</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.