1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <title>Request an Appointment | Raleigh Cosmetic Dentist</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="Request an Appointment | Raleigh Cosmetic Dentist"> 9<meta property="og:url" content="https://raleighteeth.com/appointment/"> 10<meta property="og:type" content="website"> 11<meta property="og:description" content="At Dr. Aaron Tropmann & Dr. Gary Oyster, you can either reach out to us by calling (919) 221-6014 or submit our simple online request form."> 12<meta property="og:image" content="https://raleighteeth.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-WY6NXS84R2'); 2111 window.dataLayer = window.dataLayer || []; 2112 google_tracking.gtag('js', new Date()); 2113 google_tracking.gtag('config', 'G-WY6NXS84R2'); 2114 } 2115 javascript_deferred.prototype[get_deferred_id()] = function() { 2116 $.getScript('https://static.elfsight.com/platform/platform.js'); 2117 } 2118 javascript_deferred.prototype[get_deferred_id()] = function() { 2119 $.getScript('https://go.doctorsinternet.com/embed/v7/175752143568805/11/987654321301115183'); 2120 } 2121</script>
2121 2122 2123 2124 <link rel="canonical" href="https://raleighteeth.com/appointment/"> 2125 2126 <meta name="description" content="At Dr. Aaron Tropmann & Dr. Gary Oyster, you can either reach out to us by calling (919) 221-6014 or submit our simple online request form."> 2127 <meta name="keywords" content="Request an Appointment, Raleigh Cosmetic Dentist, Dentist in Raleigh, Dentist Raleigh, Dentist near me, Cosmetic Dentist near Raleigh, Emergency Dentist Raleigh, Cosmetic Dental Office 27616, Pediatric Dentist Raleigh, Familly Dentist near Raleigh, Dental Implants Raleigh, Implants Dentist Raleigh, All-on-4 Dental Implants near Raleigh, CEREC Dentist Raleigh, Full Mouth Reconstruction Raleigh, Ceramic Dental Crowns near Raleigh, Implants Dentist Raleigh, Dental Cleanings near Raleigh, Dental Fillings Raleigh, Emergency Dental Treatment Raleigh, Oral Exams near Raleigh, Root Canal Therapy Raleigh, Teeth Whitening near Raleigh, Orthodontics Raleigh, Invisalign Raleigh, ClearCorrect near Raleigh, Botox Raleigh, CBCT Dentist Raleigh"> 2128
2128<script type="application/ld+json">[]</script>
2128 2129 <style>body { 2130 border: 0px; 2131 padding: 0px; 2132 margin: 0px; 2133 font-family: "arial"; 2134 font-size: 16px; 2135 letter-spacing: 0.25px; 2136 word-spacing: 0.5px; 2137 font-weight: normal; 2138 background: white; 2139 box-sizing: border-box; 2140 width: 100%; 2141 height: 100%; 2142 -webkit-tap-highlight-color: rgba(0,0,0,0); 2143 text-rendering: optimizeSpeed !important; 2144 display: flex; 2145 flex-wrap: wrap; 2146} 2147body::after { 2148 content: ''; 2149 clear: both; 2150 visibility: hidden; 2151 display: block; 2152} 2153@media (max-width: 360px) { 2154 body { 2155 overflow-x: hidden; 2156 } 2157} 2158body > section { 2159 float: left; 2160 width: 100%; 2161 position: relative; 2162 z-index: 10; 2163 box-sizing: border-box; 2164 display: inline-block; 2165 flex-basis: 100%; 2166} 2167body a { 2168 text-decoration: none; 2169 color: inherit; 2170 transition: color 0.4s; 2171} 2172body a:hover { 2173 color: #0a82d2; 2174} 2175body a svg { 2176 pointer-events: none; 2177} 2178body p { 2179 margin: 1rem 0px; 2180 line-height: 1.6rem; 2181} 2182body img { 2183 max-width: 100%; 2184 max-height: 100%; 2185 image-rendering: -webkit-optimize-contrast; 2186} 2187body picture { 2188 max-width: 100%; 2189 max-height: 100%; 2190} 2191body h1, 2192body h2, 2193body h3, 2194body h4, 2195body h5, 2196body h6 { 2197 margin: 1rem 0px; 2198} 2199body h1 { 2200 font-size: 5rem; 2201} 2202body h2 { 2203 font-size: 4rem; 2204} 2205body h3 { 2206 font-size: 3rem; 2207} 2208body h4 { 2209 font-size: 2rem; 2210} 2211body h5, 2212body h6 { 2213 font-size: 1rem; 2214} 2215body sup { 2216 font-size: 0.75rem; 2217 line-height: 0px; 2218} 2219body li { 2220 line-height: 1.6rem; 2221} 2222body iframe { 2223 width: 100%; 2224 margin: 0px; 2225 padding: 0px; 2226 border: 0px; 2227} 2228body iframe:not([height]) { 2229 height: 100%; 2230} 2231body picture { 2232 max-width: 100%; 2233 max-height: 100%; 2234} 2235body .button { 2236 padding: 20px 40px; 2237 display: inline-block; 2238 cursor: pointer; 2239 transition: background 0.4s, color 0.4s; 2240 margin: 1rem 0px; 2241 text-align: center; 2242 line-height: 1.6rem; 2243 box-sizing: border-box; 2244} 2245@media (max-width: 640px) { 2246 body .button { 2247 padding: 20px; 2248 } 2249} 2250body .float-left { 2251 float: left; 2252} 2253body .float-right { 2254 float: right; 2255} 2256body .position-center { 2257 display: inline-block; 2258 position: relative; 2259 left: 50%; 2260 transform: translate(-50%); 2261} 2262body .clear { 2263 clear: both; 2264} 2265body .inline-block { 2266 display: inline-block; 2267} 2268body .flex { 2269 display: flex; 2270} 2271body .background_container { 2272 position: relative; 2273 overflow: hidden; 2274} 2275body .background_container .background_image { 2276 position: absolute; 2277 min-width: 100%; 2278 min-height: 100%; 2279 transform: translate(-50%,-50%); 2280 left: 50%; 2281 top: 50%; 2282 object-fit: cover; 2283 height: inherit; 2284 width: 100%; 2285 height: 100%; 2286} 2287body .background_container .background_image * { 2288 width: 100%; 2289 object-fit: cover; 2290 object-position: inherit; 2291 height: inherit; 2292} 2293body section[data-type="system-lightbox-container"] { 2294 position: fixed; 2295 width: 100%; 2296 height: 100%; 2297 top: 0px; 2298 left: 0px; 2299 z-index: 99999; 2300 display: flex; 2301 opacity: 0; 2302 pointer-events: none; 2303 transition: opacity 0.4s; 2304 -webkit-user-select: none; 2305 -moz-user-select: none; 2306 -ms-user-select: none; 2307 user-select: none; 2308} 2309body section[data-type="system-lightbox-container"].show { 2310 opacity: 1; 2311 pointer-events: initial; 2312} 2313body section[data-module="ad_tracking"] { 2314 display: none; 2315} 2316body form input[type="submit"] { 2317 display: none; 2318} 2319body form section[data-type="system-lightbox-content"] { 2320 display: none; 2321} 2322body form [data-hidden="1"] { 2323 display: none; 2324} 2325body form input[type="file"] { 2326 display: none; 2327} 2328body form div[data-container="file"] { 2329 margin: 5px; 2330 transition: opacity 0.4s; 2331} 2332body form div[data-container="file"].disabled { 2333 opacity: 0.2; 2334 pointer-events: none; 2335} 2336body form [data-container="file"] label { 2337 display: inline-block; 2338 cursor: pointer; 2339 line-height: 1.6rem; 2340 box-sizing: border-box; 2341 border-radius: 3px; 2342 transition: all .75s ease; 2343 background-size: 500% 500%; 2344 background-position: -2px -2px; 2345 padding: 20px 40px; 2346 color: white; 2347 position: relative; 2348} 2349body form [data-container="file"] label:hover { 2350 background-position: bottom right; 2351} 2352body form [data-container="file"] label .remove_file { 2353 position: absolute; 2354 top: -5px; 2355 left: -5px; 2356 width: 24px; 2357 height: 24px; 2358 background-color: white; 2359 border-radius: 50%; 2360 display: flex; 2361 justify-content: center; 2362 align-items: center; 2363 color: black; 2364 box-shadow: 1px 1px 5px rgba(0,0,0,0.4); 2365 font-size: 1rem; 2366} 2367body form div[data-group="file"] { 2368 display: flex; 2369 flex: 0 0 auto; 2370 width: calc(100% - 20px); 2371 margin: 10px 10px; 2372 flex-wrap: wrap; 2373 justify-content: center; 2374 user-select: none; 2375 transition: opacity 0.4s; 2376} 2377body form div[data-group="file"] > div { 2378 display: flex; 2379 flex-wrap: wrap; 2380 justify-content: center; 2381} 2382body form div[data-group="file"] .max_size_container { 2383 width: 100%; 2384 display: flex; 2385 justify-content: center; 2386 padding: 10px 20px; 2387 box-sizing: border-box; 2388 border: 3px solid #fbfbfb; 2389 border-radius: 3px; 2390 transition: background-color 0.4s, border 0.4s; 2391 margin-top: 20px; 2392} 2393body form div[data-group="file"] .max_size_container .size_divider { 2394 display: inline-block; 2395 margin: 0px 5px; 2396} 2397body form div[data-group="file"] .max_size_container .current_size_warning { 2398 display: none; 2399 margin-right: 10px; 2400 font-size: 24px; 2401} 2402body form div[data-group="file"] .max_size_container .current_size_ok { 2403 display: inline-block; 2404 margin-right: 10px; 2405 font-size: 24px; 2406} 2407body form div[data-group="file"] .too_large { 2408 color: #c40000; 2409 font-weight: bold; 2410 box-sizing: border-box; 2411 border: 3px solid #c40000; 2412 background-color: #c40000; 2413 color: white; 2414} 2415body form div[data-group="file"] .too_large .current_size_warning { 2416 display: inline-block; 2417} 2418body form div[data-group="file"] .too_large .current_size_ok { 2419 display: none; 2420} 2421body form [data-type='submit'].disabled { 2422 opacity: 0.2; 2423 pointer-events: none; 2424} 2425body form[action="https://maps.google.com/maps"] input[type="submit"] { 2426 display: initial; 2427 padding: 5px 10px; 2428 font-size: 1rem; 2429 box-sizing: border-box; 2430 border: 1px solid grey; 2431}
2432body form[action="https://maps.google.com/maps"] input#saddr { 2433 border: 1px solid grey; 2434 margin: 0px 10px; 2435 font-size: 1rem; 2436 padding: 5px 10px; 2437 box-sizing: border-box; 2438} 2439body .ui-widget.ui-widget-content { 2440 border: 0px; 2441} 2442body .ui-datepicker-flex { 2443 display: flex !important; 2444 background-color: rgba(0,0,0,0.95); 2445 position: fixed !important; 2446 top: 0px !important; 2447 left: 0px !important; 2448 z-index: 1000 !important; 2449 width: 100%; 2450 height: 100%; 2451 color: white; 2452 display: none; 2453 flex-direction: column; 2454 justify-content: center; 2455 align-items: center; 2456} 2457body .ui-datepicker-flex th, 2458body .ui-datepicker-flex td { 2459 width: 50px; 2460 height: 50px; 2461 box-sizing: border-box; 2462 text-align: center; 2463 font-size: 1.25rem; 2464 padding: 0px; 2465} 2466body .ui-datepicker-flex th a, 2467body .ui-datepicker-flex td a { 2468 padding: 0px; 2469} 2470@media (max-width: 320px) { 2471 body .ui-datepicker-flex th, 2472 body .ui-datepicker-flex td { 2473 width: 40px; 2474 height: 40px; 2475 font-size: 1rem; 2476 } 2477} 2478body .ui-datepicker-flex .ui-datepicker-header { 2479 display: flex; 2480 justify-content: center; 2481 width: 350px; 2482 border: 0px; 2483 border-bottom: 1px solid white; 2484 border-radius: 0px; 2485 background: initial; 2486 color: white; 2487} 2488body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-prev { 2489 order: 0; 2490} 2491body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-title { 2492 order: 1; 2493} 2494body .ui-datepicker-flex .ui-datepicker-header .ui-datepicker-next { 2495 order: 2; 2496} 2497body .ui-datepicker-flex .ui-widget-header .ui-state-hover { 2498 background: white; 2499 border-radius: 0px; 2500} 2501body .ui-datepicker-flex .ui-datepicker-calendar { 2502 width: 350px; 2503} 2504body .ui-datepicker-flex .ui-datepicker-calendar .ui-state-default { 2505 background: initial; 2506 color: white; 2507 border: 0px; 2508 text-align: center; 2509} 2510body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day { 2511 background-color: white; 2512 border-radius: 50%; 2513} 2514body .ui-datepicker-flex .ui-datepicker-calendar .ui-datepicker-current-day a { 2515 color: black; 2516} 2517body .sidebar[data-sidebar="false"] { 2518 display: none; 2519} 2520body .sidebar[data-sidebar="true"] { 2521 flex-basis: 280px; 2522 width: 100%; 2523 flex-grow: 1; 2524 flex-shrink: 0; 2525 margin-left: 40px; 2526 box-sizing: border-box; 2527} 2528body .sidebar[data-sidebar="true"] img, 2529body .sidebar[data-sidebar="true"] picture { 2530 border-radius: 5px; 2531} 2532body .sidebar[data-sidebar="true"] > .label { 2533 font-size: 1.25rem; 2534 margin: 1.5rem 0px 0.5rem; 2535 border-bottom: 1px solid #ececec; 2536 padding-bottom: 0.5rem; 2537} 2538body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] { 2539 padding: 1rem 0rem; 2540} 2541body .sidebar[data-sidebar="true"] div[data-sidebar="address_all"] > div { 2542 line-height: 1.6rem; 2543} 2544body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] { 2545 padding: 1rem 0rem; 2546} 2547body .sidebar[data-sidebar="true"] div[data-sidebar="address_current"] > div { 2548 line-height: 1.6rem; 2549} 2550body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"], 2551body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] { 2552 display: flex; 2553} 2554body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div.title, 2555body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div.title { 2556 margin-bottom: 10px; 2557} 2558body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"], 2559body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] { 2560 display: flex; 2561 width: 50px; 2562 height: 50px; 2563} 2564body .sidebar[data-sidebar="true"] div[data-sidebar="social_current"] div[data-micro-template="social_icons"] a, 2565body .sidebar[data-sidebar="true"] div[data-micro-template="social_icons_dynamic"] div[data-micro-template="social_icons"] a { 2566 font-size: 1.6rem; 2567 display: flex; 2568 width: 100%; 2569 height: 100%; 2570 justify-content: center; 2571 align-items: center; 2572} 2573body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"], 2574body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] { 2575 display: flex; 2576 flex-direction: row; 2577 flex-wrap: wrap; 2578 padding: 1rem 0px; 2579} 2580body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] > div.title, 2581body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] > div.title { 2582 margin-bottom: 10px; 2583} 2584body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row, 2585body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row { 2586 display: flex; 2587 flex: 1 0 100%; 2588} 2589body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2590body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2591 flex: 1 0 40%; 2592 line-height: 1.6rem; 2593} 2594body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2595body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2596 flex: 1 0 60%; 2597 text-align: right; 2598 line-height: 1.6rem; 2599} 2600body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] { 2601 padding: 1rem 20px; 2602} 2603body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2604 list-style: initial; 2605 margin: initial; 2606 padding: initial; 2607} 2608body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul li:not(:last-of-type) { 2609 margin-bottom: 10px; 2610} 2611body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] { 2612 padding: 1rem 20px; 2613} 2614body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul { 2615 list-style: initial; 2616 margin: initial; 2617 padding: initial; 2618} 2619body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul li:not(:last-of-type) { 2620 margin-bottom: 10px; 2621} 2622@media (max-width: 920px) { 2623 body .sidebar[data-sidebar="true"] { 2624 flex-basis: 100%; 2625 max-width: 100%; 2626 margin-left: 0px; 2627 margin-top: 1rem; 2628 justify-content: center; 2629 text-align: center; 2630 } 2631 body .sidebar[data-sidebar="true"] div[data-sidebar] { 2632 justify-content: center; 2633 } 2634 body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul, 2635 body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2636 list-style: none; 2637 } 2638 body .sidebar[data-sidebar="true"] div[data-sidebar="related_blogs"] ul, 2639 body .sidebar[data-sidebar="true"] div[data-sidebar="blogs_by_year"] ul { 2640 list-style: none; 2641 } 2642 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2643 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2644 padding-right: 10px; 2645 box-sizing: border-box; 2646 flex: 1 0 50%; 2647 text-align: right; 2648 } 2649 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2650 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2651 padding-left: 10px; 2652 box-sizing: border-box; 2653 flex: 1 0 50%; 2654 text-align: left; 2655 } 2656} 2657@media (max-width: 920px) and (max-width: 360px) { 2658 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .day, 2659 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .day { 2660 flex: 1 0 40%; 2661 } 2662 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours"] .row .time, 2663 body .sidebar[data-sidebar="true"] div[data-micro-template="office_hours_dynamic"] .row .time { 2664 flex: 1 0 60%; 2665 } 2666} 2667@media (max-width: 1080px) { 2668 body section[data-module="blog_content"] .content_container,
2669 body section[data-module="article_content"] .content_container { 2670 flex-wrap: wrap; 2671 } 2672} 2673@media (max-width: 920px) { 2674 body section[data-module="dynamic_content"] .content_container, 2675 body section[data-module="interior_content"] .content_container { 2676 flex-wrap: wrap; 2677 } 2678} 2679</style> 2680 <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=Playfair+Display&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css2?family=Prompt:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"><link href="https://fonts.googleapis.com/css?family=Nunito+Sans:ital,wght@0,400;0,600;1,200&display=swap" rel="preload" as="style" onload="this.rel='stylesheet'"></head> 2681 <body data-template-group="contact"> 2682 <style>body { 2683 background: #ffffff; 2684 color: #222; 2685 font-family: "Prompt"; 2686} 2687body a { 2688 color: #817979; 2689} 2690body a:hover { 2691 color: #5997e8; 2692} 2693body h1 { 2694 font-family: "Playfair Display"; 2695} 2696body h2 { 2697 font-family: "Playfair Display"; 2698} 2699body h3 { 2700 font-family: "Playfair Display"; 2701} 2702body h1, 2703body h2, 2704body h3, 2705body h4, 2706body h5, 2707body h6 { 2708 color: #817979; 2709 font-weight: normal; 2710} 2711body input, 2712body textarea { 2713 font-family: "Prompt"; 2714 border: 0px; 2715 border-radius: 0; 2716} 2717body input[type="text"], 2718body textarea { 2719 -webkit-appearance: none; 2720} 2721body .button { 2722 background: #ffffff; 2723 color: #ffffff; 2724 font-size: 17px; 2725} 2726body .button:hover { 2727 background: #ffffff; 2728 color: #222; 2729} 2730body .text_background { 2731 color: #ffffff; 2732} 2733body .text_primary { 2734 color: #817979; 2735} 2736body .text_secondary { 2737 color: #5997e8; 2738} 2739body .text_tertiary { 2740 color: #c5daf7; 2741} 2742body .background_background { 2743 background: #ffffff; 2744} 2745body .background_primary { 2746 background: #817979; 2747} 2748body .background_secondary { 2749 background: #5997e8; 2750} 2751body .background_tertiary { 2752 background: #c5daf7; 2753} 2754body .item_float_right { 2755 float: right; 2756 margin: 0 0 15px 15px; 2757} 2758@media (max-width: 550px) { 2759 body .item_float_right { 2760 float: none; 2761 margin: 0 auto 10px; 2762 } 2763} 2764body .item_float_left { 2765 float: left; 2766 margin: 0 15px 15px 0; 2767} 2768@media (max-width: 550px) { 2769 body .item_float_left { 2770 float: none; 2771 margin: 0 auto 10px; 2772 } 2773} 2774body .margin_center { 2775 margin: 0 auto; 2776} 2777body .margin_left { 2778 margin: 0 auto 0 0; 2779} 2780body .margin_right { 2781 margin: 0 0 0 auto; 2782} 2783body .margin_bottom { 2784 margin: auto 0 0 0; 2785} 2786body .margin_top { 2787 margin: 0 0 auto 0; 2788} 2789body .sys_flex_container { 2790 display: flex; 2791 gap: 20px; 2792} 2793body .sys_flex_container.flex_wrap { 2794 flex-wrap: wrap; 2795} 2796@media (max-width: 1080px) { 2797 body .sys_flex_container.flex_wrap_tablet { 2798 flex-wrap: wrap; 2799 } 2800} 2801@media (max-width: 810px) { 2802 body .sys_flex_container.flex_wrap_phablet { 2803 flex-wrap: wrap; 2804 } 2805} 2806@media (max-width: 550px) { 2807 body .sys_flex_container.flex_wrap_phone { 2808 flex-wrap: wrap; 2809 } 2810} 2811body .sys_flex_container.justify_center { 2812 justify-content: center; 2813} 2814body .sys_flex_container.justify_start { 2815 justify-content: flex-start; 2816} 2817body .sys_flex_container.justify_end { 2818 justify-content: flex-end; 2819} 2820body .sys_flex_container.justify_around { 2821 justify-content: space-around; 2822} 2823body .sys_flex_container.justify_between { 2824 justify-content: space-between; 2825} 2826body .sys_flex_container.align_center { 2827 align-items: center; 2828} 2829body .sys_flex_container.align_start { 2830 align-items: flex-start; 2831} 2832body .sys_flex_container.align_end { 2833 align-items: flex-end; 2834} 2835body .sys_flex_container.align_stretch { 2836 align-items: stretch; 2837} 2838body .sys_flex_container > .full_width { 2839 flex-basis: 100%; 2840} 2841@media (max-width: 1080px) { 2842 body .sys_flex_container > .full_width_tablet { 2843 flex-basis: 100%; 2844 } 2845} 2846@media (max-width: 810px) { 2847 body .sys_flex_container > .full_width_phablet { 2848 flex-basis: 100%; 2849 } 2850} 2851@media (max-width: 550px) { 2852 body .sys_flex_container > .full_width_phone { 2853 flex-basis: 100%; 2854 } 2855} 2856body .sys_flex_container.flex_column { 2857 flex-direction: column; 2858} 2859@media (max-width: 1080px) { 2860 body .sys_flex_container.flex_column_tablet { 2861 flex-direction: column; 2862 } 2863} 2864@media (max-width: 810px) { 2865 body .sys_flex_container.flex_column_phablet { 2866 flex-direction: column; 2867 } 2868} 2869@media (max-width: 550px) { 2870 body .sys_flex_container.flex_column_phone { 2871 flex-direction: column; 2872 } 2873} 2874body .sys_grid_container { 2875 display: grid; 2876 gap: 20px; 2877} 2878body .sys_grid_container.two_wide { 2879 grid-template-columns: repeat(2,1fr); 2880} 2881body .sys_grid_container.three_wide { 2882 grid-template-columns: repeat(3,1fr); 2883} 2884body .sys_grid_container.four_wide { 2885 grid-template-columns: repeat(4,1fr); 2886} 2887body .sys_grid_container.five_wide { 2888 grid-template-columns: repeat(5,1fr); 2889} 2890@media (max-width: 1080px) { 2891 body .sys_grid_container.one_wide_tablet { 2892 grid-template-columns: repeat(1,1fr); 2893 } 2894} 2895@media (max-width: 1080px) { 2896 body .sys_grid_container.two_wide_tablet { 2897 grid-template-columns: repeat(2,1fr); 2898 } 2899} 2900@media (max-width: 1080px) { 2901 body .sys_grid_container.three_wide_tablet { 2902 grid-template-columns: repeat(3,1fr); 2903 } 2904} 2905@media (max-width: 1080px) { 2906 body .sys_grid_container.four_wide_tablet { 2907 grid-template-columns: repeat(4,1fr); 2908 } 2909} 2910@media (max-width: 1080px) { 2911 body .sys_grid_container.five_wide_tablet { 2912 grid-template-columns: repeat(5,1fr); 2913 } 2914} 2915@media (max-width: 810px) { 2916 body .sys_grid_container.one_wide_phablet { 2917 grid-template-columns: repeat(1,1fr); 2918 } 2919} 2920@media (max-width: 810px) { 2921 body .sys_grid_container.two_wide_phablet { 2922 grid-template-columns: repeat(2,1fr); 2923 } 2924} 2925@media (max-width: 810px) { 2926 body .sys_grid_container.three_wide_phablet { 2927 grid-template-columns: repeat(3,1fr); 2928 } 2929} 2930@media (max-width: 810px) { 2931 body .sys_grid_container.four_wide_phablet { 2932 grid-template-columns: repeat(4,1fr); 2933 } 2934} 2935@media (max-width: 810px) { 2936 body .sys_grid_container.five_wide_phablet { 2937 grid-template-columns: repeat(5,1fr); 2938 } 2939} 2940@media (max-width: 550px) { 2941 body .sys_grid_container.one_wide_phone { 2942 grid-template-columns: repeat(1,1fr); 2943 } 2944} 2945@media (max-width: 550px) { 2946 body .sys_grid_container.two_wide_phone { 2947 grid-template-columns: repeat(2,1fr); 2948 } 2949} 2950@media (max-width: 550px) { 2951 body .sys_grid_container.three_wide_phone { 2952 grid-template-columns: repeat(3,1fr); 2953 } 2954} 2955@media (max-width: 550px) { 2956 body .sys_grid_container.four_wide_phone { 2957 grid-template-columns: repeat(4,1fr); 2958 } 2959} 2960@media (max-width: 550px) { 2961 body .sys_grid_container.five_wide_phone { 2962 grid-template-columns: repeat(5,1fr); 2963 } 2964} 2965body .sys_grid_container > .full_width { 2966 grid-column: 1/-1; 2967} 2968@media (max-width: 1080px) { 2969 body .sys_grid_container > .full_width_tablet { 2970 grid-column: 1/-1; 2971 } 2972} 2973@media (max-width: 810px) { 2974 body .sys_grid_container > .full_width_phablet { 2975 grid-column: 1/-1; 2976 } 2977} 2978@media (max-width: 550px) { 2979 body .sys_grid_container > .full_width_phone { 2980 grid-column: 1/-1; 2981 } 2982} 2983body .sys_flex_container.no_gap, 2984body .sys_grid_container.no_gap { 2985 gap: 0; 2986} 2987body .sys_flex_container.medium_gap, 2988body .sys_grid_container.medium_gap { 2989 gap: 40px; 2990} 2991body .sys_flex_container.large_gap, 2992body .sys_grid_container.large_gap { 2993 gap: 80px; 2994} 2995@media (max-width: 1080px) { 2996 body .sys_flex_container.no_gap_tablet, 2997 body .sys_grid_container.no_gap_tablet { 2998 gap: 0px; 2999 } 3000} 3001@media (max-width: 1080px) { 3002 body .sys_flex_container.small_gap_tablet, 3003 body .sys_grid_container.small_gap_tablet { 3004 gap: 20px; 3005 } 3006} 3007@media (max-width: 1080px) { 3008 body .sys_flex_container.medium_gap_tablet, 3009 body .sys_grid_container.medium_gap_tablet { 3010 gap: 40px; 3011 } 3012} 3013@media (max-width: 1080px) { 3014 body .sys_flex_container.large_gap_tablet, 3015 body .sys_grid_container.large_gap_tablet { 3016 gap: 80px; 3017 } 3018} 3019@media (max-width: 810px) { 3020 body .sys_flex_container.no_gap_phablet, 3021 body .sys_grid_container.no_gap_phablet { 3022 gap: 0px; 3023 } 3024} 3025@media (max-width: 810px) { 3026 body .sys_flex_container.small_gap_phablet, 3027 body .sys_grid_container.small_gap_phablet { 3028 gap: 20px; 3029 } 3030} 3031@media (max-width: 810px) { 3032 body .sys_flex_container.medium_gap_phablet, 3033 body .sys_grid_container.medium_gap_phablet { 3034 gap: 40px; 3035 } 3036} 3037@media (max-width: 810px) { 3038 body .sys_flex_container.large_gap_phablet, 3039 body .sys_grid_container.large_gap_phablet { 3040 gap: 80px; 3041 } 3042} 3043@media (max-width: 550px) { 3044 body .sys_flex_container.no_gap_phone, 3045 body .sys_grid_container.no_gap_phone { 3046 gap: 0px; 3047 } 3048} 3049@media (max-width: 550px) { 3050 body .sys_flex_container.small_gap_phone, 3051 body .sys_grid_container.small_gap_phone { 3052 gap: 20px; 3053 } 3054} 3055@media (max-width: 550px) { 3056 body .sys_flex_container.medium_gap_phone, 3057 body .sys_grid_container.medium_gap_phone { 3058 gap: 40px; 3059 } 3060} 3061@media (max-width: 550px) { 3062 body .sys_flex_container.large_gap_phone, 3063 body .sys_grid_container.large_gap_phone { 3064 gap: 80px; 3065 } 3066} 3067body div[data-type="locations-social"] { 3068 color: white; 3069} 3070body div[data-type="locations-social"] a:hover {
3071 color: inherit; 3072} 3073body div[data-type="locations-social"] > div { 3074 transition: background 0.2s; 3075} 3076body div[data-type="locations-social"] div[data-type="facebook"] { 3077 background: #4267b2; 3078} 3079body div[data-type="locations-social"] div[data-type="facebook"]:hover { 3080 background: #6283c5; 3081 color: #ffffff; 3082} 3083body div[data-type="locations-social"] div[data-type="twitter"] { 3084 background: #1da1f2; 3085} 3086body div[data-type="locations-social"] div[data-type="twitter"]:hover { 3087 background: #4db5f5; 3088 color: #ffffff; 3089} 3090body div[data-type="locations-social"] div[data-type="google"] { 3091 background: #db4437; 3092} 3093body div[data-type="locations-social"] div[data-type="google"]:hover { 3094 background: #e36c62; 3095 color: #ffffff; 3096} 3097body div[data-type="locations-social"] div[data-type="instagram"] { 3098 background: #833ab4; 3099} 3100body div[data-type="locations-social"] div[data-type="instagram"]:hover { 3101 background: #9c58c9; 3102 color: #ffffff; 3103} 3104body div[data-type="locations-social"] div[data-type="blog"] { 3105 background: #833ab4; 3106} 3107body div[data-type="locations-social"] div[data-type="blog"]:hover { 3108 background: #9c58c9; 3109 color: #ffffff; 3110} 3111body .sidebar[data-sidebar="true"] > .label { 3112 font-size: 1.5rem; 3113 margin: 1.5rem 0px 0.5rem; 3114 border-bottom: 1px solid #817979; 3115 padding-bottom: 0.5rem; 3116 font-weight: bold; 3117 color: #817979; 3118 font-family: "Playfair Display"; 3119} 3120body :-moz-placeholder { 3121 color: #222; 3122 font-family: "Prompt"; 3123 text-decoration: none; 3124 font-weight: normal; 3125 opacity: 0.8; 3126} 3127body ::-moz-placeholder { 3128 color: #222; 3129 font-family: "Prompt"; 3130 text-decoration: none; 3131 font-weight: normal; 3132 opacity: 0.8; 3133} 3134body ::-webkit-input-placeholder { 3135 color: #222; 3136 font-family: "Prompt"; 3137 text-decoration: none; 3138 font-weight: normal; 3139 opacity: 0.8; 3140} 3141body :-ms-input-placeholder { 3142 color: #222; 3143 font-family: "Prompt"; 3144 text-decoration: none; 3145 font-weight: normal; 3146 opacity: 0.8; 3147} 3148body form * { 3149 font-family: "Prompt"; 3150 text-decoration: none; 3151 font-weight: normal; 3152 font-size: 1rem; 3153} 3154body form div[data-container="file"] { 3155 margin: 5px; 3156 transition: opacity 0.4s; 3157} 3158body form div[data-container="file"]:last-of-type label { 3159 background-image: linear-gradient(to bottom right,#817979 25%,#5997e8 75%); 3160} 3161body form [data-container="file"] label { 3162 background-image: linear-gradient(to bottom right,#5997e8 25%,#817979 75%); 3163} 3164body div[data-micro-template="accordion_container"] { 3165 width: 100%; 3166 max-width: 100%; 3167 font-family: "Prompt"; 3168} 3169body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title { 3170 display: flex; 3171 justify-content: space-between; 3172 align-items: center; 3173 color: #817979; 3174 cursor: pointer; 3175 border-bottom: 1px solid #222; 3176 padding-bottom: 0px; 3177} 3178body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3179body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3180 font-size: 1.5rem; 3181 font-weight: 400; 3182} 3183@media (max-width: 1080px) { 3184 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3185 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3186 font-size: 1.2rem; 3187 } 3188} 3189@media (max-width: 550px) { 3190 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_title_text, 3191 body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title .accordion_toggle { 3192 font-size: 1.1rem; 3193 } 3194} 3195body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active { 3196 border-color: #ffffff; 3197 color: #ffffff; 3198} 3199body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_title.active .accordion_title_text { 3200 color: #ffffff; 3201} 3202body div[data-micro-template="accordion_container"] div[data-micro-template="accordion"] .accordion_body { 3203 display: none; 3204 padding: 20px 0; 3205 line-height: 1.35em; 3206 text-align: left; 3207} 3208body section[data-type="system-lightbox-container"] .close-icon { 3209 background-color: white; 3210 border-radius: 50%; 3211 box-sizing: border-box; 3212 border: 5px solid white; 3213 display: flex; 3214 justify-content: center; 3215 align-items: center; 3216 top: -10px; 3217 right: -10px; 3218} 3219body section[data-type="system-lightbox-container"] .next-icon { 3220 background-color: white; 3221 border-radius: 50%; 3222 box-sizing: border-box; 3223 border: 4px solid white; 3224 display: flex; 3225 justify-content: center; 3226 align-items: center; 3227 position: absolute; 3228 top: 50%; 3229 right: 0px; 3230 font-size: 2rem; 3231 transform: translate(10px,-50%); 3232 cursor: pointer; 3233} 3234body section[data-type="system-lightbox-container"] .prev-icon { 3235 background-color: white; 3236 border-radius: 50%; 3237 box-sizing: border-box; 3238 border: 4px solid white; 3239 display: flex; 3240 justify-content: center; 3241 align-items: center; 3242 position: absolute; 3243 top: 50%; 3244 left: 0px; 3245 font-size: 2rem; 3246 transform: translate(-10px,-50%); 3247 cursor: pointer; 3248} 3249body section[data-type="system-lightbox-container"] .gallery_grid_modal { 3250 display: none; 3251 position: fixed; 3252 height: 100vh; 3253 width: 100%; 3254 top: 0; 3255 left: 0; 3256 background-color: rgba(0,0,0,0.6); 3257 justify-content: center; 3258 align-items: center; 3259 opacity: 0; 3260 transition: all 0.4s ease-in-out; 3261 z-index: 99999999; 3262} 3263body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container { 3264 cursor: pointer; 3265 margin: 5%; 3266 position: relative; 3267} 3268body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container img { 3269 max-height: 80vh; 3270} 3271body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content { 3272 display: flex; 3273 flex-direction: column; 3274} 3275body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button { 3276 order: 5; 3277 margin: 0; 3278} 3279body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow { 3280 position: absolute; 3281 top: 50%; 3282} 3283body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow svg {
3284 color: #fff; 3285 font-size: 36px; 3286 transition: all 0.2s; 3287} 3288body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow:hover svg { 3289 transform: scale(1.2); 3290} 3291body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3292 left: -50px; 3293} 3294body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3295 right: -50px; 3296} 3297body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3298 position: absolute; 3299 bottom: 100px; 3300 width: 100%; 3301 text-align: center; 3302 background: rgba(0,0,0,0.6); 3303} 3304body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text { 3305 color: #fff; 3306 font-size: 1.25em; 3307 margin: 0; 3308 font-family: "Prompt"; 3309 padding: 15px 0; 3310} 3311body section[data-type="system-lightbox-container"] .gallery_grid_modal.show { 3312 display: flex; 3313 opacity: 1; 3314} 3315@media (max-width: 768px) { 3316 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3317 bottom: 75px; 3318 } 3319 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption .highlighted_image_text { 3320 font-size: 1em; 3321 padding: 5px; 3322 } 3323 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3324 left: -40px; 3325 } 3326 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3327 right: -40px; 3328 } 3329 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .highlighted_image_content .button { 3330 padding: 10px; 3331 } 3332} 3333@media (max-width: 480px) { 3334 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_caption { 3335 bottom: 50px; 3336 } 3337 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_arrow { 3338 bottom: -40px; 3339 top: initial; 3340 } 3341 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_left { 3342 left: 20%; 3343 } 3344 body section[data-type="system-lightbox-container"] .gallery_grid_modal .highlighted_image_container .gallery_grid_right { 3345 right: 20%; 3346 } 3347} 3348body .responsive_video { 3349 padding-bottom: 56.25%; 3350 position: relative; 3351} 3352body .responsive_video iframe, 3353body .responsive_video video { 3354 position: absolute; 3355 height: 100%; 3356 width: 100%; 3357 top: 0; 3358 left: 0; 3359} 3360body .ul_column { 3361 column-count: 2; 3362} 3363@media (max-width: 768px) { 3364 body .ul_column { 3365 column-count: 2; 3366 } 3367} 3368@media (max-width: 480px) { 3369 body .ul_column { 3370 column-count: 1; 3371 } 3372} 3373body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3374 display: grid; 3375 grid-template-columns: repeat(4,1fr); 3376 gap: 40px 20px; 3377} 3378@media (max-width: 1366px) { 3379 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3380 grid-template-columns: repeat(3,1fr); 3381 } 3382} 3383@media (max-width: 810px) { 3384 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3385 grid-template-columns: repeat(2,1fr); 3386 } 3387} 3388@media (max-width: 550px) { 3389 body section .content_container .content div[data-micro-template="invisalign_list_container"] { 3390 grid-template-columns: repeat(1,1fr); 3391 gap: 20px 10px; 3392 } 3393} 3394@media (max-width: 550px) { 3395 body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .image { 3396 display: none; 3397 } 3398} 3399body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text { 3400 text-align: center; 3401} 3402@media (max-width: 550px) { 3403 body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text { 3404 text-align: left; 3405 } 3406} 3407body section .content_container .content div[data-micro-template="invisalign_list_container"] a[data-micro-template="invisalign_list"] .text p { 3408 margin: 0; 3409} 3410body section .content_container .content .invisalign_video_container { 3411 display: grid; 3412 grid-template-columns: repeat(2,1fr); 3413 gap: 40px; 3414} 3415@media (max-width: 550px) { 3416 body section .content_container .content .invisalign_video_container { 3417 grid-template-columns: repeat(1,1fr); 3418 gap: 20px; 3419 } 3420} 3421body section .content_container .content .invisalign_video_container .invisalign_list .text { 3422 text-align: center; 3423} 3424body section .content_container .content .invisalign_video_container .invisalign_list .text p { 3425 color: #5997e8; 3426 font-size: 1.2rem; 3427} 3428@media (max-width: 550px) { 3429 body section .content_container .content .invisalign_video_container .invisalign_list .text p { 3430 font-size: 1.1rem; 3431 } 3432} 3433body section .content_container .content .service_video_container { 3434 margin: 60px auto; 3435 display: flex; 3436 border-bottom: 10px solid #5997e8; 3437 box-shadow: 6px 5px 8px 0px #bfbfbf; 3438} 3439@media (max-width: 768px) { 3440 body section .content_container .content .service_video_container { 3441 flex-direction: column; 3442 } 3443} 3444body section .content_container .content .service_video_container > div { 3445 flex: 1; 3446} 3447body section .content_container .content .service_video_container .service_video_text { 3448 padding: 0 40px; 3449 background: #817979; 3450 box-sizing: border-box; 3451 display: flex; 3452 justify-content: center; 3453 align-items: center; 3454} 3455@media (max-width: 640px) { 3456 body section .content_container .content .service_video_container .service_video_text { 3457 padding: 0 20px; 3458 } 3459} 3460body section .content_container .content .service_video_container .service_video_text h4 { 3461 color: #fff; 3462 font-size: 1rem; 3463 font-style: italic; 3464 line-height: 1.4em; 3465 font-weight: 400; 3466} 3467body section .content_container .content .service_testimonial_videos { 3468 background: #817979; 3469 padding: 20px 40px; 3470 border-bottom: 10px solid #5997e8; 3471 text-align: center; 3472 box-shadow: 6px 5px 8px 0px #bfbfbf; 3473} 3474@media (max-width: 640px) { 3475 body section .content_container .content .service_testimonial_videos { 3476 padding: 20px; 3477 } 3478} 3479body section .content_container .content .service_testimonial_videos .secondary_divider { 3480 display: inline-block; 3481 margin: 0 auto; 3482 height: 3px; 3483 background: #5997e8; 3484 width: 150px; 3485} 3486body section .content_container .content .service_testimonial_videos h2 { 3487 color: #fff; 3488 font-size: 2rem; 3489 margin-bottom: 10px; 3490 padding: 0; 3491 font-weight: 400; 3492} 3493body section .content_container .content .service_testimonial_videos h2.text_center { 3494 text-align: center; 3495} 3496body section .content_container .content .service_testimonial_videos p { 3497 color: #fff; 3498} 3499body section .content_container .content .service_testimonial_videos .testimonial_videos_container { 3500 display: flex; 3501 flex-wrap: wrap; 3502 justify-content: space-between; 3503 text-align: center; 3504} 3505body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video { 3506 flex-basis: 48%; 3507 margin: 20px 0; 3508} 3509@media (max-width: 550px) { 3510 body section .content_container .content .service_testimonial_videos .testimonial_videos_container .testimonial_video { 3511 flex-basis: 100%; 3512 } 3513} 3514body section .content_container .content .alternating_service_container { 3515 margin-top: 20px; 3516} 3517body section .content_container .content .alternating_service_container .alternating_service { 3518 display: flex; 3519 justify-content: space-between; 3520 align-items: center; 3521 margin-bottom: 30px; 3522 flex-wrap: wrap; 3523} 3524body section .content_container .content .alternating_service_container .alternating_service .image, 3525body section .content_container .content .alternating_service_container .alternating_service .text { 3526 flex-basis: 48%; 3527} 3528@media (max-width: 768px) { 3529 body section .content_container .content .alternating_service_container .alternating_service .image, 3530 body section .content_container .content .alternating_service_container .alternating_service .text { 3531 flex-basis: 100%; 3532 } 3533} 3534body section .content_container .content .alternating_service_container .alternating_service .text h3 { 3535 font-size: 1.4rem; 3536} 3537@media (max-width: 768px) { 3538 body section .content_container .content .alternating_service_container .alternating_service .image { 3539 text-align: center; 3540 } 3541} 3542body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image { 3543 order: 2; 3544 text-align: right; 3545} 3546@media (max-width: 768px) { 3547 body section .content_container .content .alternating_service_container .alternating_service:nth-of-type(even) .image { 3548 text-align: center; 3549 order: initial; 3550 } 3551} 3552</style><style>html { 3553 scroll-behavior: smooth; 3554} 3555body { 3556 --kraken-container-width: 1350px; 3557 font-size: 18px; 3558} 3559@media (max-width: 1080px) { 3560 body { 3561 font-size: 16px; 3562 } 3563} 3564body section .content_container { 3565 width: min(100%,var(--kraken-container-width)); 3566 margin: 0 auto; 3567 padding: 0 40px; 3568 box-sizing: border-box; 3569 height: 100%; 3570} 3571@media (max-width: 550px) { 3572 body section .content_container { 3573 padding: 0 20px; 3574 } 3575} 3576body section .responsive_iframe { 3577 position: relative; 3578 width: 100%; 3579 height: 100%; 3580} 3581body section .responsive_iframe.sixteen_9 { 3582 padding-bottom: 56.25%; 3583} 3584body section .responsive_iframe.four_3 { 3585 padding-bottom: 75%; 3586} 3587body section .responsive_iframe iframe { 3588 position: absolute; 3589 height: 100%; 3590 width: 100%; 3591 top: 0; 3592 left: 0; 3593} 3594body section img, 3595body section picture, 3596body section video { 3597 display: block; 3598} 3599body section .float_right { 3600 float: right; 3601 margin: 0 0 20px 20px; 3602} 3603@media (max-width: 550px) { 3604 body section .float_right { 3605 float: none; 3606 margin: 0 auto 20px; 3607 } 3608} 3609body section .float_left { 3610 float: left; 3611 margin: 0 20px 20px 0; 3612} 3613@media (max-width: 550px) { 3614 body section .float_left { 3615 float: none; 3616 margin: 0 auto 20px; 3617 } 3618} 3619body section .kraken_image { 3620 position: relative; 3621} 3622body section .kraken_image::before { 3623 content: ""; 3624 position: absolute; 3625 width: 0; 3626 height: 0; 3627 right: 0; 3628 bottom: 0; 3629 z-index: 5; 3630 border-bottom: 55px solid #ffffff; 3631 border-left: 160px solid transparent; 3632} 3633body section .xlarge_image img, 3634body section .xlarge_image picture, 3635body section .large_image img, 3636body section .large_image picture, 3637body section .medium_image img, 3638body section .medium_image picture, 3639body section .small_image img, 3640body section .small_image picture { 3641 width: 100%; 3642 height: 100%; 3643 object-fit: cover; 3644 object-position: center center; 3645} 3646body section .xlarge_image { 3647 width: min(100%,1200px); 3648} 3649body section .large_image { 3650 width: min(100%,900px); 3651} 3652body section .medium_image { 3653 width: min(100%,600px); 3654} 3655body section .small_image { 3656 width: min(100%,300px); 3657} 3658body section h1, 3659body section h2, 3660body section h3, 3661body section h4, 3662body section h5, 3663body section p { 3664 line-height: 1.5em; 3665 text-transform: none; 3666 font-weight: 400; 3667} 3668body section h1 { 3669 font-size: 3rem; 3670 line-height: 1.25em; 3671} 3672@media (max-width: 810px) { 3673 body section h1 { 3674 font-size: 2.25rem; 3675 } 3676} 3677@media (max-width: 550px) { 3678 body section h1 { 3679 font-size: 2rem; 3680 } 3681} 3682body section h2 { 3683 font-size: 1.75rem; 3684 color: #222; 3685} 3686@media (max-width: 1080px) { 3687 body section h2 { 3688 font-size: 1.5rem; 3689 } 3690} 3691body section h3 { 3692 font-size: 1.5rem; 3693 color: #222; 3694 font-weight: 600; 3695} 3696@media (max-width: 1080px) { 3697 body section h3 { 3698 font-size: 1.3rem; 3699 } 3700} 3701body section h4 { 3702 font-family: "Prompt"; 3703 font-size: 18px; 3704 text-transform: uppercase; 3705 color: #817979; 3706} 3707@media (max-width: 1080px) { 3708 body section h4 { 3709 font-size: 16px; 3710 } 3711} 3712body section h5 { 3713 font-family: "Playfair Display"; 3714 font-size: 1.25rem; 3715 color: #222; 3716} 3717body section p { 3718 font-size: 18px; 3719 font-weight: 300; 3720} 3721@media (max-width: 1080px) { 3722 body section p { 3723 font-size: 16px; 3724 } 3725} 3726body section ul li { 3727 font-weight: 300; 3728} 3729body section a { 3730 color: #817979; 3731} 3732body section a:hover {
3733 color: #5997e8; 3734} 3735body section a.kraken_link { 3736 position: relative; 3737 color: #222; 3738 text-transform: uppercase; 3739 box-sizing: border-box; 3740 padding-bottom: 3px; 3741 font-weight: 500; 3742 font-size: 16px; 3743} 3744body section a.kraken_link i, 3745body section a.kraken_link svg { 3746 transition: all 0.3s; 3747} 3748body section a.kraken_link:before { 3749 content: ""; 3750 position: absolute; 3751 left: 50%; 3752 right: 100%; 3753 bottom: 0px; 3754 background: #5997e8; 3755 height: 2px; 3756 opacity: 1; 3757 transform: translateX(-50%); 3758 width: 100%; 3759} 3760body section a.kraken_link:hover { 3761 color: #5997e8; 3762} 3763body section a.kraken_link:hover i, 3764body section a.kraken_link:hover svg { 3765 padding-left: 5px; 3766} 3767body section a.kraken_link:hover:before { 3768 animation: krakenlink .5s 1; 3769} 3770body section a.kraken_link1 { 3771 text-decoration: underline; 3772 color: #5997e8; 3773 text-transform: capitalize; 3774 box-sizing: border-box; 3775 padding-bottom: 3px; 3776 font-weight: 500; 3777 font-size: 16px; 3778} 3779body section a.kraken_link1 i, 3780body section a.kraken_link1 svg { 3781 transition: all 0.3s; 3782} 3783body section a.kraken_link1:hover { 3784 color: #5997e8; 3785} 3786body section a.kraken_link1:hover i, 3787body section a.kraken_link1:hover svg { 3788 padding-left: 5px; 3789} 3790body section a.button, 3791body section .button { 3792 color: #222; 3793 background: #5997e8; 3794 position: relative; 3795 padding: 10px 40px; 3796 border-radius: 0px; 3797 text-transform: none; 3798 border: 1px solid #5997e8; 3799 font-size: 18px; 3800 text-align: center; 3801 display: flex; 3802 align-items: center; 3803 justify-content: center; 3804 box-sizing: border-box; 3805} 3806@media (max-width: 810px) { 3807 body section a.button, 3808 body section .button { 3809 font-size: 16px; 3810 } 3811} 3812body section a.button:before, 3813body section .button:before { 3814 content: ""; 3815 position: absolute; 3816 left: 50%; 3817 right: 100%; 3818 bottom: 10px; 3819 background: #5997e8; 3820 height: 2px; 3821 opacity: 0; 3822 transition-property: width; 3823 transition-duration: .3s; 3824 transition-timing-function: ease-out; 3825 transform: translateX(-50%); 3826 width: 0; 3827} 3828body section a.button:hover, 3829body section .button:hover { 3830 color: #222; 3831 background: #ffffff; 3832} 3833body section a.button:hover:before, 3834body section .button:hover:before { 3835 right: 0; 3836 opacity: 1; 3837 width: calc(100% - 80px); 3838} 3839body section a.button.kraken_button, 3840body section .button.kraken_button { 3841 color: #222; 3842 background: #5997e8; 3843 border: 1px solid #5997e8; 3844} 3845body section a.button.kraken_button:before, 3846body section .button.kraken_button:before { 3847 display: none; 3848} 3849body section a.button.kraken_button span, 3850body section .button.kraken_button span { 3851 position: relative; 3852} 3853body section a.button.kraken_button span:before, 3854body section .button.kraken_button span:before { 3855 content: ""; 3856 position: absolute; 3857 left: 50%; 3858 right: 100%; 3859 bottom: 0px; 3860 background: #5997e8; 3861 height: 2px; 3862 opacity: 0; 3863 transition-property: width; 3864 transition-duration: .3s; 3865 transition-timing-function: ease-out; 3866 transform: translateX(-50%); 3867 width: 0; 3868} 3869body section a.button.kraken_button:hover, 3870body section .button.kraken_button:hover { 3871 color: #222; 3872 background: #ffffff; 3873} 3874body section a.button.kraken_button:hover:before, 3875body section .button.kraken_button:hover:before { 3876 display: none; 3877} 3878body section a.button.kraken_button:hover span:before, 3879body section .button.kraken_button:hover span:before { 3880 right: 0; 3881 opacity: 1; 3882 width: 100%; 3883} 3884body section a.button.button_alt, 3885body section .button.button_alt { 3886 color: #ffffff; 3887 background: none; 3888 border: 1px solid #ffffff; 3889} 3890body section a.button.button_alt:before, 3891body section .button.button_alt:before { 3892 background: #5997e8; 3893} 3894body section a.button.button_alt:hover, 3895body section .button.button_alt:hover { 3896 color: #222; 3897 background: #ffffff; 3898} 3899body section ul[data-micro-template="pdf_list_container"] { 3900 list-style: none; 3901 padding: 0; 3902 display: grid; 3903 grid-template-columns: repeat(1,1fr); 3904 gap: 10px; 3905} 3906body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"] { 3907 color: #222; 3908 background: #5997e8; 3909 position: relative; 3910 padding: 10px 40px; 3911 border-radius: 0px; 3912 text-transform: none; 3913 border: 1px solid #5997e8; 3914 font-size: 18px; 3915 text-align: center; 3916 display: flex; 3917 align-items: center; 3918 justify-content: center; 3919 width: 100%; 3920 box-sizing: border-box; 3921} 3922@media (max-width: 810px) { 3923 body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"] { 3924 font-size: 16px; 3925 } 3926} 3927body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"] a { 3928 position: relative; 3929 color: #222; 3930} 3931body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"] a:before { 3932 content: ""; 3933 position: absolute; 3934 left: 50%; 3935 right: 100%; 3936 bottom: 0px; 3937 background: #5997e8; 3938 height: 2px; 3939 opacity: 0; 3940 transition-property: width; 3941 transition-duration: .3s; 3942 transition-timing-function: ease-out; 3943 transform: translateX(-50%); 3944 width: 0; 3945} 3946body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"]:hover {
3947 color: #222; 3948 background: #ffffff; 3949} 3950body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"]:hover a { 3951 color: #222; 3952} 3953body section ul[data-micro-template="pdf_list_container"] li[data-micro-template="pdf_list"]:hover a:before { 3954 right: 0; 3955 opacity: 1; 3956 width: 100%; 3957} 3958body section form { 3959 display: grid; 3960 grid-template-columns: repeat(2,1fr); 3961 gap: 40px 20px; 3962} 3963@media (max-width: 550px) { 3964 body section form { 3965 gap: 30px 20px; 3966 display: flex; 3967 flex-direction: column; 3968 } 3969} 3970body section form > div { 3971 display: flex; 3972 flex-direction: column; 3973} 3974body section form > div label { 3975 color: #ffffff; 3976 font-weight: 600; 3977 margin-bottom: 5px; 3978} 3979body section form > div input, 3980body section form > div textarea, 3981body section form > div fieldset, 3982body section form > div select, 3983body section form > div option { 3984 padding: 5px; 3985 box-sizing: border-box; 3986} 3987body section form > div input, 3988body section form > div textarea, 3989body section form > div select { 3990 background: none; 3991 border: none; 3992 color: #ffffff; 3993 border-bottom: 2px solid #ffffff; 3994} 3995body section form > div input:focus, 3996body section form > div input:active, 3997body section form > div textarea:focus, 3998body section form > div textarea:active, 3999body section form > div select:focus, 4000body section form > div select:active { 4001 border-color: #5997e8; 4002 outline: none; 4003} 4004body section form > div input::placeholder, 4005body section form > div textarea::placeholder, 4006body section form > div select::placeholder { 4007 color: #ffffff; 4008} 4009body section form > div input option, 4010body section form > div textarea option, 4011body section form > div select option { 4012 color: #222; 4013} 4014body section form textarea { 4015 height: 175px; 4016} 4017body section form div.form-textarea, 4018body section form div.form-location, 4019body section form div.form-checkbox { 4020 grid-column: 1 / -1; 4021} 4022body section form fieldset[name="sms"] { 4023 color: #ffffff; 4024} 4025body section form fieldset[name="sms"] label, 4026body section form fieldset[name="sms"] a { 4027 font-size: .8rem; 4028} 4029body section form .submit_container { 4030 flex-direction: row; 4031 justify-content: flex-start; 4032} 4033body section form .submit_container .submit { 4034 width: max-content; 4035} 4036body section div[data-micro-template="social_icons"] { 4037 font-size: 1.25rem; 4038} 4039body section div[data-micro-template="social_icons_container"] { 4040 display: flex; 4041 gap: 20px; 4042} 4043body section div[data-micro-template="office_hours_dynamic"] .row { 4044 display: flex; 4045 flex: 1 0 100%; 4046} 4047body section div[data-micro-template="office_hours_dynamic"] .row .day { 4048 text-align: left; 4049 flex: 1 0 40%; 4050} 4051body section div[data-micro-template="office_hours_dynamic"] .row .time { 4052 flex: 1 0 60%; 4053 text-align: right; 4054} 4055@keyframes krakenlink { 4056 from { 4057 width: 0; 4058 opacity: 0; 4059 } 4060 to { 4061 width: 100%; 4062 opacity: 1; 4063 } 4064} 4065</style><style>.section_1 { 4066 --kraken-header-height: 70px; 4067 position: fixed; 4068 top: 0; 4069 z-index: 99; 4070 background: #100f0f; 4071 box-sizing: border-box; 4072 padding: 5px 40px; 4073 height: var(--kraken-header-height); 4074} 4075@media (max-width: 550px) { 4076 .section_1 { 4077 --kraken-header-height: 50px; 4078 } 4079} 4080@media (max-width: 1280px) { 4081 .section_1 { 4082 padding: 0; 4083 } 4084} 4085.section_1 .content_container .content { 4086 height: 100%; 4087 display: flex; 4088 align-items: center; 4089 gap: 20px; 4090 font-size: 16px; 4091} 4092.section_1 .content_container .content p { 4093 margin: 0; 4094 font-size: 16px; 4095} 4096.section_1 .content_container .content .header_left { 4097 color: #ffffff; 4098 width: 100%; 4099 flex: 1; 4100} 4101.section_1 .content_container .content .header_left .single_location { 4102 display: flex; 4103 gap: 20px; 4104} 4105@media (max-width: 1080px) { 4106 .section_1 .content_container .content .header_left .single_location { 4107 justify-content: space-between; 4108 } 4109} 4110@media (max-width: 550px) { 4111 .section_1 .content_container .content .header_left .single_location { 4112 display: grid; 4113 grid-template-columns: repeat(2,1fr); 4114 font-size: 14px; 4115 } 4116} 4117@media (max-width: 550px) { 4118 .section_1 .content_container .content .header_left .single_location .tracking_number .phone_number, 4119 .section_1 .content_container .content .header_left .single_location .existing_number .phone_number { 4120 display: none; 4121 } 4122} 4123@media (max-width: 550px) { 4124 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active { 4125 display: grid; 4126 grid-template-areas: 'a c' 'b c'; 4127 gap: 0; 4128 } 4129} 4130@media (max-width: 550px) { 4131 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone { 4132 display: flex; 4133 gap: 3px; 4134 align-items: center; 4135 font-size: 14px; 4136 } 4137 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone p { 4138 font-size: 14px; 4139 } 4140 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone:first-of-type { 4141 grid-area: a; 4142 } 4143 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone:nth-of-type(2) { 4144 grid-area: b; 4145 } 4146} 4147@media (max-width: 550px) and (max-width: 400px) { 4148 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone p { 4149 font-size: 13px; 4150 } 4151} 4152@media (max-width: 400px) { 4153 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone { 4154 font-size: 13px; 4155 } 4156} 4157@media (max-width: 1080px) { 4158 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address { 4159 margin-left: auto; 4160 } 4161} 4162@media (max-width: 550px) { 4163 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address { 4164 grid-area: c; 4165 margin-left: auto; 4166 } 4167 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address > div:first-of-type { 4168 display: none; 4169 } 4170} 4171.section_1 .content_container .content .header_left a, 4172.section_1 .content_container .content .header_left a.kraken_link { 4173 color: #ffffff; 4174} 4175.section_1 .content_container .content .header_left a:hover, 4176.section_1 .content_container .content .header_left a.kraken_link:hover {
4177 color: #5997e8; 4178} 4179.section_1 .content_container .content .header_left a.kraken_link { 4180 font-size: 13px; 4181} 4182@media (max-width: 550px) { 4183 .section_1 .content_container .content .header_left a.kraken_link { 4184 font-size: 12px; 4185 } 4186} 4187@media (max-width: 400px) { 4188 .section_1 .content_container .content .header_left a.kraken_link { 4189 font-size: 11px; 4190 } 4191} 4192.section_1 .content_container .content .header_left .phone, 4193.section_1 .content_container .content .header_left .social, 4194.section_1 .content_container .content .header_left .address { 4195 align-self: center; 4196} 4197.section_1 .content_container .content .header_left .phone i, 4198.section_1 .content_container .content .header_left .phone svg, 4199.section_1 .content_container .content .header_left .social i, 4200.section_1 .content_container .content .header_left .social svg, 4201.section_1 .content_container .content .header_left .address i, 4202.section_1 .content_container .content .header_left .address svg { 4203 margin-right: 5px; 4204} 4205.section_1 .content_container .content .header_left .social { 4206 margin-left: auto; 4207} 4208@media (max-width: 1280px) { 4209 .section_1 .content_container .content .header_left .social { 4210 display: none; 4211 } 4212} 4213@media (max-width: 1080px) { 4214 .section_1 .content_container .content .header_right { 4215 display: none; 4216 } 4217} 4218</style><style>.section_1 { 4219 --kraken-header-height: 70px; 4220 position: fixed; 4221 top: 0; 4222 z-index: 99; 4223 background: #100f0f; 4224 box-sizing: border-box; 4225 padding: 5px 40px; 4226 height: var(--kraken-header-height); 4227} 4228@media (max-width: 550px) { 4229 .section_1 { 4230 --kraken-header-height: 50px; 4231 } 4232} 4233@media (max-width: 1280px) { 4234 .section_1 { 4235 padding: 0; 4236 } 4237} 4238.section_1 .content_container .content { 4239 height: 100%; 4240 display: flex; 4241 align-items: center; 4242 gap: 20px; 4243 font-size: 16px; 4244} 4245.section_1 .content_container .content p { 4246 margin: 0; 4247 font-size: 16px; 4248} 4249.section_1 .content_container .content .header_left { 4250 color: #ffffff; 4251 width: 100%; 4252 flex: 1; 4253} 4254.section_1 .content_container .content .header_left .single_location { 4255 display: flex; 4256 gap: 20px; 4257} 4258@media (max-width: 1080px) { 4259 .section_1 .content_container .content .header_left .single_location { 4260 justify-content: space-between; 4261 } 4262} 4263@media (max-width: 550px) { 4264 .section_1 .content_container .content .header_left .single_location { 4265 display: grid; 4266 grid-template-columns: repeat(2,1fr); 4267 font-size: 14px; 4268 display: flex; 4269 } 4270} 4271@media (max-width: 550px) { 4272 .section_1 .content_container .content .header_left .single_location .tracking_number .phone_number, 4273 .section_1 .content_container .content .header_left .single_location .existing_number .phone_number { 4274 display: inline; 4275 } 4276} 4277@media (max-width: 550px) { 4278 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active { 4279 display: grid; 4280 grid-template-areas: 'a c' 'b c'; 4281 gap: 0; 4282 } 4283} 4284@media (max-width: 550px) { 4285 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone { 4286 display: flex; 4287 gap: 3px; 4288 align-items: center; 4289 font-size: 14px; 4290 } 4291 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone p { 4292 font-size: 14px; 4293 } 4294 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone:first-of-type { 4295 grid-area: a; 4296 } 4297 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone:nth-of-type(2) { 4298 grid-area: b; 4299 } 4300} 4301@media (max-width: 550px) and (max-width: 400px) { 4302 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone p { 4303 font-size: 13px; 4304 } 4305} 4306@media (max-width: 400px) { 4307 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .phone { 4308 font-size: 13px; 4309 } 4310} 4311@media (max-width: 1080px) { 4312 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address { 4313 margin-left: auto; 4314 } 4315} 4316@media (max-width: 550px) { 4317 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address { 4318 grid-area: c; 4319 margin-left: auto; 4320 } 4321 .section_1 .content_container .content .header_left div[data-micro-template="dropdown_locations_container"] div[data-micro-template="dropdown_location"].active .address > div:first-of-type { 4322 display: none; 4323 } 4324} 4325.section_1 .content_container .content .header_left a, 4326.section_1 .content_container .content .header_left a.kraken_link { 4327 color: #ffffff; 4328} 4329.section_1 .content_container .content .header_left a:hover, 4330.section_1 .content_container .content .header_left a.kraken_link:hover {
4331 color: #5997e8; 4332} 4333.section_1 .content_container .content .header_left a.kraken_link { 4334 font-size: 13px; 4335} 4336@media (max-width: 550px) { 4337 .section_1 .content_container .content .header_left a.kraken_link { 4338 font-size: 12px; 4339 } 4340} 4341@media (max-width: 400px) { 4342 .section_1 .content_container .content .header_left a.kraken_link { 4343 font-size: 11px; 4344 } 4345} 4346.section_1 .content_container .content .header_left .phone, 4347.section_1 .content_container .content .header_left .social, 4348.section_1 .content_container .content .header_left .address { 4349 align-self: center; 4350} 4351.section_1 .content_container .content .header_left .phone i, 4352.section_1 .content_container .content .header_left .phone svg, 4353.section_1 .content_container .content .header_left .social i, 4354.section_1 .content_container .content .header_left .social svg, 4355.section_1 .content_container .content .header_left .address i, 4356.section_1 .content_container .content .header_left .address svg { 4357 margin-right: 5px; 4358} 4359@media (max-width: 810px) { 4360 .section_1 .content_container .content .header_left .address .address_text { 4361 display: none; 4362 } 4363} 4364.section_1 .content_container .content .header_left .social { 4365 margin-left: auto; 4366} 4367@media (max-width: 1280px) { 4368 .section_1 .content_container .content .header_left .social { 4369 display: none; 4370 } 4371} 4372@media (max-width: 1080px) { 4373 .section_1 .content_container .content .header_right { 4374 display: none; 4375 } 4376} 4377</style> 4378<section class="section_1" data-module="kraken_header" data-html="/custom/modules/kraken_header/module.html" data-json="/custom/modules/kraken_header/module.json" data-page="appointment" data-full-path="/appointment/"> 4379 <div class="content_container"> 4380 <div class="content"> 4381 <div class="header_left"> 4382 4383 <div class="single_location"> 4384 <div class="phone"><div data-micro-template="phone_dynamic_icon"> 4385 4386 <div class="tracking_number"><a href="tel:+19192216014" aria-label="New Patients: (919) 221-6014" class="tel_19192216014" data-click-call="0"><i class="fas fa-phone-alt"></i><span class="phone_label">New Patients<span class="semicolon">:</span></span> <span class="phone_number">(919) 221-6014</span></a></div> 4387 <div class="existing_number"><a href="tel:+19198762087" aria-label="Existing Patients: (919) 876-2087" class="tel_19198762087" data-click-call="0"><i class="fas fa-phone-alt"></i><span class="phone_label">Existing Patients<span class="semicolon">:</span></span> <span class="phone_number">(919) 876-2087</span></a></div> 4388 4389 4390</div></div> 4391 <div class="address"><a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="5621 Departure Dr, Suite 109, Raleigh, NC 27616" rel="noopener" target="_blank"><span><i class="fas fa-map-marker-alt"></i></span><span class="address_text">5621 Departure Dr, Suite 109, Raleigh, NC 27616</span></a></div> 4392 <div class="social"><div data-micro-template="social_icons_container"> 4393 <div data-micro-template="social_icons"> 4394 <a href="https://www.facebook.com/people/The-Office-of-Dr-Aaron-Tropmann-Dr-Gary-Oyster/61583686322230/" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 4395</div><div data-micro-template="social_icons"> 4396 <a href="https://www.instagram.com/aarontropmannddspa" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-instagram"></i></a> 4397</div><div data-micro-template="social_icons"> 4398 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 4399</div><div data-micro-template="social_icons"> 4400 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 4401</div> 4402</div></div> 4403 </div> 4404 </div> 4405<div class="header_right"> 4406 <div data-micro-template="buttons_container"> 4407 <div data-micro-template="buttons"> 4408 <a class="button kraken_button" href="/appointment/" role="button" aria-label="Request Appointment"><span>Request Appointment</span></a> 4409</div> 4410</div> 4411</div> 4412 </div> 4413 </div> 4414</section>
4414<script> 4415 javascript.prototype[get_id()] = function() { 4416 $(document).scroll(function() { 4417 var position = $(document).scrollTop(); 4418 4419 if (position > 100) { 4420 if (!$('.section_1').hasClass('not_top')) { 4421 $('.section_1').addClass('not_top'); 4422 } 4423 } 4424 else { 4425 if ($('.section_1').hasClass('not_top')) { 4426 $('.section_1').removeClass('not_top'); 4427 } 4428 } 4429 }); 4430 } 4431</script>
4431<style>.section_2 { 4432 --group-menu-height: 500px; 4433 --group-menu-width: 1600px; 4434 --header-height: 70px; 4435 --mobile-menu-width: 450px; 4436 --nav-height: 90px; 4437 --mobile-menu-top-spacing: 10px; 4438 --mobile-menu-top-min-height: 75px; 4439 --ul-min-width: 300px; 4440 --logo-width: auto; 4441 background: #ffffff; 4442 position: fixed; 4443 left: 0; 4444 top: var(--header-height); 4445 z-index: 500; 4446 transition: background 0.3s ease; 4447 overflow: visible; 4448} 4449@media (max-width: 1280px) { 4450 .section_2 { 4451 --header-height: 70px; 4452 display: flex; 4453 } 4454} 4455@media (max-width: 1366px) { 4456 .section_2 { 4457 --group-menu-height: 500px; 4458 --group-menu-width: 1600px; 4459 } 4460} 4461@media (max-width: 810px) { 4462 .section_2 { 4463 --nav-height: 70px; 4464 } 4465} 4466@media (max-width: 550px) { 4467 .section_2 { 4468 --header-height: 50px; 4469 --mobile-menu-width: 100%; 4470 } 4471} 4472.section_2 .content_container { 4473 display: flex; 4474 justify-content: space-between; 4475 gap: 20px; 4476} 4477.section_2:hover { 4478 background: #ffffff; 4479} 4480.section_2.active:hover { 4481 background: none; 4482} 4483.section_2.active .logo { 4484 opacity: 0; 4485} 4486.section_2.transparent_menu { 4487 background: none; 4488} 4489.section_2.transparent_menu .logo { 4490 filter: brightness(0) invert(1); 4491 transition: filter 0.3s ease; 4492} 4493.section_2.transparent_menu.not_top nav { 4494 color: #817979; 4495} 4496.section_2.transparent_menu.not_top .logo { 4497 filter: none; 4498} 4499.section_2.transparent_menu.not_top .menu_wrapper > ul > li a { 4500 color: #817979; 4501 transition: all 0.3s ease; 4502} 4503.section_2.transparent_menu.not_top .menu_wrapper > ul > li i, 4504.section_2.transparent_menu.not_top .menu_wrapper > ul > li svg { 4505 color: #817979; 4506 transition: all 0.3s ease; 4507} 4508.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover a { 4509 color: #5997e8; 4510} 4511.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover i, 4512.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover svg { 4513 color: #5997e8; 4514} 4515.section_2.transparent_menu nav { 4516 color: #ffffff; 4517} 4518.section_2.transparent_menu nav .menu_wrapper > ul > li a { 4519 color: #ffffff; 4520 transition: all 0.3s ease; 4521} 4522.section_2.transparent_menu nav .menu_wrapper > ul > li i, 4523.section_2.transparent_menu nav .menu_wrapper > ul > li svg { 4524 color: #ffffff; 4525 transition: all 0.3s ease; 4526} 4527.section_2.not_top { 4528 background: #ffffff; 4529 border-bottom: 1px solid rgba(34,34,34,0.2); 4530} 4531.section_2.not_top.active { 4532 background: none; 4533 border-bottom: none; 4534} 4535.section_2.not_top nav:after { 4536 content: ''; 4537 position: absolute; 4538 top: 0; 4539 left: 0; 4540 width: 100%; 4541 height: 100%; 4542 transition: all 0s; 4543} 4544.section_2.not_top nav.active:after { 4545 background: none; 4546} 4547.section_2.not_top.background_toggle .logo { 4548 filter: none; 4549} 4550.section_2.not_top.background_toggle nav { 4551 color: #817979; 4552} 4553.section_2.not_top.background_toggle nav .menu_wrapper > ul > li a { 4554 color: #817979; 4555} 4556.section_2.not_top.background_toggle nav .menu_wrapper > ul > li i, 4557.section_2.not_top.background_toggle nav .menu_wrapper > ul > li svg { 4558 color: #817979; 4559} 4560.section_2 .mobile_logo { 4561 display: none; 4562} 4563.section_2 .logo { 4564 position: relative; 4565 width: min(100%,var(--logo-width)); 4566 height: var(--nav-height); 4567 box-sizing: border-box; 4568 padding: 5px 0; 4569 z-index: 150; 4570 transition: all 0.3s; 4571 opacity: 1; 4572} 4573@media (max-width: 1280px) { 4574 .section_2 .logo { 4575 position: relative; 4576 top: initial; 4577 left: initial; 4578 transform: none; 4579 display: flex; 4580 align-items: center; 4581 margin-right: 0; 4582 z-index: 9; 4583 } 4584} 4585@media (max-width: 1280px) { 4586 .section_2 .logo a { 4587 width: initial; 4588 height: 100%; 4589 display: initial; 4590 } 4591} 4592.section_2 .logo img, 4593.section_2 .logo picture { 4594 height: 100%; 4595 object-fit: contain; 4596} 4597.section_2 .menu_buttons { 4598 position: relative; 4599 right: initial; 4600 top: initial; 4601 transform: none; 4602 z-index: 999; 4603 flex: 0 1 auto; 4604 display: block; 4605} 4606@media (max-width: 1280px) { 4607 .section_2 .menu_buttons { 4608 z-index: 9; 4609 } 4610} 4611.section_2 .menu_buttons div[data-micro-template="buttons_container"] { 4612 display: flex; 4613 gap: 0 10px; 4614} 4615.section_2 .menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button { 4616 padding: 15px 45px; 4617 border-radius: 30px; 4618} 4619.section_2 nav { 4620 display: flex; 4621 margin: 0px auto; 4622 z-index: 100; 4623 width: 100%; 4624 text-align: right; 4625 color: #817979; 4626 align-items: center; 4627 justify-content: space-between; 4628 height: var(--nav-height); 4629 box-sizing: border-box; 4630 font-size: 17px; 4631 font-family: "Prompt"; 4632 flex: 1; 4633} 4634.section_2 nav a:hover {
4635 color: #5997e8; 4636} 4637.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper { 4638 flex-wrap: wrap; 4639 overflow-y: auto; 4640} 4641.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description { 4642 flex-basis: 100%; 4643 text-align: center; 4644 line-height: 0; 4645 border-right: 0; 4646 display: none; 4647} 4648.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description h3 { 4649 display: inline-block; 4650 border-bottom: 1px solid rgba(34,34,34,0.5); 4651 margin-bottom: 20px; 4652 padding-bottom: 1rem; 4653} 4654.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description p { 4655 display: none; 4656} 4657.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul { 4658 margin: 0 auto; 4659 flex-basis: min(100%,1000px); 4660 display: flex; 4661 gap: 20px 10px; 4662 justify-content: center; 4663 align-items: center; 4664 flex-wrap: wrap; 4665 flex-direction: row; 4666 padding: 0; 4667} 4668@media (max-width: 1280px) { 4669 .section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul { 4670 padding-bottom: 20px; 4671 display: grid; 4672 grid-template-columns: repeat(1,1fr); 4673 gap: 5px 0; 4674 } 4675} 4676.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul.group_container { 4677 display: flex; 4678 flex-flow: column wrap; 4679 flex-basis: min(100%,var(--group-menu-width)); 4680 height: var(--group-menu-height); 4681 justify-content: flex-start; 4682 align-items: flex-start; 4683} 4684@media (max-width: 1280px) { 4685 .section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul.group_container { 4686 align-items: flex-start; 4687 } 4688} 4689.section_2 nav .mobile_menu { 4690 position: absolute; 4691 display: none; 4692 right: 0px; 4693 padding-right: inherit; 4694 font-size: 2rem; 4695 cursor: pointer; 4696} 4697.section_2 nav .menu_wrapper { 4698 display: flex; 4699 margin: 0px auto; 4700 z-index: 100; 4701 width: 100%; 4702 text-align: right; 4703 color: #817979; 4704 align-items: center; 4705 justify-content: space-between; 4706 height: var(--nav-height); 4707 box-sizing: border-box; 4708 font-size: 17px; 4709 font-family: "Prompt"; 4710} 4711.section_2 nav .menu_wrapper .mobile_menu_top { 4712 display: none; 4713} 4714.section_2 nav .menu_wrapper .mobile_menu_buttons { 4715 display: none; 4716} 4717.section_2 nav .menu_wrapper .close_icon { 4718 display: none; 4719} 4720.section_2 nav .menu_wrapper .mobile_information { 4721 display: none; 4722 box-sizing: border-box; 4723 padding: 0 25px; 4724 color: #ffffff; 4725 text-align: left; 4726 margin-top: 20px; 4727} 4728.section_2 nav .menu_wrapper .mobile_information .mobile_address, 4729.section_2 nav .menu_wrapper .mobile_information .mobile_phone, 4730.section_2 nav .menu_wrapper .mobile_information .mobile_social { 4731 margin-bottom: 20px; 4732} 4733.section_2 nav .menu_wrapper .mobile_information .mobile_address a, 4734.section_2 nav .menu_wrapper .mobile_information .mobile_phone a, 4735.section_2 nav .menu_wrapper .mobile_information .mobile_social a { 4736 color: #ffffff; 4737} 4738.section_2 nav .menu_wrapper ul { 4739 padding: 0px; 4740 margin: 0px; 4741} 4742.section_2 nav .menu_wrapper ul .submenu_wrapper { 4743 position: absolute; 4744 min-width: var(--ul-min-width); 4745 left: 0; 4746 width: 100%; 4747 background: #ffffff; 4748 transform: none; 4749 flex-direction: row; 4750 justify-content: center; 4751 padding: 30px; 4752 display: flex; 4753 box-sizing: border-box; 4754 left: 50%; 4755 transform: translateX(-50%); 4756} 4757.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description { 4758 text-align: left; 4759 border-right: 1px solid rgba(34,34,34,0.5); 4760 flex: 0 1 400px; 4761 padding-right: 20px; 4762 opacity: 0; 4763 transition: opacity 1s; 4764} 4765.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description.active { 4766 opacity: 1; 4767} 4768.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description h3 { 4769 margin: 0; 4770 color: #ffffff; 4771 line-height: initial; 4772} 4773.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description h3 p { 4774 font-size: 1.1rem; 4775 font-weight: 400; 4776} 4777.section_2 nav .menu_wrapper ul .submenu_wrapper > ul { 4778 flex: 0 1 200px; 4779 text-align: left; 4780 padding-left: 20px; 4781 display: block; 4782 opacity: 1; 4783 transition: opacity 0.5s ease-in, bottom 0.5s ease; 4784} 4785.section_2 nav .menu_wrapper ul .submenu_wrapper > ul.active { 4786 opacity: 1; 4787} 4788.section_2 nav .menu_wrapper ul .submenu_wrapper > ul.active > li > a:hover {
4789 color: #5997e8; 4790} 4791.section_2 nav .menu_wrapper ul .submenu_wrapper > ul li a { 4792 color: #817979; 4793} 4794.section_2 nav .menu_wrapper ul .submenu_wrapper > ul li:hover a { 4795 color: inherit; 4796} 4797.section_2 nav .menu_wrapper ul li { 4798 list-style-type: none; 4799} 4800.section_2 nav .menu_wrapper ul li:hover a, 4801.section_2 nav .menu_wrapper ul li:hover svg { 4802 color: #5997e8; 4803} 4804.section_2 nav .menu_wrapper ul a { 4805 display: inline-block; 4806 width: 100%; 4807 height: 100%; 4808 color: #817979; 4809} 4810.section_2 nav .menu_wrapper ul ul { 4811 display: none; 4812 padding: 0px; 4813 flex-direction: column; 4814 position: relative; 4815 background: none; 4816} 4817.section_2 nav .menu_wrapper ul > li { 4818 padding: 0px 20px; 4819} 4820.section_2 nav .menu_wrapper ul > li > ul > ul.group_container { 4821 display: flex; 4822 flex-flow: column wrap; 4823} 4824.section_2 nav .menu_wrapper ul > li > ul > ul.group_container h3 { 4825 color: #817979; 4826 font-size: 1.5rem; 4827 margin-bottom: 10px; 4828 font-family: "Playfair Display"; 4829 font-weight: 700; 4830} 4831.section_2 nav .menu_wrapper ul > li > ul > ul.group_container > li > ul { 4832 display: flex; 4833} 4834.section_2 nav .menu_wrapper ul > li > ul > ul.group_container > li > ul > li a:hover { 4835 color: #5997e8; 4836} 4837.section_2 nav .menu_wrapper ul > li > ul.group_container { 4838 width: 100%; 4839 box-sizing: border-box; 4840 max-width: 1000px; 4841 flex-direction: column; 4842 flex-wrap: wrap; 4843 left: 50%; 4844 transform: translate(-50%); 4845 max-height: 480px; 4846} 4847.section_2 nav .menu_wrapper ul > li > ul.group_container h3 { 4848 font-size: 1.25rem; 4849 font-weight: bold; 4850 margin: 0px 0px 0.5rem; 4851} 4852.section_2 nav .menu_wrapper ul > li > ul.group_container > li > ul { 4853 position: relative; 4854 display: block; 4855 background: none; 4856 margin-bottom: 0.5rem; 4857} 4858.section_2 nav .menu_wrapper ul > li > ul.group_container > li > ul > li { 4859 line-height: 40px; 4860 text-align: left; 4861} 4862.section_2 nav .menu_wrapper > ul { 4863 margin-left: auto; 4864 margin-right: 0; 4865} 4866.section_2 nav .menu_wrapper > ul > li { 4867 position: relative; 4868 transform: all 0.3s; 4869 display: inline-block; 4870 line-height: var(--nav-height); 4871 padding: 0px 20px; 4872} 4873.section_2 nav .menu_wrapper > ul > li.active a { 4874 color: #5997e8; 4875} 4876@media (max-width: 1280px) { 4877 .section_2 nav .menu_wrapper > ul > li.active a { 4878 color: #ffffff; 4879 } 4880} 4881.section_2 nav .menu_wrapper > ul > li.active i, 4882.section_2 nav .menu_wrapper > ul > li.active svg { 4883 color: #5997e8; 4884} 4885@media (max-width: 1280px) { 4886 .section_2 nav .menu_wrapper > ul > li.active i, 4887 .section_2 nav .menu_wrapper > ul > li.active svg { 4888 color: #ffffff; 4889 } 4890} 4891.section_2 nav .menu_wrapper > ul > li > a { 4892 color: #817979; 4893} 4894.section_2 nav .menu_wrapper > ul > li i, 4895.section_2 nav .menu_wrapper > ul > li svg { 4896 position: absolute; 4897 right: 0; 4898 top: 50%; 4899 transform: translate(0,-50%); 4900 color: #817979; 4901 transition: all 0.3s; 4902} 4903.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper { 4904 flex-wrap: wrap; 4905 overflow-y: auto; 4906 position: fixed; 4907} 4908.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper .submenu_description { 4909 flex-basis: 100%; 4910 text-align: center; 4911 line-height: 0; 4912 border-right: 0; 4913} 4914.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper .submenu_description h3 { 4915 display: inline-block; 4916 border-bottom: 1px solid rgba(34,34,34,0.5); 4917 margin-bottom: 20px; 4918} 4919.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul { 4920 margin: 0 auto; 4921 flex-basis: min(100%,var(--group-menu-width)); 4922 display: grid; 4923 grid-template-columns: repeat(4,1fr); 4924 gap: 10px; 4925} 4926.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul.group_container { 4927 display: flex; 4928 flex-flow: column wrap; 4929 flex-basis: min(100%,var(--group-menu-width)); 4930 height: var(--group-menu-height); 4931} 4932.section_2 nav .menu_wrapper > ul > li > ul { 4933 padding-top: 20px; 4934 padding-bottom: 20px; 4935 left: 50%; 4936 transform: translate(-50%); 4937} 4938.section_2 nav .menu_wrapper > ul > li > ul > li { 4939 line-height: 40px; 4940 width: 140px; 4941 text-align: left; 4942 text-align: center; 4943} 4944.section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) { 4945 position: absolute; 4946 left: 100%; 4947 padding-top: 20px; 4948 padding-bottom: 20px; 4949 transform: translate(0px,-60px); 4950} 4951.section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) > li { 4952 line-height: 40px; 4953 width: 140px; 4954} 4955@media (max-width: 1280px) { 4956 .section_2 .menu_buttons { 4957 right: 70px; 4958 } 4959 .section_2 .menu_buttons div[data-micro-template="buttons_container"] { 4960 display: flex; 4961 gap: 0 10px; 4962 } 4963 .section_2 nav { 4964 max-width: 100%; 4965 padding: 0px 20px; 4966 box-sizing: border-box; 4967 } 4968 .section_2 nav .mobile_menu { 4969 display: inline-block; 4970 top: 50%; 4971 transform: translate(0px,-50%); 4972 z-index: 4; 4973 } 4974 .section_2 nav ul { 4975 background: none; 4976 } 4977 .section_2 nav ul > li { 4978 box-sizing: border-box; 4979 } 4980 .section_2 nav ul ul { 4981 position: relative; 4982 transform: initial; 4983 } 4984 .section_2 nav .menu_wrapper { 4985 z-index: initial; 4986 position: fixed; 4987 height: 100%; 4988 width: var(--mobile-menu-width); 4989 top: 0; 4990 left: initial; 4991 transform: translateX(0); 4992 right: calc(var(--mobile-menu-width) * -1); 4993 text-align: center; 4994 display: flex; 4995 flex-direction: column; 4996 justify-content: flex-start;
4997 align-items: flex-end; 4998 opacity: 1; 4999 transition: transform 0.3s; 5000 box-sizing: border-box; 5001 padding: 0; 5002 overflow-y: auto; 5003 background: #100f0f; 5004 padding-bottom: 60px; 5005 } 5006 .section_2 nav .menu_wrapper.active { 5007 z-index: 1000; 5008 transform: translateX(calc(var(--mobile-menu-width) * -1)); 5009 } 5010 .section_2 nav .menu_wrapper .mobile_logo { 5011 position: absolute; 5012 top: 50%; 5013 left: 50%; 5014 transform: translate(-50%,-50%); 5015 width: 100%; 5016 opacity: 0.15; 5017 display: block; 5018 } 5019 .section_2 nav .menu_wrapper .mobile_logo img, 5020 .section_2 nav .menu_wrapper .mobile_logo picture { 5021 width: 100%; 5022 height: 100%; 5023 object-fit: cover; 5024 } 5025 .section_2 nav .menu_wrapper .mobile_menu_top { 5026 position: sticky; 5027 background: #100f0f; 5028 width: 100%; 5029 top: 0; 5030 z-index: 99; 5031 border-bottom: none; 5032 display: block; 5033 box-sizing: border-box; 5034 padding: 10px 0 0 0; 5035 min-height: var(--mobile-menu-top-min-height); 5036 } 5037 .section_2 nav .menu_wrapper .mobile_menu_buttons { 5038 display: block; 5039 width: 100%; 5040 } 5041 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] { 5042 display: flex; 5043 justify-content: flex-start; 5044 gap: 0 10px; 5045 padding: 0 25px; 5046 box-sizing: border-box; 5047 opacity: 0; 5048 transform: translateY(40px); 5049 transition: transform 0.5s ease, opacity 0.5s ease; 5050 position: relative; 5051 } 5052 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"].active { 5053 opacity: 1; 5054 transform: translateY(0); 5055 } 5056 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button { 5057 padding: 10px 15px; 5058 font-size: 1rem; 5059 border-radius: 0; 5060 } 5061 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button:hover { 5062 color: #222; 5063 } 5064 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button:hover:before { 5065 width: calc(100% - 30px); 5066 } 5067 .section_2 nav .menu_wrapper .mobile_information { 5068 display: block; 5069 margin-top: 20px; 5070 width: 100%; 5071 } 5072 .section_2 nav .menu_wrapper .mobile_information .mobile_address { 5073 opacity: 0; 5074 transform: translateY(40px); 5075 position: relative; 5076 transition: transform 0.5s, opacity 0.5s; 5077 font-weight: 300; 5078 } 5079 .section_2 nav .menu_wrapper .mobile_information .mobile_address .label { 5080 font-weight: 500; 5081 } 5082 .section_2 nav .menu_wrapper .mobile_information .mobile_address.active { 5083 opacity: 1; 5084 transform: translateY(0); 5085 } 5086 .section_2 nav .menu_wrapper .mobile_information .mobile_address svg, 5087 .section_2 nav .menu_wrapper .mobile_information .mobile_address i { 5088 margin-right: 5px; 5089 } 5090 .section_2 nav .menu_wrapper .mobile_information .mobile_address div[data-micro-template="social_icons_container"] { 5091 margin: 5px 0; 5092 } 5093 .section_2 nav .menu_wrapper .mobile_information .mobile_address .location_hours { 5094 margin-bottom: 5px; 5095 } 5096 .section_2 nav .menu_wrapper .close_icon { 5097 border: none; 5098 text-align: right; 5099 line-height: initial; 5100 padding: 10px 10px 10px 20px; 5101 display: block; 5102 cursor: pointer; 5103 box-sizing: border-box; 5104 opacity: 1; 5105 position: absolute; 5106 top: 50%; 5107 right: 0; 5108 transform: translate(0,-50%); 5109 } 5110 .section_2 nav .menu_wrapper .close_icon i, 5111 .section_2 nav .menu_wrapper .close_icon svg { 5112 font-size: 2.25rem; 5113 position: relative; 5114 color: #ffffff; 5115 transform: none; 5116 top: initial; 5117 right: initial; 5118 } 5119 .section_2 nav .menu_wrapper > ul { 5120 width: 100%; 5121 height: auto; 5122 padding: 0 25px; 5123 box-sizing: border-box; 5124 margin-top: var(--mobile-menu-top-spacing); 5125 } 5126 .section_2 nav .menu_wrapper > ul > li:not(:last-of-type) { 5127 margin: 0px; 5128 } 5129 .section_2 nav .menu_wrapper > ul > li:last-of-type { 5130 border-bottom: none; 5131 } 5132 .section_2 nav .menu_wrapper > ul > li:first-of-type { 5133 border-top: none; 5134 } 5135 .section_2 nav .menu_wrapper > ul > li { 5136 width: 100%; 5137 margin: 0px; 5138 border-top: none; 5139 line-height: 60px; 5140 padding: 0px; 5141 display: block; 5142 justify-content: space-between; 5143 align-items: center; 5144 opacity: 0; 5145 transition: transform 0.5s, opacity 0.5s; 5146 transform: translateY(40px); 5147 text-align: left; 5148 } 5149 .section_2 nav .menu_wrapper > ul > li svg, 5150 .section_2 nav .menu_wrapper > ul > li i { 5151 color: #ffffff; 5152 position: absolute; 5153 right: 0; 5154 top: 30px; 5155 transform: translate(0,-50%); 5156 transition: transform 0.3s; 5157 } 5158 .section_2 nav .menu_wrapper > ul > li.active { 5159 opacity: 1; 5160 transform: translateY(0); 5161 } 5162 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper { 5163 position: relative; 5164 padding: 0; 5165 justify-content: flex-start; 5166 background: none; 5167 } 5168 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper .submenu_description { 5169 display: none; 5170 } 5171 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul { 5172 transition: opacity 0.5s ease-in, bottom 0.5s ease; 5173 display: block; 5174 opacity: 0; 5175 padding: 0 0 20px 0; 5176 flex: 100%; 5177 } 5178 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul li:hover a { 5179 color: #ffffff; 5180 } 5181 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul li a { 5182 color: #ffffff; 5183 } 5184 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper.active > ul { 5185 opacity: 1; 5186 display: grid; 5187 grid-template-columns: repeat(1,1fr); 5188 gap: 5px 0; 5189 } 5190 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper { 5191 position: relative; 5192 } 5193 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul.group_container { 5194 height: auto; 5195 } 5196 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul { 5197 grid-template-columns: repeat(1,1fr); 5198 gap: 5px 0; 5199 } 5200 .section_2 nav .menu_wrapper > ul > li a { 5201 display: inline-block; 5202 width: 100%; 5203 height: 100%; 5204 color: #ffffff; 5205 } 5206 .section_2 nav .menu_wrapper > ul > li > ul { 5207 padding-top: 0px; 5208 } 5209 .section_2 nav .menu_wrapper > ul > li > ul > li { 5210 width: 100%; 5211 text-align: center; 5212 } 5213 .section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) { 5214 position: initial; 5215 left: initial; 5216 padding-top: 20px; 5217 padding-bottom: 20px; 5218 transform: initial; 5219 text-align: center; 5220 } 5221 .section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) > li { 5222 line-height: 40px; 5223 width: 100%; 5224 } 5225 .section_2 nav .menu_wrapper > ul > li ul.group_container { 5226 max-width: 100%; 5227 max-height: initial; 5228 } 5229 .section_2 nav .menu_wrapper > ul > li ul.group_container > li { 5230 padding: 0; 5231 } 5232 .section_2 nav .menu_wrapper > ul > li ul.group_container > li > ul > li { 5233 text-align: left; 5234 font-size: 16px; 5235 } 5236 .section_2 nav .menu_wrapper > ul > li ul.group_container > li > ul > li h3 { 5237 font-size: 18px; 5238 margin: 0; 5239 border-bottom: none; 5240 margin-bottom: 5px; 5241 padding-bottom: 5px; 5242 color: #ffffff; 5243 } 5244} 5245@media (max-width: 1280px) and (max-width: 810px) { 5246 .section_2 .menu_buttons { 5247 display: none; 5248 } 5249} 5250@media (max-width: 1280px) and (max-width: 550px) { 5251 .section_2 nav .menu_wrapper { 5252 top: -100vh; 5253 right: 0; 5254 } 5255 .section_2 nav .menu_wrapper.active { 5256 transform: translateY(100vh); 5257 } 5258} 5259section[data-type="system-lightbox-container"] { 5260 transition: all 0s !important; 5261} 5262section[data-type="system-lightbox-container"].active { 5263 opacity: 1; 5264 background: rgba(0,0,0,0.6); 5265 z-index: 99; 5266} 5267</style><style>.section_2 { 5268 --group-menu-height: 500px; 5269 --group-menu-width: 1600px; 5270 --header-height: 70px; 5271 --mobile-menu-width: 450px; 5272 --nav-height: 140px; 5273 --mobile-menu-top-spacing: 10px; 5274 --mobile-menu-top-min-height: 75px; 5275 --ul-min-width: 300px; 5276 --logo-width: auto; 5277 background: #ffffff; 5278 position: fixed; 5279 left: 0; 5280 top: var(--header-height); 5281 z-index: 500; 5282 transition: background 0.3s ease; 5283 overflow: visible; 5284} 5285@media (max-width: 1280px) { 5286 .section_2 { 5287 --header-height: 70px; 5288 display: flex; 5289 } 5290} 5291@media (max-width: 1366px) { 5292 .section_2 { 5293 --group-menu-height: 500px; 5294 --group-menu-width: 1600px; 5295 } 5296} 5297@media (max-width: 810px) { 5298 .section_2 { 5299 --nav-height: 120px; 5300 } 5301} 5302@media (max-width: 550px) { 5303 .section_2 { 5304 --header-height: 50px; 5305 --mobile-menu-width: 100%; 5306 } 5307} 5308.section_2 .content_container { 5309 display: flex; 5310 justify-content: space-between; 5311 gap: 20px; 5312} 5313.section_2:hover { 5314 background: #ffffff; 5315} 5316.section_2.active:hover { 5317 background: none; 5318} 5319.section_2.active .logo { 5320 opacity: 0; 5321} 5322.section_2.transparent_menu { 5323 background: none; 5324} 5325.section_2.transparent_menu .logo { 5326 filter: brightness(0) invert(1); 5327 transition: filter 0.3s ease; 5328} 5329.section_2.transparent_menu.not_top nav { 5330 color: #817979; 5331} 5332.section_2.transparent_menu.not_top .logo { 5333 filter: none; 5334} 5335.section_2.transparent_menu.not_top .menu_wrapper > ul > li a { 5336 color: #817979; 5337 transition: all 0.3s ease; 5338} 5339.section_2.transparent_menu.not_top .menu_wrapper > ul > li i, 5340.section_2.transparent_menu.not_top .menu_wrapper > ul > li svg {
5341 color: #817979; 5342 transition: all 0.3s ease; 5343} 5344.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover a { 5345 color: #5997e8; 5346} 5347.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover i, 5348.section_2.transparent_menu.not_top .menu_wrapper > ul > li:hover svg { 5349 color: #5997e8; 5350} 5351.section_2.transparent_menu nav { 5352 color: #ffffff; 5353} 5354.section_2.transparent_menu nav .menu_wrapper > ul > li a { 5355 color: #ffffff; 5356 transition: all 0.3s ease; 5357} 5358.section_2.transparent_menu nav .menu_wrapper > ul > li i, 5359.section_2.transparent_menu nav .menu_wrapper > ul > li svg { 5360 color: #ffffff; 5361 transition: all 0.3s ease; 5362} 5363.section_2.not_top { 5364 background: #ffffff; 5365 border-bottom: 1px solid rgba(34,34,34,0.2); 5366 height: 120px; 5367 --nav-height: 120px; 5368} 5369@media (max-width: 480px) { 5370 .section_2.not_top { 5371 height: 100px; 5372 } 5373} 5374.section_2.not_top .logo { 5375 height: 120px; 5376} 5377@media (max-width: 480px) { 5378 .section_2.not_top .logo { 5379 height: 100px; 5380 } 5381} 5382.section_2.not_top.active { 5383 background: none; 5384 border-bottom: none; 5385} 5386.section_2.not_top nav:after { 5387 content: ''; 5388 position: absolute; 5389 top: 0; 5390 left: 0; 5391 width: 100%; 5392 height: 100%; 5393 transition: all 0s; 5394} 5395.section_2.not_top nav.active:after { 5396 background: none; 5397} 5398.section_2.not_top.background_toggle .logo { 5399 filter: none; 5400} 5401.section_2.not_top.background_toggle nav { 5402 color: #817979; 5403} 5404.section_2.not_top.background_toggle nav .menu_wrapper > ul > li a { 5405 color: #817979; 5406} 5407.section_2.not_top.background_toggle nav .menu_wrapper > ul > li i, 5408.section_2.not_top.background_toggle nav .menu_wrapper > ul > li svg { 5409 color: #817979; 5410} 5411.section_2 .mobile_logo { 5412 display: none; 5413} 5414.section_2 .logo { 5415 position: relative; 5416 width: min(100%,var(--logo-width)); 5417 height: var(--nav-height); 5418 box-sizing: border-box; 5419 padding: 5px 0; 5420 z-index: 150; 5421 transition: all 0.3s; 5422 opacity: 1; 5423} 5424@media (max-width: 1280px) { 5425 .section_2 .logo { 5426 position: relative; 5427 top: initial; 5428 left: initial; 5429 transform: none; 5430 display: flex; 5431 align-items: center; 5432 margin-right: 0; 5433 z-index: 9; 5434 } 5435} 5436@media (max-width: 1280px) { 5437 .section_2 .logo a { 5438 width: initial; 5439 height: 100%; 5440 display: initial; 5441 } 5442} 5443.section_2 .logo img, 5444.section_2 .logo picture { 5445 height: 100%; 5446 object-fit: contain; 5447} 5448.section_2 .menu_buttons { 5449 position: relative; 5450 right: initial; 5451 top: initial; 5452 transform: none; 5453 z-index: 999; 5454 flex: 0 1 auto; 5455 display: block; 5456} 5457@media (max-width: 1280px) { 5458 .section_2 .menu_buttons { 5459 z-index: 9; 5460 } 5461} 5462.section_2 .menu_buttons div[data-micro-template="buttons_container"] { 5463 display: flex; 5464 gap: 0 10px; 5465} 5466.section_2 .menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button { 5467 padding: 15px 45px; 5468 border-radius: 30px; 5469} 5470.section_2 nav { 5471 display: flex; 5472 margin: 0px auto; 5473 z-index: 100; 5474 width: 100%; 5475 text-align: right; 5476 color: #817979; 5477 align-items: center; 5478 justify-content: space-between; 5479 height: var(--nav-height); 5480 box-sizing: border-box; 5481 font-size: 17px; 5482 font-family: "Prompt"; 5483 flex: 1; 5484} 5485.section_2 nav a:hover { 5486 color: #5997e8; 5487} 5488.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper { 5489 flex-wrap: wrap; 5490 overflow-y: auto; 5491} 5492.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description { 5493 flex-basis: 100%; 5494 text-align: center; 5495 line-height: 0; 5496 border-right: 0; 5497 display: none; 5498} 5499.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description h3 { 5500 display: inline-block; 5501 border-bottom: 1px solid rgba(34,34,34,0.5); 5502 margin-bottom: 20px; 5503 padding-bottom: 1rem; 5504} 5505.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper .submenu_description p { 5506 display: none; 5507} 5508.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul { 5509 margin: 0 auto; 5510 flex-basis: min(100%,1000px); 5511 display: flex; 5512 gap: 20px 10px; 5513 justify-content: center; 5514 align-items: center; 5515 flex-wrap: wrap; 5516 flex-direction: row; 5517 padding: 0; 5518} 5519@media (max-width: 1280px) { 5520 .section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul { 5521 padding-bottom: 20px; 5522 display: grid; 5523 grid-template-columns: repeat(1,1fr); 5524 gap: 5px 0; 5525 } 5526} 5527.section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul.group_container { 5528 display: flex; 5529 flex-flow: column wrap; 5530 flex-basis: min(100%,var(--group-menu-width)); 5531 height: var(--group-menu-height); 5532 justify-content: flex-start; 5533 align-items: flex-start; 5534} 5535@media (max-width: 1280px) { 5536 .section_2 nav.no_descriptions > .menu_wrapper > ul > li .submenu_wrapper > ul.group_container {
5537 align-items: flex-start; 5538 } 5539} 5540.section_2 nav .mobile_menu { 5541 position: absolute; 5542 display: none; 5543 right: 0px; 5544 padding-right: inherit; 5545 font-size: 2rem; 5546 cursor: pointer; 5547} 5548.section_2 nav .menu_wrapper { 5549 display: flex; 5550 margin: 0px auto; 5551 z-index: 100; 5552 width: 100%; 5553 text-align: right; 5554 color: #817979; 5555 align-items: center; 5556 justify-content: space-between; 5557 height: var(--nav-height); 5558 box-sizing: border-box; 5559 font-size: 17px; 5560 font-family: "Prompt"; 5561} 5562.section_2 nav .menu_wrapper .mobile_menu_top { 5563 display: none; 5564} 5565.section_2 nav .menu_wrapper .mobile_menu_buttons { 5566 display: none; 5567} 5568.section_2 nav .menu_wrapper .close_icon { 5569 display: none; 5570} 5571.section_2 nav .menu_wrapper .mobile_information { 5572 display: none; 5573 box-sizing: border-box; 5574 padding: 0 25px; 5575 color: #ffffff; 5576 text-align: left; 5577 margin-top: 20px; 5578} 5579.section_2 nav .menu_wrapper .mobile_information .mobile_address, 5580.section_2 nav .menu_wrapper .mobile_information .mobile_phone, 5581.section_2 nav .menu_wrapper .mobile_information .mobile_social { 5582 margin-bottom: 20px; 5583} 5584.section_2 nav .menu_wrapper .mobile_information .mobile_address a, 5585.section_2 nav .menu_wrapper .mobile_information .mobile_phone a, 5586.section_2 nav .menu_wrapper .mobile_information .mobile_social a { 5587 color: #ffffff; 5588} 5589.section_2 nav .menu_wrapper ul { 5590 padding: 0px; 5591 margin: 0px; 5592} 5593.section_2 nav .menu_wrapper ul .submenu_wrapper { 5594 position: absolute; 5595 min-width: var(--ul-min-width); 5596 left: 0; 5597 width: 100%; 5598 background: #ffffff; 5599 transform: none; 5600 flex-direction: row; 5601 justify-content: center; 5602 padding: 30px; 5603 display: flex; 5604 box-sizing: border-box; 5605 left: 50%; 5606 transform: translateX(-50%); 5607} 5608.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description { 5609 text-align: left; 5610 border-right: 1px solid rgba(34,34,34,0.5); 5611 flex: 0 1 400px; 5612 padding-right: 20px; 5613 opacity: 0; 5614 transition: opacity 1s; 5615} 5616.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description.active { 5617 opacity: 1; 5618} 5619.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description h3 { 5620 margin: 0; 5621 color: #ffffff; 5622 line-height: initial; 5623} 5624.section_2 nav .menu_wrapper ul .submenu_wrapper .submenu_description h3 p { 5625 font-size: 1.1rem; 5626 font-weight: 400; 5627} 5628.section_2 nav .menu_wrapper ul .submenu_wrapper > ul { 5629 flex: 0 1 200px; 5630 text-align: left; 5631 padding-left: 20px; 5632 display: block; 5633 opacity: 1; 5634 transition: opacity 0.5s ease-in, bottom 0.5s ease; 5635} 5636.section_2 nav .menu_wrapper ul .submenu_wrapper > ul.active { 5637 opacity: 1; 5638} 5639.section_2 nav .menu_wrapper ul .submenu_wrapper > ul.active > li > a:hover { 5640 color: #5997e8; 5641} 5642.section_2 nav .menu_wrapper ul .submenu_wrapper > ul li a { 5643 color: #817979; 5644} 5645.section_2 nav .menu_wrapper ul .submenu_wrapper > ul li:hover a { 5646 color: inherit; 5647} 5648.section_2 nav .menu_wrapper ul li { 5649 list-style-type: none; 5650} 5651.section_2 nav .menu_wrapper ul li:hover a, 5652.section_2 nav .menu_wrapper ul li:hover svg { 5653 color: #5997e8; 5654} 5655.section_2 nav .menu_wrapper ul a { 5656 display: inline-block; 5657 width: 100%; 5658 height: 100%; 5659 color: #817979; 5660} 5661.section_2 nav .menu_wrapper ul ul { 5662 display: none; 5663 padding: 0px; 5664 flex-direction: column; 5665 position: relative; 5666 background: none; 5667} 5668.section_2 nav .menu_wrapper ul > li { 5669 padding: 0px 20px; 5670} 5671.section_2 nav .menu_wrapper ul > li > ul > ul.group_container { 5672 display: flex; 5673 flex-flow: column wrap; 5674} 5675.section_2 nav .menu_wrapper ul > li > ul > ul.group_container h3 { 5676 color: #817979; 5677 font-size: 1.5rem; 5678 margin-bottom: 10px; 5679 font-family: "Playfair Display"; 5680 font-weight: 700; 5681} 5682.section_2 nav .menu_wrapper ul > li > ul > ul.group_container > li > ul { 5683 display: flex; 5684} 5685.section_2 nav .menu_wrapper ul > li > ul > ul.group_container > li > ul > li a:hover { 5686 color: #5997e8; 5687} 5688.section_2 nav .menu_wrapper ul > li > ul.group_container { 5689 width: 100%; 5690 box-sizing: border-box; 5691 max-width: 1000px; 5692 flex-direction: column; 5693 flex-wrap: wrap; 5694 left: 50%; 5695 transform: translate(-50%); 5696 max-height: 480px; 5697} 5698.section_2 nav .menu_wrapper ul > li > ul.group_container h3 { 5699 font-size: 1.25rem; 5700 font-weight: bold; 5701 margin: 0px 0px 0.5rem; 5702} 5703.section_2 nav .menu_wrapper ul > li > ul.group_container > li > ul { 5704 position: relative; 5705 display: block; 5706 background: none; 5707 margin-bottom: 0.5rem; 5708} 5709.section_2 nav .menu_wrapper ul > li > ul.group_container > li > ul > li { 5710 line-height: 40px; 5711 text-align: left; 5712} 5713.section_2 nav .menu_wrapper > ul { 5714 margin-left: auto; 5715 margin-right: 0; 5716} 5717.section_2 nav .menu_wrapper > ul > li { 5718 position: relative; 5719 transform: all 0.3s; 5720 display: inline-block; 5721 line-height: var(--nav-height); 5722 padding: 0px 20px; 5723} 5724.section_2 nav .menu_wrapper > ul > li.active a { 5725 color: #5997e8; 5726} 5727@media (max-width: 1280px) { 5728 .section_2 nav .menu_wrapper > ul > li.active a { 5729 color: #ffffff; 5730 } 5731} 5732.section_2 nav .menu_wrapper > ul > li.active i, 5733.section_2 nav .menu_wrapper > ul > li.active svg {
5734 color: #5997e8; 5735} 5736@media (max-width: 1280px) { 5737 .section_2 nav .menu_wrapper > ul > li.active i, 5738 .section_2 nav .menu_wrapper > ul > li.active svg { 5739 color: #ffffff; 5740 } 5741} 5742.section_2 nav .menu_wrapper > ul > li > a { 5743 color: #817979; 5744} 5745.section_2 nav .menu_wrapper > ul > li i, 5746.section_2 nav .menu_wrapper > ul > li svg { 5747 position: absolute; 5748 right: 0; 5749 top: 50%; 5750 transform: translate(0,-50%); 5751 color: #817979; 5752 transition: all 0.3s; 5753} 5754.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper { 5755 flex-wrap: wrap; 5756 overflow-y: auto; 5757 position: fixed; 5758} 5759.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper .submenu_description { 5760 flex-basis: 100%; 5761 text-align: center; 5762 line-height: 0; 5763 border-right: 0; 5764} 5765.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper .submenu_description h3 { 5766 display: inline-block; 5767 border-bottom: 1px solid rgba(34,34,34,0.5); 5768 margin-bottom: 20px; 5769} 5770.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul { 5771 margin: 0 auto; 5772 flex-basis: min(100%,var(--group-menu-width)); 5773 display: grid; 5774 grid-template-columns: repeat(4,1fr); 5775 gap: 10px; 5776} 5777.section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul.group_container { 5778 display: flex; 5779 flex-flow: column wrap; 5780 flex-basis: min(100%,var(--group-menu-width)); 5781 height: var(--group-menu-height); 5782} 5783.section_2 nav .menu_wrapper > ul > li > ul { 5784 padding-top: 20px; 5785 padding-bottom: 20px; 5786 left: 50%; 5787 transform: translate(-50%); 5788} 5789.section_2 nav .menu_wrapper > ul > li > ul > li { 5790 line-height: 40px; 5791 width: 140px; 5792 text-align: left; 5793 text-align: center; 5794} 5795.section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) { 5796 position: absolute; 5797 left: 100%; 5798 padding-top: 20px; 5799 padding-bottom: 20px; 5800 transform: translate(0px,-60px); 5801} 5802.section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) > li { 5803 line-height: 40px; 5804 width: 140px; 5805} 5806@media (max-width: 1280px) { 5807 .section_2 .menu_buttons { 5808 right: 70px; 5809 } 5810 .section_2 .menu_buttons div[data-micro-template="buttons_container"] { 5811 display: flex; 5812 gap: 0 10px; 5813 } 5814 .section_2 nav { 5815 max-width: 100%; 5816 padding: 0px 20px; 5817 box-sizing: border-box; 5818 } 5819 .section_2 nav .mobile_menu { 5820 display: inline-block; 5821 top: 50%; 5822 transform: translate(0px,-50%); 5823 z-index: 4; 5824 } 5825 .section_2 nav ul { 5826 background: none; 5827 } 5828 .section_2 nav ul > li { 5829 box-sizing: border-box; 5830 } 5831 .section_2 nav ul ul { 5832 position: relative; 5833 transform: initial; 5834 } 5835 .section_2 nav .menu_wrapper { 5836 z-index: initial; 5837 position: fixed; 5838 height: 100%; 5839 width: var(--mobile-menu-width); 5840 top: 0; 5841 left: initial; 5842 transform: translateX(0); 5843 right: calc(var(--mobile-menu-width) * -1); 5844 text-align: center; 5845 display: flex; 5846 flex-direction: column; 5847 justify-content: flex-start; 5848 align-items: flex-end; 5849 opacity: 1; 5850 transition: transform 0.3s; 5851 box-sizing: border-box; 5852 padding: 0; 5853 overflow-y: auto; 5854 background: #100f0f; 5855 padding-bottom: 60px; 5856 } 5857 .section_2 nav .menu_wrapper.active { 5858 z-index: 1000; 5859 transform: translateX(calc(var(--mobile-menu-width) * -1)); 5860 } 5861 .section_2 nav .menu_wrapper .mobile_logo { 5862 position: absolute; 5863 top: 50%; 5864 left: 50%; 5865 transform: translate(-50%,-50%); 5866 width: 100%; 5867 opacity: 0.15; 5868 display: block; 5869 } 5870 .section_2 nav .menu_wrapper .mobile_logo img, 5871 .section_2 nav .menu_wrapper .mobile_logo picture { 5872 width: 100%; 5873 height: 100%; 5874 object-fit: cover; 5875 } 5876 .section_2 nav .menu_wrapper .mobile_menu_top { 5877 position: sticky; 5878 background: #100f0f; 5879 width: 100%; 5880 top: 0; 5881 z-index: 99; 5882 border-bottom: none; 5883 display: block; 5884 box-sizing: border-box; 5885 padding: 10px 0 0 0; 5886 min-height: var(--mobile-menu-top-min-height); 5887 } 5888 .section_2 nav .menu_wrapper .mobile_menu_buttons { 5889 display: block; 5890 width: 100%; 5891 } 5892 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] { 5893 display: flex; 5894 justify-content: flex-start; 5895 gap: 0 10px; 5896 padding: 0 25px; 5897 box-sizing: border-box; 5898 opacity: 0; 5899 transform: translateY(40px); 5900 transition: transform 0.5s ease, opacity 0.5s ease; 5901 position: relative; 5902 } 5903 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"].active { 5904 opacity: 1; 5905 transform: translateY(0); 5906 } 5907 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button { 5908 padding: 10px 15px; 5909 font-size: 1rem; 5910 border-radius: 0; 5911 } 5912 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button:hover { 5913 color: #222; 5914 } 5915 .section_2 nav .menu_wrapper .mobile_menu_buttons div[data-micro-template="buttons_container"] div[data-micro-template="buttons"] a.button:hover:before { 5916 width: calc(100% - 30px); 5917 } 5918 .section_2 nav .menu_wrapper .mobile_information { 5919 display: block; 5920 margin-top: 20px; 5921 width: 100%; 5922 } 5923 .section_2 nav .menu_wrapper .mobile_information .mobile_address { 5924 opacity: 0; 5925 transform: translateY(40px); 5926 position: relative; 5927 transition: transform 0.5s, opacity 0.5s; 5928 font-weight: 300; 5929 } 5930 .section_2 nav .menu_wrapper .mobile_information .mobile_address .label { 5931 font-weight: 500; 5932 } 5933 .section_2 nav .menu_wrapper .mobile_information .mobile_address.active { 5934 opacity: 1; 5935 transform: translateY(0); 5936 } 5937 .section_2 nav .menu_wrapper .mobile_information .mobile_address svg, 5938 .section_2 nav .menu_wrapper .mobile_information .mobile_address i { 5939 margin-right: 5px; 5940 } 5941 .section_2 nav .menu_wrapper .mobile_information .mobile_address div[data-micro-template="social_icons_container"] { 5942 margin: 5px 0; 5943 } 5944 .section_2 nav .menu_wrapper .mobile_information .mobile_address .location_hours { 5945 margin-bottom: 5px; 5946 } 5947 .section_2 nav .menu_wrapper .close_icon { 5948 border: none; 5949 text-align: right; 5950 line-height: initial; 5951 padding: 10px 10px 10px 20px; 5952 display: block; 5953 cursor: pointer; 5954 box-sizing: border-box; 5955 opacity: 1; 5956 position: absolute; 5957 top: 50%; 5958 right: 0; 5959 transform: translate(0,-50%); 5960 } 5961 .section_2 nav .menu_wrapper .close_icon i, 5962 .section_2 nav .menu_wrapper .close_icon svg { 5963 font-size: 2.25rem; 5964 position: relative; 5965 color: #ffffff; 5966 transform: none; 5967 top: initial; 5968 right: initial; 5969 } 5970 .section_2 nav .menu_wrapper > ul { 5971 width: 100%; 5972 height: auto; 5973 padding: 0 25px; 5974 box-sizing: border-box; 5975 margin-top: var(--mobile-menu-top-spacing); 5976 } 5977 .section_2 nav .menu_wrapper > ul > li:not(:last-of-type) { 5978 margin: 0px; 5979 } 5980 .section_2 nav .menu_wrapper > ul > li:last-of-type { 5981 border-bottom: none; 5982 } 5983 .section_2 nav .menu_wrapper > ul > li:first-of-type { 5984 border-top: none; 5985 } 5986 .section_2 nav .menu_wrapper > ul > li { 5987 width: 100%; 5988 margin: 0px; 5989 border-top: none; 5990 line-height: 60px; 5991 padding: 0px; 5992 display: block; 5993 justify-content: space-between; 5994 align-items: center; 5995 opacity: 0; 5996 transition: transform 0.5s, opacity 0.5s; 5997 transform: translateY(40px); 5998 text-align: left; 5999 } 6000 .section_2 nav .menu_wrapper > ul > li svg, 6001 .section_2 nav .menu_wrapper > ul > li i { 6002 color: #ffffff; 6003 position: absolute; 6004 right: 0; 6005 top: 30px; 6006 transform: translate(0,-50%); 6007 transition: transform 0.3s; 6008 } 6009 .section_2 nav .menu_wrapper > ul > li.active { 6010 opacity: 1; 6011 transform: translateY(0); 6012 } 6013 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper { 6014 position: relative; 6015 padding: 0; 6016 justify-content: flex-start; 6017 background: none; 6018 } 6019 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper .submenu_description { 6020 display: none; 6021 } 6022 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul { 6023 transition: opacity 0.5s ease-in, bottom 0.5s ease; 6024 display: block; 6025 opacity: 0; 6026 padding: 0 0 20px 0; 6027 flex: 100%; 6028 } 6029 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul li:hover a { 6030 color: #ffffff; 6031 } 6032 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper > ul li a { 6033 color: #ffffff; 6034 } 6035 .section_2 nav .menu_wrapper > ul > li .submenu_wrapper.active > ul { 6036 opacity: 1; 6037 display: grid; 6038 grid-template-columns: repeat(1,1fr); 6039 gap: 5px 0; 6040 } 6041 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper { 6042 position: relative; 6043 } 6044 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul.group_container { 6045 height: auto; 6046 } 6047 .section_2 nav .menu_wrapper > ul > li[data-url="/services/"] .submenu_wrapper > ul { 6048 grid-template-columns: repeat(1,1fr); 6049 gap: 5px 0; 6050 } 6051 .section_2 nav .menu_wrapper > ul > li a { 6052 display: inline-block; 6053 width: 100%; 6054 height: 100%; 6055 color: #ffffff; 6056 } 6057 .section_2 nav .menu_wrapper > ul > li > ul { 6058 padding-top: 0px; 6059 } 6060 .section_2 nav .menu_wrapper > ul > li > ul > li { 6061 width: 100%; 6062 text-align: center; 6063 } 6064 .section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) { 6065 position: initial; 6066 left: initial; 6067 padding-top: 20px; 6068 padding-bottom: 20px; 6069 transform: initial; 6070 text-align: center; 6071 } 6072 .section_2 nav .menu_wrapper > ul > li > ul > li > ul:not([data-group-container]) > li { 6073 line-height: 40px; 6074 width: 100%; 6075 } 6076 .section_2 nav .menu_wrapper > ul > li ul.group_container { 6077 max-width: 100%; 6078 max-height: initial; 6079 } 6080 .section_2 nav .menu_wrapper > ul > li ul.group_container > li { 6081 padding: 0; 6082 } 6083 .section_2 nav .menu_wrapper > ul > li ul.group_container > li > ul > li { 6084 text-align: left; 6085 font-size: 16px; 6086 } 6087 .section_2 nav .menu_wrapper > ul > li ul.group_container > li > ul > li h3 { 6088 font-size: 18px; 6089 margin: 0; 6090 border-bottom: none; 6091 margin-bottom: 5px; 6092 padding-bottom: 5px; 6093 color: #ffffff; 6094 } 6095} 6096@media (max-width: 1280px) and (max-width: 810px) { 6097 .section_2 .menu_buttons { 6098 display: none; 6099 } 6100} 6101@media (max-width: 1280px) and (max-width: 550px) { 6102 .section_2 nav .menu_wrapper { 6103 top: -100vh; 6104 right: 0; 6105 } 6106 .section_2 nav .menu_wrapper.active { 6107 transform: translateY(100vh); 6108 } 6109} 6110section[data-type="system-lightbox-container"] { 6111 transition: all 0s !important; 6112} 6113section[data-type="system-lightbox-container"].active { 6114 opacity: 1; 6115 background: rgba(0,0,0,0.6); 6116 z-index: 99; 6117} 6118</style><section class="section_2" data-module="kraken_menu" data-html="" data-json="/custom/modules/kraken_menu/module.json" data-page="appointment" data-full-path="/appointment/"> 6119 <div class="content_container"> 6120 <div class="logo"> 6121 <a href="/" aria-label="link"><picture><source srcset="/cache/lo-custom_images_logo.webp 380w, /cache/custom_images_logo.webp 768w" sizes="(max-width: 380px) 100v
6121w, 768px" data-lazy-picture="false" type="image/webp"><img alt="The image displays a logo with the text Company Name and below it, the phrase Subtitle Here. The logo features a stylized letter A with a design that includes what appears to be a splash or burst of lines emanating from its center." class="" src="/custom/images/logo.png" data-lazy-img="false" data-src="/custom/images/logo.png"></picture></a> 6122 </div> 6123 <nav> 6124 <div class="mobile_menu"><i class="fas fa-bars"></i></div><div class="menu_wrapper"><div class="mobile_logo"><picture><source srcset="/cache/custom_images_logoicon.webp 382w" sizes="382px" data-lazy-picture="false" type="image/webp"><img alt="The image shows a logo with the letters A and T in stylized font, set against a background that includes a splash of water droplets and a graphic element resembling a paint palette." class="" src="/custom/images/logoicon.png" data-lazy-img="false" data-src="/custom/images/logoicon.png"></picture></div><div class="mobile_menu_top"><div class="close_icon"><i class="fal fa-times"></i></div></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="/meet-the-team/" data-label="Meet the Team" data-new-window="" data-group="" data-group-label="">Meet the Team</li><li data-url="/our-community/" data-label="Our Community" data-new-window="" data-group="" data-group-label="">Our Community</li><li data-url="/smile-gallery/" data-label="Smile Gallery" data-new-window="" data-group="" data-group-label="">Smile Gallery</li><li data-url="/testimonials/" data-label="Testimonials" data-new-window="" data-group="" data-group-label="">Testimonials</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/dr-aaron-tropmann/" data-label="Dr. Aaron Tropmann" data-new-window="">Dr. Aaron Tropmann</li><li data-url="/staff/dr-gary-oyster/" data-label="Dr. Gary Oyster" data-new-window="">Dr. Gary Oyster</li><li data-url="/staff/dr-emily-gibson/" data-label="Dr. Emily Gibson" data-new-window="">Dr. Emily Gibson</li></ul></li><li data-url="/services/" data-label="Services" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Services<ul><li data-url="/services/dental-cleanings/" data-label="Dental Cleanings" data-group="general" data-group-label="General">Dental Cleanings</li><li data-url="/services/dental-sealants/" data-label="Dental Sealants" data-group="general" data-group-label="General">Dental Sealants</li><li data-url="/services/emergency-treatment/" data-label="Emergency Treatment" data-group="general" data-group-label="General">Emergency Treatment</li><li data-url="/services/extractions/" data-label="Extractions" data-group="general" data-group-label="General">Extractions</li><li data-url="/services/fluoride-treatment/" data-label="Fluoride Treatment" data-group="general" data-group-label="General">Fluoride Treatment</li><li data-url="/services/night-guards/" data-label="Night Guards" data-group="general" data-group-label="General">Night Guards</li><li data-url="/services/oral-cancer-screening/" data-label="Oral Cancer Screening" data-group="general" data-group-label="General">Oral Cancer Screening</li><li data-url="/services/oral-exams/" data-label="Oral Exams" data-group="general" data-group-label="General">Oral Exams</li><li data-url="/services/pediatric-dentistry/" data-label="Pediatric Dentistry" data-group="general" data-group-label="General">Pediatric Dentistry</li><li data-url="/services/periodontal-treatment/" data-label="Periodontal Treatment" data-group="general" data-group-label="General">Periodontal Treatment</li><li data-url="/services/preventative-program/" data-label="Preventative Program" data-group="general" data-group-label="General">Preventative Program</li><li data-url="/services/root-canals/" data-label="Root Canals" data-group="general" data-group-label="General">Root Canals</li><li data-url="/services/sports-mouthguards/" data-label="Sports Mouthguards" data-group="general" data-group-label="General">Sports Mouthguards</li><li data-url="/services/all-on-4/" data-label="All-on-4®" data-group="restorative" data-group-label="Restorative">All-on-4®</li><li data-url="/services/cerec-single-visit-crowns/" data-label="CEREC" data-group="restorative" data-group-label="Restorative">CEREC</li><li data-url="/services/dental-bridges/" data-label="Dental Bridges" data-group="restorative" data-group-label="Restorative">Dental Bridges</li><li data-url="/services/dental-fillings/" data-label="Dental Fillings" data-group="restorative" data-group-label="Restorative">Dental Fillings</li><li data-url="/services/dentures/" data-label="Dentures" data-group="restorative" data-group-label="Restorative">Dentures</li><li data-url="/services/full-mouth-reconstruction/" data-label="Full Mouth Reconstruction" data-group="restorative" data-group-label="Restorative">Full Mouth Reconstruction</li><li data-url="/services/implant-dentistry/" data-label="Implant Dentistry" data-group="restorative" data-group-label="Restorative">Implant Dentistry</li><li data-url="/services/inlays-onlays/" data-label="Inlays & Onlays" data-group="restorative" data-group-label="Restorative">Inlays & Onlays</li><li data-url="/services/same-day-crowns/" data-label="Same Day Crowns" data-group="restorative" data-group-label="Restorative">Same Day Crowns</li><li data-url="/services/botox/" data-label="Botox®" data-group="cosmetic" data-group-label="Cosmetic">Botox®</li><li data-url="/services/ceramic-crowns/" data-label="Ceramic Crowns" data-group="cosmetic" data-group-label="Cosmetic">Ceramic Crowns</li><li data-url="/services/cosmetic-dentistry/" data-label="Cosmetic Dentistry" data-group="cosmetic" data-group-label="Cosmetic">Cosmetic Dentistry</li><li data-url="/services/teeth-whitening/" data-label="Teeth Whitening" data-group="cosmetic" data-group-label="Cosmetic">Teeth Whitening</li><li data-url="/services/veneers/" data-label="Veneers" data-group="cosmetic" data-group-label="Cosmetic">Veneers</li><li data-url="/services/cbct/" data-label="CBCT" data-group="technology" data-group-label="Technology">CBCT</li><li data-url="/services/digital-impressions/" data-label="Digital Impressions" data-group="technology" data-group-label="Technology">Digital Impressions</li><li data-url="/services/digital-radiography/" data-label="Digital Radiogra
6124phy" data-group="technology" data-group-label="Technology">Digital Radiography</li><li data-url="/services/intraoral-camera/" data-label="Intraoral Camera" data-group="technology" data-group-label="Technology">Intraoral Camera</li><li data-url="/services/clearcorrect/" data-label="ClearCorrect®" data-group="orthodontics" data-group-label="Orthodontics">ClearCorrect®</li><li data-url="/services/invisalign/" data-label="Invisalign®" data-group="orthodontics" data-group-label="Orthodontics">Invisalign®</li></ul></li><li data-url="/" data-label="Patient Resources" data-new-window="" data-group="" data-group-label="" aria-haspopup="true">Patient Resources<ul><li data-url="/new-patients/" data-label="New Patients" data-new-window="" data-group="" data-group-label="">New Patients</li><li data-url="/videos/" data-label="Dental Videos" data-new-window="" data-group="" data-group-label="">Dental Videos</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="/contact/" data-label="Contact" data-new-window="" data-group="" data-group-label="">Contact</li></ul><div class="mobile_menu_buttons"><div data-micro-template="buttons_container"> 6125 <div data-micro-template="buttons"> 6126 <a class="button kraken_button" href="/appointment/" role="button" aria-label="Request Appointment"><span>Request Appointment</span></a> 6127</div> 6128</div></div><div class="mobile_information"> 6129 <div class="mobile_address"><div data-micro-template="address_hours_social_dynamic"> 6130 <div class="location_details"> 6131 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="5621 Departure Dr Suite 109 Raleigh, NC 27616" rel="noopener" target="_blank"> 6132 <div>5621 Departure Dr</div> 6133 6134 <div>Suite 109</div> 6135 6136 <div><span>Raleigh</span>, <span>NC</span> <span>27616</span></div> 6137 </a> 6138 6139 6140 <div><a href="tel:+19192216014" aria-label="New Patients: (919) 221-6014" class="tel_19192216014" data-click-call="0">New Patients: (919) 221-6014</a></div> 6141 <div><a href="tel:+19198762087" aria-label="Existing Patients: (919) 876-2087" class="tel_19198762087" data-click-call="0">Existing Patients: (919) 876-2087</a></div> 6142 6143 <div data-micro-template="social_icons_container"> 6144 <div data-micro-template="social_icons"> 6145 <a href="https://www.facebook.com/people/The-Office-of-Dr-Aaron-Tropmann-Dr-Gary-Oyster/61583686322230/" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 6146</div><div data-micro-template="social_icons"> 6147 <a href="https://www.instagram.com/aarontropmannddspa" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-instagram"></i></a> 6148</div><div data-micro-template="social_icons"> 6149 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 6150</div><div data-micro-template="social_icons"> 6151 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 6152</div> 6153</div> 6154 </div> 6155 6156 <div class="location_hours"> 6157 <div data-micro-template="office_hours_dynamic"> 6158 6159 <div class="row"><div class="day">Monday</div><div class="time">8:30 am - 4:30 pm</div></div> 6160 <div class="row"><div class="day">Tuesday</div><div class="time">8:30 am - 4:30 pm</div></div> 6161 <div class="row"><div class="day">Wednesday</div><div class="time">8:30 am - 4:30 pm</div></div> 6162 <div class="row"><div class="day">Thursday</div><div class="time">8:30 am - 4:30 pm</div></div> 6163 <div class="row"><div class="day">Friday</div><div class="time">By appointment only</div></div> 6164 <div class="row"><div class="day">Saturday</div><div class="time">Closed</div></div> 6165 <div class="row"><div class="day">Sunday</div><div class="time">Closed</div></div> 6166</div> 6167 </div> 6168</div></div> 6169 </div></div> </nav> 6170 </div> 6171</section>
6171<script> 6172 javascript.prototype[get_id()] = function() { 6173 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"},"submenu_icon":"fal fa-chevron-down","transparent_menu":false,"swipe_close_threshold":100,"mobile_logo":true,"mobile_address":true,"menu_buttons":true,"menu_buttons_content":[{"label":"Request Appointment","url":"/appointment/"}]},"content":{"menu":[{"label":"Home","url":"\/"},{"label":"About Us","group":"","url":"\/","description":"","menu":[{"label":"Our Office","url":"\/our-office\/"},{"label":"Meet the Team","url":"\/meet-the-team\/"},{"label":"Our Community","url":"\/our-community\/"},{"label":"Smile Gallery","url":"\/smile-gallery\/"},{"label":"Testimonials","url":"\/testimonials\/"}]},{"label":"Our Doctors","url":"\/staff\/","description":"","menu":"staff","group":""},{"label":"Services","url":"\/services\/","description":"","menu":"services","group":""},{"label":"Patient Resources","group":"","url":"\/","description":"","menu":[{"label":"New Patients","url":"\/new-patients\/"},{"label":"Dental Videos","url":"\/videos\/"},{"label":"Recent Articles","url":"\/articles\/","aleso_articles_required":3}]},{"label":"Contact","url":"\/contact\/","description":"","group":""}]}}; 6174 var descriptionElements = []; 6175 var menuElements = []; 6176 var submenu_icon = json.settings.submenu_icon || "fas fa-caret-down"; 6177 var transparentMenu = json.settings.transparent_menu; 6178 var menu_break = parseInt('1280px'.replace(/\D/g,'')); 6179 var useDescriptions = json.settings.use_descriptions; 6180 var menuWrapper = $('.section_2 nav > .menu_wrapper'); 6181 var mobileMenu = $('.section_2 .mobile_menu'); 6182 var baseNavElements = $('.section_2 nav > .menu_wrapper > ul > li'); 6183 var navElement = $('.section_2 nav'); 6184 var touchStartX; 6185 var touchStartY; 6186 var swipeCloseThreshold = json.settings.touch_threshold || 100; 6187 var openMenu = false;
6188 6189 // If transparent menu is true, the background color will be removed and the text will use the background color 6190 if(transparentMenu) { 6191 $('.section_2').addClass('transparent_menu'); 6192 } 6193 6194 // If the menu JSON is using the descriptions, this creates an array of them and sets a base class for styling 6195 if(!useDescriptions) { 6196 navElement.addClass('no_descriptions'); 6197 } 6198 $.each(json.content.menu, function(index, element) { 6199 if(element.hasOwnProperty('description')) { 6200 descriptionElements.push(element); 6201 } 6202 if(element.hasOwnProperty('menu') && element.menu.length) { 6203 menuElements.push(element); 6204 } 6205 }); 6206 6207 // Wrap all of the menu inner UL's with the submenu wrapper that houses the descriptions 6208 $('.section_2 > .content_container > nav > .menu_wrapper > ul > li > ul').wrap("<ul class='submenu_wrapper' style='display: none'>"); 6209 6210 // Add the carrot icons to the side of nav items that have menus 6211 $('.section_2 > .content_container > nav > .menu_wrapper > ul > li:has(> ul)').each(function () { 6212 var $fa = `<i class="menu_icon ${submenu_icon}">`; 6213 $(this).append($fa); 6214 }); 6215 6216 // Convert LI elements to links 6217 $('.section_2 nav *[data-url]:not([data-url=""])').each(function() { 6218 $(this).contents().filter(function() { 6219 return this.nodeType == 3; 6220 }) 6221 .replaceWith('<a href="'+$(this).attr('data-url')+'">'+$(this).attr('data-label')+''); 6222 if ($(this).attr('data-url').includes('http')) { 6223 $(this).children('a').attr('target', '_blank'); 6224 $(this).children('a').attr('rel', 'noopener'); 6225 } 6226 }); 6227 6228 // Find UL elements containing groups and categorize them 6229 $('.section_2 nav ul > li').each(function() { 6230 if ($(this).attr('data-group')) { 6231 var parent_ul = $(this).closest('ul'); 6232 var group = $(this).attr('data-group') 6233 6234 $(parent_ul).addClass('group_container'); 6235 6236 if ($(this).siblings('li[data-group-container="'+group+'"]').length == 0) { 6237 group_container_li = 6238 $('<li />') 6239 .attr('data-group-container', group) 6240 .appendTo(parent_ul); 6241 6242 group_container_ul = 6243 $('<ul />') 6244 .attr('data-group-container', group) 6245 .appendTo(group_container_li); 6246 6247 group_label = 6248 $('<li />') 6249 .appendTo(group_container_ul); 6250 6251 group_header = 6252 $('<h3 />') 6253 .html($(this).attr('data-group-label')) 6254 .appendTo(group_label); 6255 } 6256 6257 $(this).appendTo($(this).siblings('li[data-group-container="'+group+'"]').children('ul[data-group-container="'+group+'"]')); 6258 } 6259 }); 6260 6261 $('.section_2 nav > .menu_wrapper > ul > li > ul > li:not([data-group-container])').each(function() { 6262 $(this).closest('ul').closest('li').css('position', 'relative'); 6263 }); 6264 6265 // Set click and hover events 6266 $('.section_2 nav li:not([data-group-container]):has(> ul)').mouseover(function(e) { 6267 if (mobileMenu.css('display') == 'none' && $(this).hasClass('active') == false) { 6268 let activeEl = $(this); 6269 $('.section_2 nav > .menu_wrapper > ul > li').each(function(el) { 6270 $(this).removeClass('active'); 6271 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)'); 6272 $(this).find('.submenu_wrapper > ul').removeClass('active'); 6273 $(this).find('.submenu_description').removeClass('active'); 6274 $('> .submenu_wrapper', this).stop().slideUp(200, function() { 6275 }); 6276 }); 6277 6278 $(this).addClass('active'); 6279 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(-180deg)'); 6280 $('> .submenu_wrapper', this).stop().slideDown(200, function() { 6281 $(this).css('display', 'flex'); 6282 }); 6283 $(this).find('.submenu_description').toggleClass('active'); 6284 setTimeout(function() { 6285 activeEl.find('.submenu_wrapper > ul').addClass('active'); 6286 }, 100); 6287 } 6288 }); 6289 6290 $('.section_2 nav li:not([data-group-container]):has(> ul)').mouseout(function(e) { 6291 if (mobileMenu.css('display') == 'none' && $(this).hasClass('active') == true) { 6292 $('.section_2 nav > .menu_wrapper > ul > li').each(function(el) { 6293 $(this).removeClass('active'); 6294 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)'); 6295 $(this).find('.submenu_wrapper > ul').removeClass('active'); 6296 $(this).find('.submenu_description').removeClass('active'); 6297 $('> .submenu_wrapper', this).stop().slideUp(200, function() { 6298 }); 6299 }); 6300 } 6301 }) 6302 6303 $('.section_2 nav li:not([data-group-container]):has(> ul)').click(function(e) { 6304 if (mobileMenu.css('display') == 'none' && $(this).hasClass('active') == false) { 6305 6306 } 6307 else { 6308 if(!$(this).find('.submenu_wrapper').hasClass('active')) { 6309 $('.section_2 nav > .menu_wrapper > ul > li > .submenu_wrapper').slideUp().removeClass('active'); 6310 $('.section_2 nav > .menu_wrapper > ul > li .menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)');
6311 let clicked = $(this); 6312 setTimeout(function() { 6313 clicked.find('.submenu_wrapper').slideToggle().toggleClass('active'); 6314 clicked.find('.menu_icon').css('transform', 'translate(0, -50%) rotate(-180deg)'); 6315 }, 10) 6316 } 6317 else { 6318 $(this).find('.submenu_wrapper').slideToggle().toggleClass('active'); 6319 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)'); 6320 } 6321 } 6322 }); 6323 6324 // Set mobile events and click behavior 6325 $('.section_2 nav > .menu_wrapper .close_icon').click(function() { 6326 closeMobileMenu(); 6327 }); 6328 6329 $('.section_2 nav .mobile_menu').click(function() { 6330 openMobileMenu(); 6331 }); 6332 6333 $('.section_2 nav > .menu_wrapper > ul > li:has(>ul) > a').click(function(e) { 6334 if($(this).attr('href')) { 6335 e.preventDefault(); 6336 } 6337 }); 6338 6339 $('.section_2 nav li > ul > li').click(function(e) { 6340 e.stopPropagation(); 6341 }); 6342 6343 // Assign an event listener that sets up clicking outside the active mobile menu to close it 6344 window.addEventListener('click', function(e) { 6345 if(menuWrapper.hasClass('active') && !$(e.target).closest('.menu_wrapper').length && !$(e.target).closest('.mobile_menu').length) { 6346 closeMobileMenu(); 6347 } 6348 if (openMenu && (mobileMenu.css('display') == 'none') && !$(e.target).closest('.menu_wrapper').length) { 6349 baseNavElements.each(function(el) { 6350 if($(this).hasClass('active')) { 6351 $(this).removeClass('active'); 6352 $(this).find('.submenu_wrapper > ul').removeClass('active'); 6353 $(this).find('.submenu_description').removeClass('active'); 6354 $(this).find('.menu_icon').css('transform', 'translate(0, -50%)'); 6355 $('> .submenu_wrapper', this).stop().slideUp(0); 6356 } 6357 }); 6358 } 6359 }); 6360 6361 window.addEventListener('touchstart', function(e) { 6362 if(menuWrapper.hasClass('active') && !$(e.target).closest('.menu_wrapper').length && !$(e.target).closest('.mobile_menu').length) { 6363 closeMobileMenu(); 6364 } 6365 }) 6366 6367 // Assigns an event listener so you can use the escape key to close the mobile menu 6368 document.onkeydown = (e) => { 6369 if (menuWrapper.hasClass('active')) { 6370 if (e.keyCode == 27) { 6371 closeMobileMenu(); 6372 } 6373 } 6374 } 6375 6376 // Close the menu on horizontal resize 6377 var window_width = window.innerWidth; 6378 window.addEventListener('resize', function() { 6379 if (window.innerWidth == window_width) { 6380 return; 6381 } 6382 else { 6383 if ($('.section_2 nav .mobile_menu').css('display') == 'none' ) { 6384 removeActive(); 6385 baseNavElements.each(function(el) { 6386 $(this).removeClass('active'); 6387 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)'); 6388 $('> ul', this).stop().fadeOut(200); 6389 }); 6390 } 6391 else { 6392 closeMobileMenu(); 6393 } 6394 } 6395 window_width = window.innerWidth; 6396 }); 6397 6398 // Iterate over elements and stagger adding active class 6399 function iterateActive(elements){ 6400 var i = 0; 6401 addActive(elements[i++]); 6402 var interval = setInterval(function(){ 6403 addActive(elements[i++]); 6404 if(i == elements.length) { 6405 clearInterval(interval); 6406 } 6407 }, 50); 6408 } 6409 6410 // Runs through the nav structure and removes all active classes 6411 function removeActive() { 6412 baseNavElements.removeClass('active'); 6413 baseNavElements.find('.submenu_description').removeClass('active'); 6414 baseNavElements.find('.submenu_wrapper > ul').removeClass('active'); 6415 } 6416 6417 // Add active class to element 6418 function addActive(element) { 6419 element.classList.add('active'); 6420 } 6421 6422 // Toggles the dark background for the page while the menu is open 6423 function toggleLightboxOverlay(remove) { 6424 if(remove && remove.length) { 6425 $('section[data-type="system-lightbox-container"]').removeClass('active'); 6426 } 6427 else { 6428 $('section[data-type="system-lightbox-container"]').toggleClass('active'); 6429 } 6430 } 6431 6432 // Closes mobile menu, removes neccessary classes, and toggles off the lightbox overlay 6433 function closeMobileMenu() { 6434 menuWrapper.removeClass('active'); 6435 navElement.removeClass('active'); 6436 $('.section_2').removeClass('active'); 6437 baseNavElements.find('.submenu_wrapper').removeClass('active') 6438 $('.section_2 nav > .menu_wrapper > .mobile_information > div').removeClass('active'); 6439 $('.section_2 nav > .menu_wrapper > .mobile_menu_buttons > div').removeClass('active'); 6440 baseNavElements.each(function(el) { 6441 $(this).removeClass('active'); 6442 $(this).find('.menu_icon').css('transform', 'translate(0, -50%) rotate(0deg)'); 6443 $('> ul', this).stop().fadeOut(200); 6444 }); 6445 toggleLightboxOverlay('remove'); 6446 $('html').css('overflow', 'visible'); 6447 window.removeEventListener('touchstart', swipeCloseStart, true); 6448 window.removeEventListener('touchend', swipeCloseEnd, true) 6449 } 6450 6451 // Opens the mobile menu, adds active class, and toggles the lightbox overlay 6452 function openMobileMenu() { 6453 toggleLightboxOverlay(); 6454 menuWrapper.toggleClass('active'); 6455 $('html').css('overflow', 'hidden'); 6456 $('.section_2').addClass('active'); 6457 navElement.addClass('active'); 6458 setTimeout(function() { 6459 iterateActive(document.querySelectorAll('.section_2 nav > .menu_wrapper > ul > li')); 6460 }, 200) 6461 if(json.settings.menu_buttons) { 6462 setTimeout(function() { 6463 $('.section_2 nav > .menu_wrapper > .mobile_menu_buttons > div').addClass('active'); 6464 }, 300) 6465 } 6466 if(json.settings.mobile_address) { 6467 setTimeout(function() { 6468 addActive(document.querySelector('.section_2 nav > .menu_wrapper > .mobile_information > div')); 6469 }, 400) 6470 } 6471 window.addEventListener('touchstart', swipeCloseStart, true); 6472 window.addEventListener('touchend', swipeCloseEnd, true) 6473 } 6474 6475 function swipeCloseStart(e) { 6476 touchStartX = e.touches[0].clientX; 6477 } 6478 6479 function swipeCloseEnd(e) { 6480 touchEnd = e.changedTouches[0].clientX; 6481 touchDiff = touchStartX - touchEnd; 6482 absDiff = Math.abs(touchStartX - touchEnd); 6483 6484 if (touchDiff < 0 && absDiff > swipeCloseThreshold) { 6485 closeMobileMenu(); 6486 } 6487 6488 touchStartX, touchEnd, touchDiff, absDiff = 0; 6489 } 6490 } 6491</script>
vendor: 1 bytes, line 6491
6491
6492<script> 6493 javascript.prototype[get_id()] = function() { 6494 $(document).scroll(function() { 6495 var position = $(document).scrollTop(); 6496 6497 if (position > 100) { 6498 if (!$('.section_2').hasClass('not_top')) { 6499 $('.section_2').addClass('not_top'); 6500 } 6501 } 6502 else { 6503 if ($('.section_2').hasClass('not_top')) { 6504 $('.section_2').removeClass('not_top'); 6505 } 6506 } 6507 }); 6508 } 6509</script>
6509<style>.section_3 { 6510 --kraken-fullscreen-image-shape-width: 225px; 6511 --kraken-fullscreen-image-shape-height: 125px; 6512 --kraken-fullscreen-image-height: auto; 6513 --kraken-fullscreen-image-overlay: rgba(0,0,0,0.8); 6514 --kraken-fullscreen-image-left-size: 45%; 6515 --kraken-fullscreen-image-right-size: 55%; 6516 height: var(--kraken-fullscreen-image-height); 6517 padding: 160px 0 80px 0; 6518 background: #100f0f; 6519} 6520@media (max-width: 1080px) { 6521 .section_3 { 6522 --kraken-fullscreen-image-shape-width: 170px; 6523 --kraken-fullscreen-image-shape-height: 85px; 6524 --kraken-fullscreen-image-left-size: 50%; 6525 --kraken-fullscreen-image-right-size: 50%; 6526 } 6527} 6528@media (max-width: 810px) { 6529 .section_3 { 6530 --kraken-fullscreen-image-left-size: 100%; 6531 --kraken-fullscreen-image-right-size: 100%; 6532 } 6533} 6534@media (max-width: 550px) { 6535 .section_3 { 6536 --kraken-fullscreen-image-shape-width: 120px; 6537 --kraken-fullscreen-image-shape-height: 65px; 6538 } 6539} 6540@media (max-width: 810px) { 6541 .section_3 { 6542 padding: 40px 0; 6543 } 6544} 6545.section_3 .content_container .content { 6546 padding: 80px 0; 6547 box-sizing: border-box; 6548} 6549.section_3 .content_container .content .container_corner { 6550 position: absolute; 6551 z-index: 999; 6552 width: var(--kraken-fullscreen-image-shape-width); 6553 height: var(--kraken-fullscreen-image-shape-height); 6554} 6555.section_3 .content_container .content .container_corner.topleft { 6556 top: 0; 6557 left: 0; 6558 transform: rotate(180deg); 6559} 6560.section_3 .content_container .content .container_corner.bottomright { 6561 bottom: 0; 6562 right: 0; 6563} 6564.section_3 .content_container .content .container_corner.bottomleft { 6565 bottom: 0; 6566 left: 0; 6567 transform: scaleX(-1); 6568} 6569.section_3 .content_container .content .container_corner.topright { 6570 top: 0; 6571 right: 0; 6572 transform: scaleX(-1) rotate(180deg); 6573} 6574.section_3 .content_container .content .container_corner img, 6575.section_3 .content_container .content .container_corner picture, 6576.section_3 .content_container .content .container_corner svg { 6577 width: 100%; 6578 height: 100%; 6579 display: block; 6580} 6581.section_3 .content_container .content .container_corner svg { 6582 fill: #ffffff; 6583} 6584.section_3 .content_container .content .background_image { 6585 position: absolute; 6586 top: 0; 6587 left: 0; 6588 width: 100%; 6589 height: 100%; 6590 z-index: -2; 6591} 6592.section_3 .content_container .content .background_image .background_overlay { 6593 position: absolute; 6594 top: 0; 6595 left: 0; 6596 width: 100%; 6597 height: 100%; 6598 background: linear-gradient(to bottom,var(--kraken-fullscreen-image-overlay),var(--kraken-fullscreen-image-overlay)); 6599 display: block; 6600} 6601.section_3 .content_container .content .background_image img, 6602.section_3 .content_container .content .background_image picture { 6603 width: 100%; 6604 height: 100%; 6605 object-fit: cover; 6606 object-position: center center; 6607} 6608.section_3 .content_container .content .kraken_fullscreen_image { 6609 display: flex; 6610 gap: 100px; 6611 height: 100%; 6612 align-items: center; 6613} 6614@media (max-width: 1080px) { 6615 .section_3 .content_container .content .kraken_fullscreen_image { 6616 gap: 50px; 6617 } 6618} 6619@media (max-width: 810px) { 6620 .section_3 .content_container .content .kraken_fullscreen_image { 6621 flex-direction: column; 6622 align-items: flex-start; 6623 gap: 0; 6624 } 6625} 6626.section_3 .content_container .content .kraken_fullscreen_image p { 6627 margin: 0; 6628} 6629.section_3 .content_container .content .kraken_fullscreen_image a, 6630.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link { 6631 color: #ffffff; 6632} 6633.section_3 .content_container .content .kraken_fullscreen_image a:hover, 6634.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link:hover { 6635 color: #5997e8; 6636} 6637.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link, 6638.section_3 .content_container .content .kraken_fullscreen_image div[data-micro-template="social_icons_container"] { 6639 margin-top: 5px; 6640} 6641.section_3 .content_container .content .kraken_fullscreen_image .left_container { 6642 display: flex; 6643 flex-direction: column; 6644 align-items: flex-start; 6645 justify-content: center; 6646 flex-basis: var(--kraken-fullscreen-image-left-size); 6647 padding: 40px 0; 6648 box-sizing: border-box; 6649 color: #ffffff; 6650} 6651@media (max-width: 810px) { 6652 .section_3 .content_container .content .kraken_fullscreen_image .left_container { 6653 order: -1; 6654 width: 100%; 6655 } 6656} 6657.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container { 6658 border-left: 6px solid; 6659 border-image: linear-gradient(to top,#817979,#5997e8) 1 100%; 6660 padding-left: 20px; 6661 box-sizing: border-box; 6662 margin-bottom: 20px; 6663} 6664@media (max-width: 1080px) { 6665 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container { 6666 margin-bottom: 10px; 6667 padding-left: 10px; 6668 } 6669} 6670.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2, 6671.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h4 { 6672 margin: 0; 6673 color: #ffffff; 6674} 6675.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6676 font-size: 3rem; 6677 line-height: 1.25em; 6678 margin-bottom: 10px; 6679} 6680@media (max-width: 810px) { 6681 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6682 font-size: 2.25rem; 6683 } 6684} 6685@media (max-width: 550px) { 6686 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6687 font-size: 2rem; 6688 } 6689} 6690.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h4 { 6691 text-transform: none; 6692} 6693.section_3 .content_container .content .kraken_fullscreen_image .left_container .left_content { 6694 display: flex; 6695 flex-direction: column; 6696 gap: 40px; 6697 margin-top: 40px; 6698} 6699.section_3 .content_container .content .kraken_fullscreen_image .left_container .left_content > div { 6700 display: flex; 6701 flex-direction: column; 6702 align-items: flex-start; 6703} 6704.section_3 .content_container .content .kraken_fullscreen_image .right_container { 6705 position: relative; 6706 flex-basis: var(--kraken-fullscreen-image-right-size); 6707 background: #100f0f; 6708 padding: 60px; 6709 box-sizing: border-box; 6710} 6711@media (max-width: 1080px) { 6712 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6713 padding: 60px 40px; 6714 } 6715} 6716@media (max-width: 810px) { 6717 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6718 width: 100%; 6719 } 6720} 6721@media (max-width: 550px) { 6722 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6723 padding: 40px 20px; 6724 } 6725} 6726</style><style>.section_3 { 6727 --kraken-fullscreen-image-shape-width: 225px; 6728 --kraken-fullscreen-image-shape-height: 125px; 6729 --kraken-fullscreen-image-height: auto; 6730 --kraken-fullscreen-image-overlay: rgba(255,255,255,0.85); 6731 --kraken-fullscreen-image-left-size: 45%; 6732 --kraken-fullscreen-image-right-size: 55%; 6733 height: var(--kraken-fullscreen-image-height); 6734 padding: 160px 0 80px 0; 6735 background: #100f0f; 6736} 6737@media (max-width: 1080px) { 6738 .section_3 { 6739 --kraken-fullscreen-image-shape-width: 170px; 6740 --kraken-fullscreen-image-shape-height: 85px; 6741 --kraken-fullscreen-image-left-size: 50%; 6742 --kraken-fullscreen-image-right-size: 50%; 6743 } 6744} 6745@media (max-width: 810px) { 6746 .section_3 { 6747 --kraken-fullscreen-image-left-size: 100%; 6748 --kraken-fullscreen-image-right-size: 100%; 6749 } 6750} 6751@media (max-width: 550px) { 6752 .section_3 { 6753 --kraken-fullscreen-image-shape-width: 120px; 6754 --kraken-fullscreen-image-shape-height: 65px; 6755 --kraken-fullscreen-image-overlay: rgba(255,255,255,0.9); 6756 } 6757} 6758@media (max-width: 810px) { 6759 .section_3 { 6760 padding: 40px 0; 6761 } 6762} 6763.section_3 .content_container .content { 6764 padding: 80px 0; 6765 box-sizing: border-box; 6766}
6767.section_3 .content_container .content .container_corner { 6768 position: absolute; 6769 z-index: 999; 6770 width: var(--kraken-fullscreen-image-shape-width); 6771 height: var(--kraken-fullscreen-image-shape-height); 6772} 6773.section_3 .content_container .content .container_corner.topleft { 6774 top: 0; 6775 left: 0; 6776 transform: rotate(180deg); 6777} 6778.section_3 .content_container .content .container_corner.bottomright { 6779 bottom: 0; 6780 right: 0; 6781} 6782.section_3 .content_container .content .container_corner.bottomleft { 6783 bottom: 0; 6784 left: 0; 6785 transform: scaleX(-1); 6786} 6787.section_3 .content_container .content .container_corner.topright { 6788 top: 0; 6789 right: 0; 6790 transform: scaleX(-1) rotate(180deg); 6791} 6792.section_3 .content_container .content .container_corner img, 6793.section_3 .content_container .content .container_corner picture, 6794.section_3 .content_container .content .container_corner svg { 6795 width: 100%; 6796 height: 100%; 6797 display: block; 6798} 6799.section_3 .content_container .content .container_corner svg { 6800 fill: #222; 6801} 6802.section_3 .content_container .content .background_image { 6803 position: absolute; 6804 top: 0; 6805 left: 0; 6806 width: 100%; 6807 height: 100%; 6808 z-index: -2; 6809} 6810.section_3 .content_container .content .background_image .background_overlay { 6811 position: absolute; 6812 top: 0; 6813 left: 0; 6814 width: 100%; 6815 height: 100%; 6816 background: linear-gradient(to bottom,var(--kraken-fullscreen-image-overlay),var(--kraken-fullscreen-image-overlay)); 6817 display: block; 6818} 6819.section_3 .content_container .content .background_image img, 6820.section_3 .content_container .content .background_image picture { 6821 width: 100%; 6822 height: 100%; 6823 object-fit: cover; 6824 object-position: center center; 6825} 6826.section_3 .content_container .content .kraken_fullscreen_image { 6827 display: flex; 6828 gap: 100px; 6829 height: 100%; 6830 align-items: center; 6831} 6832@media (max-width: 1080px) { 6833 .section_3 .content_container .content .kraken_fullscreen_image { 6834 gap: 50px; 6835 } 6836} 6837@media (max-width: 810px) { 6838 .section_3 .content_container .content .kraken_fullscreen_image { 6839 flex-direction: column; 6840 align-items: flex-start; 6841 gap: 0; 6842 } 6843} 6844.section_3 .content_container .content .kraken_fullscreen_image p { 6845 margin: 0; 6846} 6847.section_3 .content_container .content .kraken_fullscreen_image a, 6848.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link { 6849 color: #222; 6850} 6851.section_3 .content_container .content .kraken_fullscreen_image a:hover, 6852.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link:hover { 6853 color: #5997e8; 6854} 6855.section_3 .content_container .content .kraken_fullscreen_image a.kraken_link, 6856.section_3 .content_container .content .kraken_fullscreen_image div[data-micro-template="social_icons_container"] { 6857 margin-top: 5px; 6858} 6859.section_3 .content_container .content .kraken_fullscreen_image .left_container { 6860 display: flex; 6861 flex-direction: column; 6862 align-items: flex-start; 6863 justify-content: center; 6864 flex-basis: var(--kraken-fullscreen-image-left-size); 6865 padding: 40px 0; 6866 box-sizing: border-box; 6867 color: #222; 6868} 6869@media (max-width: 810px) { 6870 .section_3 .content_container .content .kraken_fullscreen_image .left_container { 6871 order: -1; 6872 width: 100%; 6873 margin-top: 50px; 6874 } 6875} 6876.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container { 6877 border-left: 6px solid; 6878 border-image: linear-gradient(to top,#817979,#5997e8) 1 100%; 6879 padding-left: 20px; 6880 box-sizing: border-box; 6881 margin-bottom: 20px; 6882} 6883@media (max-width: 1080px) { 6884 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container { 6885 margin-bottom: 10px; 6886 padding-left: 10px; 6887 } 6888} 6889.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2, 6890.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h4 { 6891 margin: 0; 6892 color: #222; 6893} 6894.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6895 font-size: 3rem; 6896 line-height: 1.25em; 6897 margin-bottom: 10px; 6898} 6899@media (max-width: 810px) { 6900 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6901 font-size: 2.25rem; 6902 } 6903} 6904@media (max-width: 550px) { 6905 .section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h2 { 6906 font-size: 2rem; 6907 } 6908} 6909.section_3 .content_container .content .kraken_fullscreen_image .left_container .title_container h4 { 6910 text-transform: none; 6911} 6912.section_3 .content_container .content .kraken_fullscreen_image .left_container .left_content { 6913 display: flex; 6914 flex-direction: column; 6915 gap: 40px; 6916 margin-top: 40px; 6917} 6918.section_3 .content_container .content .kraken_fullscreen_image .left_container .left_content > div { 6919 display: flex; 6920 flex-direction: column; 6921 align-items: flex-start; 6922} 6923.section_3 .content_container .content .kraken_fullscreen_image .right_container { 6924 position: relative; 6925 flex-basis: var(--kraken-fullscreen-image-right-size); 6926 background: #100f0f; 6927 padding: 60px; 6928 box-sizing: border-box; 6929} 6930@media (max-width: 1080px) { 6931 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6932 padding: 60px 40px; 6933 } 6934} 6935@media (max-width: 810px) { 6936 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6937 width: 100%; 6938 } 6939} 6940@media (max-width: 550px) { 6941 .section_3 .content_container .content .kraken_fullscreen_image .right_container { 6942 padding: 40px 20px; 6943 } 6944} 6945</style> 6946<section class="section_3" data-module="kraken_fullscreen_image" data-html="/custom/modules/kraken_fullscreen_image/module.html" data-json="/custom/modules/kraken_fullscreen_image/module.json" data-page="appointment" data-full-path="/appointment/"> 6947 <div class="content_container"> 6948 <div class="content"> 6949 6950 6951 <div class="background_image"> 6952 <picture><source srcset="/cache/sm-custom_images_kraken_fullscreen_image_contact_background.webp 420w, /cache/md-custom_images_kraken_fullscreen_image_contact_background.webp 640w, /cache/lg-custom_images_kraken_fullscreen_image_contact_background.webp 1024w, /cache/xl-custom_images_kraken_fullscreen_image_contact_background.webp 1366w, /cache/custom_images_kraken_fullscreen_image_contact_background.webp 1900w" sizes="(max-width: 420px) 100v
6952w, (max-width: 640px) 100vw, (max-width: 1024px) 100vw, (max-width: 1366px) 100vw, 1900px" data-lazy-picture="false" type="image/webp"><img alt="Dr. Aaron Tropmann Dr. Gary Oyster | Fluoride Treatment, Dental Fillings and Dental Cleanings" class="" src="/custom/images/kraken_fullscreen_image/contact_background.jpg" data-lazy-img="false" data-src="/custom/images/kraken_fullscreen_image/contact_background.jpg"></picture> 6953 6954 <div class="background_overlay"></div> 6955 6956 </div> 6957 6958 6959 6960 6961<div class="kraken_fullscreen_image"> 6962 <div class="left_container"> 6963 <div class="title_container"> 6964 6965 <h2 class="title"> 6966 Request an Appointment 6967 </h2> 6968 6969 6970 <h4 class="subtitle"> 6971 We will get back to you as soon as possible. 6972 </h4> 6973 6974 </div> 6975 <div class="left_content"> 6976 <div> 6977 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="5621 Departure Dr, Suite 109Raleigh, NC 27616" rel="noopener" target="_blank">5621 Departure Dr<span class="comma">,</span> Suite 109<br>Raleigh, NC 27616</a> 6978 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" class="kraken_link" aria-label="Get Directions" rel="noopener" target="_blank">Get Directions <i class="fas fa-chevron-right"></i></a> 6979</div> 6980 6981<div> 6982 <p>Call Us Today</p> 6983 <p>Existing Patients: <a href="tel:+19198762087" class="kraken_link tel_19198762087" aria-label="(919) 876-2087" data-click-call="0">(919) 876-2087 <i class="fas fa-chevron-right"></i></a></p> 6984 <p>New Patients: <a href="tel:+19192216014" class="kraken_link tel_19192216014" aria-label="(919) 221-6014" data-click-call="0">(919) 221-6014 <i class="fas fa-chevron-right"></i></a></p> 6985</div> 6986 6987<div> 6988 <p>Connect With Us</p> 6989 <div data-micro-template="social_icons_container"> 6990 <div data-micro-template="social_icons"> 6991 <a href="https://www.facebook.com/people/The-Office-of-Dr-Aaron-Tropmann-Dr-Gary-Oyster/61583686322230/" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 6992</div><div data-micro-template="social_icons"> 6993 <a href="https://www.instagram.com/aarontropmannddspa" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-instagram"></i></a> 6994</div><div data-micro-template="social_icons"> 6995 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 6996</div><div data-micro-template="social_icons"> 6997 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 6998</div> 6999</div> 7000</div> 7001 7002 </div> 7003 </div> 7004 <div class="right_container"> 7005 <div class="right_content"> 7006 <form data-submission-url="/system/processors/forms/standard_form_email/processor.php" data-db-only="NTgwMDAz::c1RuMVR1NXRHYk9kMldOT2lGUFlrZz09" data-append-location="" data-ad-grouping="" data-recaptcha-site-key="" data-recaptcha-secret-key="NzA5NzYy::WjBhZVhWeWRnc1dxUHNmVXFZU1N3dz09" data-recaptcha-processor="" data-recipients="NzU5NDY0::UzZyQnpuYUhtQVpuRVo5VjhaUVp0TXhDc3dPcmp6Q2hDMld6b3I5bU9Ma084VElHYlMrWDFHYjVNc0ZuQkx4ekNvaWR3N2tKUFFCY2NCdFd0VHp4amc9PQ==" data-cc="NTkxMzMy::UktzbTBuVENsNkZMdjExbjUySE5WQT09" data-ad-recipients="NTg5MjI5::ZFdLaFA3NlVtb25Yc3FpdU1rT1JvUT09" data-action="" data-subject="ODQzMjIy::cTJJRENKclB2MThUbnlNT01ua1FOZz09" data-dynamic="true" data-pdf="" data-type="custom" data-category="Appointment" data-google-conversion="" data-facebook-conversion="" data-hipaa="MzA2MjY5::dWlUUjJ2aER3d3g0SGNDMTlXRTltZz09" data-reply-to="NTI4MDI5::VldIVGFwdDBUK3dkTUlWWmVZSmllQT09"><div class="form-text" data-for="first"><label for="first"></label><input name="first" mcp-property="" id="first" data-email-label="" data-type="text" type="text" aria-label="input" placeholder="First Name" data-required="1" aria-required="true" data-readonly="" data-hidden="" value=""></div><div class="form-text" data-for="last"><label for="last"></label><input name="last" mcp-property="" id="last" data-email-label="" data-type="text" t
7006ype="text" aria-label="input" placeholder="Last Name" data-required="1" aria-required="true" data-readonly="" data-hidden="" value=""></div><div class="form-email"><label for="email"></label><input name="email" mcp-property="" id="email" data-email-label="" data-type="email" type="email" aria-label="input" placeholder="Email Address" data-required="1" aria-required="true" data-readonly="" data-hidden=""></div><div class="form-text" data-for="phone"><label for="phone"></label><input name="phone" mcp-property="" id="phone" data-email-label="" data-type="text" type="text" aria-label="input" placeholder="Phone" data-required="" aria-required="false" data-readonly="" data-hidden="" value=""></div><div class="form-date"><label for="date"></label><input name="date" mcp-property="" data-email-label="" type="text" aria-label="input" placeholder="Date" data-toggle="datepicker" data-start-date="" data-mon="" data-tue="" data-wed="" data-thu="" data-fri="" data-sat="1" data-sun="1" data-required="1" aria-required="true" data-readonly="" data-hidden=""></div><div class="form-textarea"><label for="textarea"></label><textarea name="textarea" mcp-property="" id="textarea" data-email-label="" data-type="textarea" type="textarea" aria-label="Message" placeholder="Message" data-required="1" aria-required="true" data-readonly="" data-hidden=""></textarea></div><div class="form-checkbox"><fieldset data-email-label="" name="sms" mcp-property="" data-type="checkbox" type="checkbox" value=""><legend>SMS Consent</legend><div><div class="checkbox_container"><input id="sms_yes" name="sms_yes" data-required="" aria-required="false" data-type="checkbox" type="checkbox" value="By providing my phone number, I consent to receive SMS text messages from Dr. Aaron Tropmann & Dr. Gary Oyster for appointment reminders, marketing messages, and general two-way communication. Msg frequency varies. Msg&data rates may apply. Reply HELP for support. Reply STOP to opt out. Please check our <a href='/privacy-policy/'>privacy policy</a> and <a href='/terms-conditions/'>terms and conditions</a> for details" aria-label="input"><label for="sms_yes">By providing my phone number, I consent to receive SMS text messages from Dr. Aaron Tropmann & Dr. Gary Oyster for appointment reminders, marketing messages, and general two-way communication. Msg frequency varies. Msg&data rates may apply. Reply HELP for support. Reply STOP to opt out. Please check our <a href="/privacy-policy/" aria-label="privacy policy">privacy policy</a> and <a href="/terms-conditions/" aria-label="terms and conditions">terms and conditions</a> for details</label></div></div></fieldset></div><input data-type="submit" type="submit" aria-label="input" placeholder="Submit Request"><div data-type="submit" type="submit" class="submit_container"><div class="button submit" data-dynamic="true" placeholder="Submit Request" role="button"><span>Submit Request</span></div></div><section data-form-name="appointment" data-type="system-lightbox-content"><div class="container"> 7007 <h3>Thank You!</h3> 7008 <p>We appreciate you taking the time to visit our site. We'll review your message and be in touch with you soon.</p> 7009 <div class="button" data-type="system-lightbox-close" role="button">Continue</div> 7010</div></section></form> 7011 </div> 7012 </div> 7013</div> 7014 7015 </div> 7016 <div class="sidebar" data-sidebar="false"> 7017 7018 </div> 7019 </div> 7020</section><style>.section_4 { 7021 padding: 60px 0; 7022} 7023.section_4 .content_container .content .kraken_footer .logo_container { 7024 display: flex; 7025 justify-content: center; 7026 margin-bottom: 60px; 7027} 7028@media (max-width: 550px) { 7029 .section_4 .content_container .content .kraken_footer .logo_container { 7030 margin-bottom: 20px; 7031 } 7032} 7033@media (max-width: 810px) { 7034 .section_4 .content_container .content .kraken_footer .logo_container .logo { 7035 width: min(100%,300px); 7036 } 7037} 7038.section_4 .content_container .content .kraken_footer .title { 7039 text-align: center; 7040} 7041.section_4 .content_container .content .kraken_footer .columns { 7042 display: grid; 7043 grid-template-columns: repeat(3,1fr); 7044 gap: 100px; 7045 align-items: center; 7046} 7047@media (max-width: 810px) { 7048 .section_4 .content_container .content .kraken_footer .columns { 7049 gap: 40px; 7050 } 7051} 7052@media (max-width: 550px) { 7053 .section_4 .content_container .content .kraken_footer .columns { 7054 grid-template-columns: repeat(1,1fr); 7055 gap: 20px; 7056 } 7057} 7058.section_4 .content_container .content .kraken_footer .columns .left, 7059.section_4 .content_container .content .kraken_footer .columns .center, 7060.section_4 .content_container .content .kraken_footer .columns .right { 7061 text-align: center; 7062} 7063.section_4 .content_container .content .kraken_footer .columns .left h4, 7064.section_4 .content_container .content .kraken_footer .columns .center h4, 7065.section_4 .content_container .content .kraken_footer .columns .right h4 { 7066 color: #222; 7067 margin-top: 10px; 7068} 7069.section_4 .content_container .content .kraken_footer .columns .left a, 7070.section_4 .content_container .content .kraken_footer .columns .center a, 7071.section_4 .content_container .content .kraken_footer .columns .right a { 7072 font-size: 18px; 7073} 7074@media (max-width: 1080px) { 7075 .section_4 .content_container .content .kraken_footer .columns .left a, 7076 .section_4 .content_container .content .kraken_footer .columns .center a, 7077 .section_4 .content_container .content .kraken_footer .columns .right a { 7078 font-size: 16px; 7079 } 7080} 7081.section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"], 7082.section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"], 7083.section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] { 7084 justify-content: center; 7085} 7086.section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"] a, 7087.section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"] a, 7088.section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] a { 7089 font-size: 1.5rem; 7090} 7091@media (max-width: 1080px) { 7092 .section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"] a, 7093 .section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"] a, 7094 .section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] a { 7095 font-size: 1.25rem; 7096 } 7097} 7098.section_4 .content_container .content .kraken_footer .to_top_container { 7099 display: flex; 7100 flex-direction: column; 7101 align-items: center; 7102 justify-content: center; 7103 margin-top: 60px; 7104} 7105@media (max-width: 810px) { 7106 .section_4 .content_container .content .kraken_footer .to_top_container { 7107 margin-top: 30px; 7108 } 7109} 7110.section_4 .content_container .content .kraken_footer .to_top_container p { 7111 margin: 10px 0 0 0; 7112 text-transform: uppercase; 7113} 7114.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button { 7115 cursor: pointer; 7116 background: #5997e8; 7117 padding: 20px; 7118 box-sizing: border-box; 7119 font-size: 1.75rem; 7120 width: 60px; 7121 height: 60px; 7122 display: flex; 7123 justify-content: center; 7124 align-items: center; 7125 border: 1px solid #817979; 7126 color: #817979; 7127 transition: all 0.3s; 7128} 7129@media (max-width: 810px) { 7130 .section_4 .content_container .content .kraken_footer .to_top_container .to_top_button { 7131 width: 50px; 7132 height: 50px; 7133 font-size: 1.5rem; 7134 } 7135} 7136.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover { 7137 background: #817979; 7138 color: #ffffff; 7139} 7140.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover i, 7141.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover svg {
7142 color: #ffffff; 7143} 7144.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button i, 7145.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button svg { 7146 color: #817979; 7147 transition: all 0.3s; 7148} 7149</style><style>.section_4 { 7150 padding: 30px 0; 7151} 7152.section_4 .content_container .content .kraken_footer .logo_container { 7153 display: flex; 7154 justify-content: center; 7155 margin-bottom: 40px; 7156} 7157@media (max-width: 550px) { 7158 .section_4 .content_container .content .kraken_footer .logo_container { 7159 margin-bottom: 20px; 7160 } 7161} 7162.section_4 .content_container .content .kraken_footer .logo_container .logo { 7163 width: min(100%,280px); 7164} 7165@media (max-width: 810px) { 7166 .section_4 .content_container .content .kraken_footer .logo_container .logo { 7167 width: min(100%,200px); 7168 } 7169} 7170.section_4 .content_container .content .kraken_footer .title { 7171 text-align: center; 7172} 7173.section_4 .content_container .content .kraken_footer .columns { 7174 display: grid; 7175 grid-template-columns: repeat(3,1fr); 7176 gap: 100px; 7177 align-items: center; 7178} 7179@media (max-width: 810px) { 7180 .section_4 .content_container .content .kraken_footer .columns { 7181 gap: 40px; 7182 } 7183} 7184@media (max-width: 550px) { 7185 .section_4 .content_container .content .kraken_footer .columns { 7186 grid-template-columns: repeat(1,1fr); 7187 gap: 20px; 7188 } 7189} 7190.section_4 .content_container .content .kraken_footer .columns .left, 7191.section_4 .content_container .content .kraken_footer .columns .center, 7192.section_4 .content_container .content .kraken_footer .columns .right { 7193 text-align: center; 7194} 7195.section_4 .content_container .content .kraken_footer .columns .left h4, 7196.section_4 .content_container .content .kraken_footer .columns .center h4, 7197.section_4 .content_container .content .kraken_footer .columns .right h4 { 7198 color: #222; 7199 margin-top: 10px; 7200} 7201.section_4 .content_container .content .kraken_footer .columns .left a, 7202.section_4 .content_container .content .kraken_footer .columns .center a, 7203.section_4 .content_container .content .kraken_footer .columns .right a { 7204 font-size: 18px; 7205} 7206@media (max-width: 1080px) { 7207 .section_4 .content_container .content .kraken_footer .columns .left a, 7208 .section_4 .content_container .content .kraken_footer .columns .center a, 7209 .section_4 .content_container .content .kraken_footer .columns .right a { 7210 font-size: 16px; 7211 } 7212} 7213.section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"], 7214.section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"], 7215.section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] { 7216 justify-content: center; 7217} 7218.section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"] a, 7219.section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"] a, 7220.section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] a { 7221 font-size: 1.5rem; 7222} 7223@media (max-width: 1080px) { 7224 .section_4 .content_container .content .kraken_footer .columns .left div[data-micro-template="social_icons_container"] a, 7225 .section_4 .content_container .content .kraken_footer .columns .center div[data-micro-template="social_icons_container"] a, 7226 .section_4 .content_container .content .kraken_footer .columns .right div[data-micro-template="social_icons_container"] a { 7227 font-size: 1.25rem; 7228 } 7229} 7230.section_4 .content_container .content .kraken_footer .areas { 7231 text-align: center; 7232 margin: 0 auto; 7233} 7234.section_4 .content_container .content .kraken_footer .to_top_container { 7235 display: flex; 7236 flex-direction: column; 7237 align-items: center; 7238 justify-content: center; 7239 margin-top: 40px; 7240} 7241@media (max-width: 810px) { 7242 .section_4 .content_container .content .kraken_footer .to_top_container { 7243 margin-top: 30px; 7244 } 7245} 7246.section_4 .content_container .content .kraken_footer .to_top_container p { 7247 margin: 10px 0 0 0; 7248 text-transform: uppercase; 7249} 7250.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button { 7251 cursor: pointer; 7252 background: #5997e8; 7253 padding: 20px; 7254 box-sizing: border-box; 7255 font-size: 1.75rem; 7256 width: 60px; 7257 height: 60px; 7258 display: flex; 7259 justify-content: center; 7260 align-items: center; 7261 border: 1px solid #817979; 7262 color: #817979; 7263 transition: all 0.3s; 7264} 7265@media (max-width: 810px) { 7266 .section_4 .content_container .content .kraken_footer .to_top_container .to_top_button { 7267 width: 50px; 7268 height: 50px; 7269 font-size: 1.5rem; 7270 } 7271} 7272.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover { 7273 background: #817979; 7274 color: #ffffff; 7275} 7276.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover i, 7277.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button:hover svg {
7278 color: #ffffff; 7279} 7280.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button i, 7281.section_4 .content_container .content .kraken_footer .to_top_container .to_top_button svg { 7282 color: #ffffff; 7283 transition: all 0.3s; 7284} 7285</style> 7286<section class="section_4" data-module="kraken_footer" data-html="/custom/modules/kraken_footer/module.html" data-json="/custom/modules/kraken_footer/module.json" data-page="appointment" data-full-path="/appointment/"> 7287 <div class="content_container"> 7288 <div class="content"> 7289 7290 <div class="kraken_footer"> 7291 <div class="logo_container"> 7292 <div class="logo"> 7293 <picture><source srcset="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-srcset="/cache/sm-custom_images_logofooter.webp 420w, /cache/md-custom_images_logofooter.webp 640w, /cache/custom_images_logofooter.webp 768w" sizes="(max-width: 420px) 100vw, (max-width: 640px) 100vw, 768px" data-lazy-picture="true" type="image/webp"><img alt="The image displays a logo with the text Company Name and below it, the phrase SUBTITLE HERE. It features a stylized graphic resembling an abstract shape or explosion in shades of gold and black." class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=" data-lazy-img="true" data-src="/custom/images/logofooter.png"></picture> 7294 7295 </div> 7296 7297 </div> 7298 7299 7300 <div class="columns"> 7301 <div class="left"> 7302 7303 <div data-micro-template="social_icons_container"> 7304 <div data-micro-template="social_icons"> 7305 <a href="https://www.facebook.com/people/The-Office-of-Dr-Aaron-Tropmann-Dr-Gary-Oyster/61583686322230/" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-facebook-f"></i></a> 7306</div><div data-micro-template="social_icons"> 7307 <a href="https://www.instagram.com/aarontropmannddspa" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-instagram"></i></a> 7308</div><div data-micro-template="social_icons"> 7309 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="link" rel="noopener" target="_blank"><i class="fab fa-google"></i></a> 7310</div><div data-micro-template="social_icons"> 7311 <a href="/blog/" aria-label="link"><i class="fas fa-blog"></i></a> 7312</div> 7313</div> 7314 7315 7316 <h4>Connect with us</h4> 7317 7318 </div> 7319 <div class="center"> 7320 7321 <a href="https://maps.app.goo.gl/XYFMb7bDQX8NfDBj7" aria-label="5621 Departure Dr, Suite 109Raleigh, NC 27616" rel="noopener" target="_blank">5621 Departure Dr<span class="comma">,</span> Suite 109<br>Raleigh, NC 27616</a> 7322 7323 7324 <h4>Our Location</h4> 7325 7326 </div> 7327 <div class="right"> 7328 7329 <div data-micro-template="phone_dynamic"> 7330 7331 <div class="tracking_number"><a href="tel:+19192216014" aria-label="New Patients: (919) 221-6014" class="tel_19192216014" data-click-call="0"><span class="phone_label">New Patients:</span> (919) 221-6014</a></div> 7332 <div class="existing_number"><a href="tel:+19198762087" aria-label="Existing Patients: (919) 876-2087" class="tel_19198762087" data-click-call="0"><span class="phone_label">Existing Patients:</span> (919) 876-2087</a></div> 7333 7334 7335</div> 7336 FAX: (919) 981-0382 7337 7338 7339 <h4>Call Us Today</h4> 7340 7341 </div> 7342 </div> 7343 7344 7345 <p class="areas"><i>We serve the Raleigh-Durham area, including Cary, Apex, Chapel Hill, Morrisville, Wake Forest, North Hills, North Raleigh and more.</i></p> 7346 <div class="to_top_container"> 7347 <div class="to_top_button"> 7348 <i class="fas fa-chevron-up"></i> 7349 </div> 7350 7351 <p>Back to top</p> 7352 7353 </div> 7354 7355</div> 7356 7357 </div> 7358 <div class="sidebar" data-sidebar="false"> 7359 7360 </div> 7361 </div> 7362</section>
7362<script> 7363 javascript_deferred.prototype[get_deferred_id()] = function () { 7364 if(document.querySelector('.section_4 .to_top_button')) { 7365 document.querySelector('.section_4 .to_top_button').addEventListener('click', function(e) { 7366 document.body.scrollTop = 0; 7367 document.documentElement.scrollTop = 0; 7368 }) 7369 } 7370 } 7371</script>
7371<style>.section_5 { 7372 padding: 40px 40px; 7373} 7374.section_5 .content_container { 7375 max-width: 100%; 7376 justify-content: center; 7377 display: flex; 7378 margin-left: auto; 7379 margin-right: auto; 7380 box-sizing: border-box; 7381} 7382.section_5 .content_container .content { 7383 width: 100%; 7384} 7385.section_5 .content_container .content h2 { 7386 text-align: center; 7387} 7388.section_5 .content_container .content h3 { 7389 font-size: 1.5rem; 7390} 7391@media (max-width: 640px) { 7392 .section_5 { 7393 padding: 20px 20px; 7394 } 7395} 7396</style><style>.section_5 { 7397 background-color: #100f0f; 7398 padding: 0px; 7399 overflow: visible; 7400} 7401.section_5 .copyright { 7402 text-align: center; 7403 font-size: 0.75rem; 7404 color: #ffffff; 7405 padding: 30px 20px 20px; 7406 box-sizing: border-box; 7407 display: flex; 7408 width: min(100%,1300px); 7409 margin: 0 auto; 7410 margin-bottom: 0; 7411 align-items: center; 7412 gap: 0 20px; 7413} 7414@media (max-width: 550px) { 7415 .section_5 .copyright { 7416 flex-direction: column; 7417 } 7418} 7419.section_5 .copyright .copyright_container { 7420 display: flex; 7421 font-size: 1rem; 7422 gap: 0 10px; 7423 width: 100%; 7424 flex-wrap: wrap; 7425} 7426@media (max-width: 810px) { 7427 .section_5 .copyright .copyright_container { 7428 flex-direction: column; 7429 font-size: .9rem; 7430 } 7431} 7432@media (max-width: 550px) { 7433 .section_5 .copyright .copyright_container > div { 7434 margin: 5px 0; 7435 } 7436} 7437.section_5 .copyright .copyright_container > div:nth-of-type(2) { 7438 margin-left: auto; 7439} 7440@media (max-width: 550px) { 7441 .section_5 .copyright .copyright_container > div:nth-of-type(2) { 7442 margin-left: initial; 7443 } 7444} 7445.section_5 .copyright .copyright_container > div:last-of-type { 7446 text-align: center; 7447 flex-basis: 100%; 7448} 7449.section_5 .copyright div:first-of-type { 7450 margin-bottom: 0px; 7451} 7452@media (max-width: 810px) { 7453 .section_5 .copyright div:first-of-type { 7454 text-align: right; 7455 } 7456} 7457@media (max-width: 550px) { 7458 .section_5 .copyright div:first-of-type { 7459 text-align: center; 7460 } 7461} 7462</style> 7463<section class="section_5" data-module="content" data-html="/custom/modules/copyright/module.html" data-json="" data-page="appointment" data-full-path="/appointment/"> 7464 <div class="content_container"> 7465 <div class="content"> 7466 <div class="copyright"> 7467 <div class="copyright_container"><div> 7468 © 2026 Dr. Aaron Tropmann & Dr. Gary Oyster . 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> 7469</div> 7470<div> 7471 <a href="https://doctorsinternet.com/dentistry/" aria-label="Dental Marketing" rel="noopener" target="_blank">Dental Marketing</a> 7472</div> 7473<div> 7474 Raleigh Dentist | <a href="/dentist-near-me/" aria-label="Dentist Near Me">Dentist Near Me</a> | Dental Services 27616 | <a href="/dentist-in-raleigh/" aria-label="Dentist in Raleigh">Dentist in Raleigh</a> | Emergency Dentist in Raleigh | <a href="/pediatric-dentist-in-raleigh/" aria-label="Pediatric Dentist in Raleigh">Pediatric Dentist in Raleigh</a> | <a href="/cosmetic-dentist-in-raleigh/" aria-label="Cosmetic Dentist in Raleigh">Cosmetic Dentist in Raleigh</a> | <a href="/botox-in-raleigh/" aria-label="Botox in Raleigh">Botox in Raleigh</a> 7475</div></div> 7476</div> 7477 </div> 7478 </div> 7479</section><style>section { 7480 overflow: hidden; 7481} 7482.fade_in { 7483 opacity: 0; 7484} 7485.fade_in.animated { 7486 opacity: 1; 7487 transition: opacity 0.5s; 7488} 7489.slide_in_left { 7490 opacity: 0; 7491 transform: translateX(-50px); 7492} 7493.slide_in_left.animated { 7494 opacity: 1; 7495 transform: translateX(0); 7496 transition: opacity 0.5s, transform 0.5s; 7497} 7498.slide_in_right { 7499 opacity: 0; 7500 transform: translateX(50px); 7501} 7502.slide_in_right.animated { 7503 opacity: 1; 7504 transform: translateX(0); 7505 transition: opacity 0.5s, transform 0.5s; 7506} 7507.slide_in_bottom { 7508 opacity: 0; 7509 transform: translateY(50px); 7510} 7511.slide_in_bottom.animated { 7512 opacity: 1; 7513 transform: translateY(0); 7514 transition: opacity 0.5s, transform 0.5s; 7515} 7516.slide_in_top { 7517 opacity: 0; 7518 transform: translateY(-50px); 7519} 7520.slide_in_top.animated { 7521 opacity: 1; 7522 transform: translateY(0); 7523 transition: opacity 0.5s, transform 0.5s; 7524} 7525.scale_up { 7526 transform: scale(0.5); 7527 opacity: 0; 7528} 7529.scale_up.animated { 7530 opacity: 1; 7531 transform: scale(1); 7532 transition: transform 0.5s; 7533} 7534.sequential_animation.animated > *.animated { 7535 opacity: 1; 7536 transform: translate(0,0); 7537} 7538.sequential_animation.scale_up { 7539 opacity: 1; 7540 transform: none; 7541} 7542.sequential_animation.scale_up > * { 7543 opacity: 0; 7544 transform: scale(0.5); 7545 transition: transform 0.5s; 7546} 7547.sequential_animation.scale_up.animated > *.animated { 7548 opacity: 1; 7549 transform: scale(1); 7550} 7551.sequential_animation.slide_in_bottom { 7552 opacity: 1; 7553 transform: none; 7554} 7555.sequential_animation.slide_in_bottom > * { 7556 opacity: 0; 7557 transform: translateY(50px); 7558} 7559.sequential_animation.slide_in_bottom.animated > *.animated { 7560 opacity: 1; 7561 transform: translate(0,0); 7562 transition: opacity 0.5s, transform 0.5s; 7563} 7564.sequential_animation.slide_in_top { 7565 opacity: 1; 7566 transform: none; 7567} 7568.sequential_animation.slide_in_top > * { 7569 opacity: 0; 7570 transform: translateY(-50px); 7571} 7572.sequential_animation.slide_in_top.animated > *.animated { 7573 opacity: 1; 7574 transform: translate(0,0); 7575 transition: opacity 0.5s, transform 0.5s; 7576} 7577.sequential_animation.slide_in_left { 7578 opacity: 1; 7579 transform: none; 7580} 7581.sequential_animation.slide_in_left > * { 7582 opacity: 0; 7583 transform: translateX(-50px); 7584} 7585.sequential_animation.slide_in_left.animated > *.animated { 7586 opacity: 1; 7587 transform: translate(0,0); 7588 transition: opacity 0.5s, transform 0.5s; 7589} 7590.sequential_animation.slide_in_right { 7591 opacity: 1; 7592 transform: none; 7593} 7594.sequential_animation.slide_in_right > * { 7595 opacity: 0; 7596 transform: translateX(50px); 7597} 7598.sequential_animation.slide_in_right.animated > *.animated { 7599 opacity: 1; 7600 transform: translate(0,0); 7601 transition: opacity 0.5s, transform 0.5s; 7602} 7603.no_animation { 7604 opacity: 1 !important; 7605 transform: none !important; 7606} 7607</style>
7607<script> 7608 javascript.prototype[get_id()] = function() { 7609 let observer = new IntersectionObserver((entires, observer) => { 7610 entires.forEach((entry) => { 7611 if(entry.target.classList.contains('sequential_animation') && entry.isIntersecting) { 7612 entry.target.classList.add('animated'); 7613 var sequential = entry.target.children; 7614 Array.from(sequential).forEach(function(animated_element, i) { 7615 setTimeout(function() { 7616 animated_element.classList.add('animated'); 7617 }, 200 + (i * 100)); 7618 }); 7619 } 7620 else if(entry.isIntersecting) { 7621 entry.target.classList.add('animated'); 7622 } 7623 else { 7624 7625 } 7626 }) 7627 }, { 7628 rootMargin: '0px 0px -25% 0px', 7629 threshold: 0 7630 }); 7631 7632 document.querySelectorAll('.animate').forEach(function(el) { 7633 observer.observe(el); 7634 }) 7635 } 7636</script>
7636<style></style><style>body section[data-type="system-lightbox-container"].show { 7637 background: rgba(16,15,15,0.8); 7638} 7639body section[data-type="system-lightbox-container"].show section[data-form-name="contact"], 7640body section[data-type="system-lightbox-container"].show section[data-form-name="appointment"] { 7641 display: flex; 7642 align-items: center; 7643 justify-content: center; 7644 flex-basis: 100%; 7645} 7646body section[data-type="system-lightbox-container"].show section[data-form-name="contact"] .container, 7647body section[data-type="system-lightbox-container"].show section[data-form-name="appointment"] .container { 7648 padding: 20px; 7649 box-sizing: border-box; 7650} 7651body section[data-type="system-lightbox-container"].show section[data-form-name="contact"] .container h3, 7652body section[data-type="system-lightbox-container"].show section[data-form-name="contact"] .container p, 7653body section[data-type="system-lightbox-container"].show section[data-form-name="appointment"] .container h3, 7654body section[data-type="system-lightbox-container"].show section[data-form-name="appointment"] .container p { 7655 color: #fff; 7656} 7657</style> 7658 7659 <section data-type="system-lightbox-container"></section> 7660
7660<script src="/system/js/jquery-3.5.1.min.js"></script>
7660 7661
7661<script src="https://kit.fontawesome.com/10cd9403cd.js" async></script>
7661 7662
7662<script> 7663 var scroll_disabled = false; 7664 var extras_loaded = false; 7665 var form_button_lock = false; 7666 var click_lock = false; 7667 var _userway_config = { position: 5, color: "#053e67", language: "en", account: "72Ve6c8l9z" }; 7668 var timeout = false; 7669 var window_width = null; 7670 var window_height = null; 7671 var google_conversion = false; 7672 var facebook_conversion = false; 7673 var file_field_counter = 0; 7674 const api = 'https://referrals.di-api.com/'; 7675 var newSession = false; 7676 var newVisitor = false; 7677 let socket = null; 7678 const pageID = uuid(); 7679 7680 function gtag(arguments) { 7681 dataLayer.push(arguments); 7682 } 7683 7684 google_tracking = { 7685 gtag: function () { 7686 dataLayer.push(arguments); 7687 } 7688 }; 7689 7690 facebook_tracking = { 7691 fbq: function () { 7692 n.queue.push(arguments); 7693 } 7694 }; 7695 7696 function Socket(visitorId, sessionId, pageId) { 7697 const ws = "wss://socket.di-api.com/analytics" 7698 this.promise = new Promise((resolve, reject) => { 7699 this.visitorId = visitorId; 7700 this.sessionId = sessionId; 7701 this.pageId = pageId; 7702 this.connection = null; 7703 7704 this.attempts = 0; 7705 this.interval = 1000; 7706 this.has_reconnect = false; 7707 var multiplier = 1.25; 7708 7709 var connect = () => { 7710 this.connection = new WebSocket(`${ws}?visitor_id=${visitorId}&session_id=${sessionId}&page_id=${pageId}`); 7711 this.attempts++; 7712 7713 this.connection.onopen = (e) => { 7714 {/* console.log(this.connection); 7715 console.log(e); */} 7716 this.attempts = 0; 7717 this.interval = 1000; 7718 console.log('Connection established'); 7719 7720 resolve(1) 7721 } 7722 7723 this.connection.onclose = (e) => { 7724 console.log('Connection closed'); 7725 this.connection = null; 7726 7727 if (this.has_reconnect) { 7728 this.interval *= multiplier; 7729 setTimeout(function () { 7730 reconnect(); 7731 }, this.interval); 7732 } 7733 } 7734 7735 this.connection.onerror = (e) => { 7736 console.log('%cConnection error ', 'color: red; display: block; width: 100%;', e); 7737 this.connection.close(); 7738 resolve(-1) 7739 } 7740 7741 this.connection.onmessage = (e) => { 7742 if (e.data) { 7743 7744 } 7745 } 7746 } 7747 7748 var reconnect = () => { 7749 if (this.connection === null && this.id !== null) { 7750 console.log('Reconnecting...') 7751 connect(ws); 7752 return 1; 7753 } else { 7754 console.log('Needs to Reconnect...') 7755 return -1; 7756 } 7757 } 7758 7759 7760 if (this.id !== null) { 7761 connect() 7762 } 7763 }) 7764 } 7765 7766 Socket.prototype.kill = function () { 7767 if (this.connection !== null) { 7768 if (this.connection.readyState) { 7769 this.has_reconnect = false; 7770 this.connection.close(); 7771 return 1; 7772 } else { 7773 return -1; 7774 } 7775 } else { 7776 return -1; 7777 } 7778 } 7779 7780 Socket.prototype.get_state = function () { 7781 if (this.connection !== null) { 7782 return this.connection.readyState; 7783 } else { 7784 return null; 7785 } 7786 } 7787 7788 function get_visitor_id() { 7789 let visitorID = localStorage.getItem('visitorID'); 7790 if (!visitorID) { 7791 newVisitor = true; 7792 visitorID = uuid(); 7793 localStorage.setItem('visitorID', visitorID); 7794 } 7795 return visitorID; 7796 } 7797 7798 function get_session_id() { 7799 let sessionID = sessionStorage.getItem('sessionID'); 7800 if (!sessionID) { 7801 newSession = true; 7802 sessionID = uuid(); 7803 sessionStorage.setItem('sessionID', sessionID); 7804 } 7805 return sessionID; 7806 } 7807 7808 function get_tracking_permitted() { 7809 const consent = window.DiPrivacy.consent ?? null; 7810 if (consent === 'granted') { 7811 return 1; 7812 } else if (consent === 'denied') { 7813 return 0; 7814 } else { 7815 return null; 7816 } 7817 } 7818 7819 7820 function is_valid_interaction_type(type) { 7821 // Array of patterns (including static strings as patterns) 7822 const patterns = [ 7823 /^call$/, // Exact match of 'call' 7824 /^click$/, // Exact match of 'click' 7825 /^form_submission$/, // Exact match of 'form_submission' 7826 /^landing$/, // Exact match of 'landing' 7827 /^page$/, // Exact match of 'page' 7828 /^question_\d+$/, // Matches 'question_' followed by one or more digits 7829 /^tracking_permitted$/, // Exact match of 'tracking_permitted' 7830 ]; 7831 7832 // Iterate over the patterns and check if the type matches any of them 7833 for (let pattern of patterns) { 7834 if (pattern.test(type)) { 7835 return true; 7836 } 7837 } 7838 7839 return false; 7840 } 7841 7842 function track_submit(elem) { 7843 return new Promise((resolve, reject) => { 7844 7845 const visitorID = get_visitor_id(); 7846 const sessionID = get_session_id() 7847 7848 let aios_module = elem.closest('[data-mid]'); 7849 let aios_content = elem.closest('[data-cid]') 7850
7851 if (aios_module instanceof jQuery) { 7852 if (aios_module.length) { 7853 aios_module = aios_module[0] 7854 } else { 7855 aios_module = null; 7856 } 7857 } 7858 7859 if (aios_content instanceof jQuery) { 7860 if (aios_content.length) { 7861 aios_content = aios_content[0]; 7862 } else { 7863 aios_content = null; 7864 } 7865 } 7866 7867 7868 7869 let request = {}; 7870 request.action = 'page_interaction'; 7871 request.type = 'form_submission'; 7872 request.visitor_id = visitorID; 7873 request.session_id = sessionID; 7874 request.page_id = pageID; 7875 request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null; 7876 request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null; 7877 request.domain = window.location.hostname; 7878 request.page = window.location.pathname; 7879 request.href = null; 7880 request.source = (get_cookie('source') ? get_cookie('source') : null); 7881 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 7882 request.location = (get_cookie('location') ? get_cookie('location') : null); 7883 request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null; 7884 request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null; 7885 request.referrer = document.referrer; 7886 request.tracking_permitted = get_tracking_permitted(); 7887 7888 if (get_tracking_permitted() === 1) { } 7889 else { 7890 request.visitor_id = null; 7891 if (document.referrer) { 7892 request.referrer = (new URL(document.referrer)).hostname || null; 7893 } 7894 } 7895 7896 7897 7898 // console.log(request) 7899 7900 let xhr = new XMLHttpRequest(); 7901 xhr.open('POST', api); 7902 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 7903 xhr.onreadystatechange = function () { 7904 // console.log(xhr.readyState) 7905 if (xhr.readyState == 2) { 7906 resolve(true); 7907 } 7908 if (xhr.readyState == 4) { 7909 if (xhr.status == 200) { 7910 } else { 7911 } 7912 } 7913 } 7914 xhr.onerror = function () { 7915 reject(xhr.status); 7916 } 7917 xhr.send(encodeURI('action=' + JSON.stringify(request))); 7918 }); 7919 } 7920 7921 function track_click(elem) { 7922 return new Promise((resolve, reject) => { 7923 7924 const visitorID = get_visitor_id(); 7925 const sessionID = get_session_id() 7926 7927 let click_type = 'click'; 7928 let aios_module = elem.closest('[data-mid]'); 7929 let aios_content = elem.closest('[data-cid]') 7930 7931 if (aios_module instanceof jQuery) { 7932 if (aios_module.length) { 7933 aios_module = aios_module[0] 7934 } else { 7935 aios_module = null; 7936 } 7937 } 7938 7939 if (aios_content instanceof jQuery) { 7940 if (aios_content.length) { 7941 aios_content = aios_content[0]; 7942 } else { 7943 aios_content = null; 7944 } 7945 } 7946 7947 if (elem.hasAttribute('href')) { 7948 if (elem.getAttribute('href').indexOf('tel:') > -1) { 7949 click_type = 'call' 7950 } 7951 } 7952 7953 if (elem.tagName === 'BUTTON') { 7954 if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) { 7955 const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event'); 7956 if (elem_type === 'consent_accept' || elem_type === 'consent_reject') { 7957 click_type = 'tracking_permitted'; 7958 } else if (is_valid_interaction_type(elem_type)) { 7959 click_type = elem_type; 7960 } 7961 } 7962 } 7963 7964 if (elem.hasAttribute('data-click-tracking')) { 7965 if (elem.hasAttribute('data-click-tracking-type') || elem.hasAttribute('data-event')) { 7966 const elem_type = elem.getAttribute('data-click-tracking-type') || elem.getAttribute('data-event'); 7967 if (is_valid_interaction_type(elem_type)) { 7968 click_type = elem_type; 7969 } 7970 } 7971 } 7972 7973 let request = {}; 7974 request.action = 'page_interaction'; 7975 request.type = click_type; 7976 request.visitor_id = visitorID; 7977 request.session_id = sessionID; 7978 request.page_id = pageID; 7979 request.mid = (aios_module !== null) ? aios_module.getAttribute('data-mid') : null; 7980 request.cid = (aios_content !== null) ? aios_content.getAttribute('data-cid') : null; 7981 request.domain = window.location.hostname; 7982 request.page = window.location.pathname; 7983 request.href = elem.getAttribute('href'); 7984 request.source = (get_cookie('source') ? get_cookie('source') : null); 7985 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 7986 request.location = (get_cookie('location') ? get_cookie('location') : null); 7987 request.category = (aios_content !== null) ? aios_content.getAttribute('data-category') : null; 7988 request.subcategory = (aios_content !== null) ? aios_content.getAttribute('data-subcategory') : null; 7989 request.referrer = document.referrer; 7990 request.tracking_permitted = get_tracking_permitted(); 7991 7992 if (get_tracking_permitted() === 1) { } 7993 else { 7994 request.visitor_id = null; 7995 if (document.referrer) { 7996 request.referrer = (new URL(document.referrer)).hostname || null; 7997 } 7998 } 7999 8000 console.log(request); 8001 8002 let xhr = new XMLHttpRequest(); 8003 xhr.open('POST', api); 8004 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 8005 xhr.onreadystatechange = function () { 8006 // console.log(xhr.readyState) 8007 if (xhr.readyState == 2) { 8008 resolve(true); 8009 } 8010 if (xhr.readyState == 4) { 8011 if (xhr.status == 200) { 8012 } else { 8013 } 8014 } 8015 } 8016 xhr.onerror = function () { 8017 reject(xhr.status); 8018 } 8019 xhr.send(encodeURI('action=' + JSON.stringify(request))); 8020 }); 8021 } 8022 8023 function track_load() { 8024 return new Promise((resolve, reject) => { 8025 const visitorID = get_visitor_id(); 8026 const sessionID = get_session_id() 8027 {/* pageID = uuid(); */ } 8028 8029 let request = {}; 8030 request.action = 'page_interaction'; 8031 request.type = (newSession) ? 'landing' : 'page'; 8032 request.visitor_id = visitorID; 8033 request.session_id = sessionID; 8034 request.page_id = pageID; 8035 request.domain = window.location.hostname; 8036 request.page = window.location.pathname; 8037 request.source = (get_cookie('source') ? get_cookie('source') : null); 8038 request.campaign = (get_cookie('campaign') ? get_cookie('campaign') : null); 8039 request.location = (get_cookie('location') ? get_cookie('location') : null); 8040 request.referrer = document.referrer; 8041 request.tracking_permitted = get_tracking_permitted(); 8042 8043 if (get_tracking_permitted() === 1) { } 8044 else { 8045 request.visitor_id = null; 8046 if (document.referrer) { 8047 request.referrer = (new URL(document.referrer)).hostname || null; 8048 } 8049 } 8050 8051 let xhr = new XMLHttpRequest(); 8052 xhr.open('POST', api); 8053 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 8054 xhr.onreadystatechange = function () { 8055 if (xhr.readyState == 2) { 8056 resolve(true); 8057 } 8058 if (xhr.readyState == 4) { 8059 if (xhr.status == 200) { 8060 } else { 8061 } 8062 } 8063 } 8064 xhr.onerror = function () { 8065 reject(xhr.status); 8066 } 8067 xhr.send(encodeURI('action=' + JSON.stringify(request))); 8068 }); 8069 } 8070 8071 function deferred_websocket() { 8072 return new Promise((resolve, reject) => { 8073 let visitorID = get_visitor_id(); 8074 const sessionID = get_session_id(); 8075 8076 if (get_tracking_permitted() !== 1) { 8077 visitorID = null; 8078 } 8079 8080 window.addEventListener('scroll', function () { 8081 if (socket === null) { 8082 socket = new Socket(visitorID, sessionID, pageID); 8083 resolve(true); 8084 } 8085 }); 8086 8087 window.addEventListener('mousemove', function () { 8088 if (socket === null) { 8089 socket = new Socket(visitorID, sessionID, pageID); 8090 resolve(true); 8091 } 8092 }); 8093 8094 window.addEventListener('click', function () { 8095 if (socket === null) { 8096 socket = new Socket(visitorID, sessionID, pageID); 8097 resolve(true); 8098 } 8099 }); 8100 }); 8101 } 8102 8103 function clone_lightbox(selected, dom, section, settings) { 8104 var counter = 0; 8105 clonedDom = dom.cloneNode(true); 8106 document.querySelector('section[data-type="system-lightbox-container"]').appendChild(clonedDom); 8107 document.querySelector('section[data-type="system-lightbox-container"] > [data-action="lightbox"]').setAttribute('data-origin', section); 8108 var lightboxItems = document.querySelectorAll('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]'); 8109 lightboxItems[selected].classList.add('selected'); 8110 8111 var closeLightboxElement = document.createElement('div'); 8112 closeLightboxElement.classList.add('close-icon'); 8113 closeLightboxElement.innerHTML = ` 8114 <i class="fal fa-times-circle"> 8115 `; 8116 closeLightboxElement.addEventListener('click', function (e) { 8117 e.preventDefault(); 8118 close_lightbox(); 8119 }); 8120 8121 var nextLightboxElement = document.createElement('div'); 8122 nextLightboxElement.classList.add('next-icon'); 8123 nextLightboxElement.innerHTML = ` 8124 <i class="fal fa-chevron-circle-right"> 8125 `; 8126 8127 var prevLightboxElement = document.createElement('div'); 8128 prevLightboxElement.classList.add('prev-icon'); 8129 prevLightboxElement.innerHTML = ` 8130 <i class="fal fa-chevron-circle-left"> 8131 `; 8132 8133 lightboxItems[selected].appendChild(closeLightboxElement); 8134 lightboxItems[selected].appendChild(nextLightboxElement); 8135 lightboxItems[selected].appendChild(prevLightboxElement); 8136 8137 $('section[data-type="system-lightbox-container"] [data-action="lightbox_item"]').each(function () { 8138 $(this).attr('data-index', counter), 8139 counter++; 8140 }); 8141 8142 open_lightbox(); 8143 } 8144 8145 function open_lightbox() { 8146 $('section[data-type="system-lightbox-container"]').addClass('show'); 8147 setTimeout(function () { 8148 $('*[data-type="system-lightbox-close"]').click(close_lightbox); 8149 }, 400); 8150 8151 $('section[data-type="system-lightbox-container"] [data-lazy-picture="true"]').each(function () { 8152 var data_srcset = $(this).attr('data-srcset'); 8153 var srcset = $(this).attr('srcset'); 8154
8155 if (data_srcset !== '') { 8156 $(this).attr('srcset', data_srcset); 8157 } 8158 }); 8159 8160 $('section[data-type="system-lightbox-container"] [data-lazy-img="true"]').each(function () { 8161 var src = $(this).attr('data-src'); 8162 if (src) { 8163 $(this).attr('src', src); 8164 } 8165 }); 8166 } 8167 8168 function close_lightbox() { 8169 $('*[data-type="system-lightbox-close"]').unbind(); 8170 $('section[data-type="system-lightbox-container"]').removeClass('show'); 8171 setTimeout(function () { 8172 $('section[data-type="system-lightbox-container"]').empty(); 8173 }, 0); 8174 } 8175 8176 function reset_lightbox_container() { 8177 const $container = $('section[data-type="system-lightbox-container"]'); 8178 8179 // Remove only injected lightbox-content clones 8180 $container.find('section[data-type="system-lightbox-content"]').remove(); 8181 8182 // Remove container click handlers (or at least the ones you add via namespace) 8183 $container.off('click.autoOutsideClose'); 8184 } 8185 8186 (function wrapOpenLightbox() { 8187 if (window.__openLightboxWrapped2) return; 8188 window.__openLightboxWrapped2 = true; 8189 8190 function wait() { 8191 if (typeof window.open_lightbox !== 'function') { 8192 setTimeout(wait, 25); 8193 return; 8194 } 8195 8196 const originalOpen = window.open_lightbox; 8197 8198 // Global config 8199 window.override_lightbox = window.override_lightbox || false; 8200 window.lightbox_allowed_source = window.lightbox_allowed_source || null; 8201 window.lightbox_call_source = null; // ephemeral, set right before allowed opens 8202 8203 // Helper: run a function while temporarily marking the caller 8204 window.with_lightbox_source = function (sourceId, fn) { 8205 const prev = window.lightbox_call_source; 8206 window.lightbox_call_source = sourceId; 8207 try { 8208 return fn(); 8209 } finally { 8210 window.lightbox_call_source = prev; 8211 } 8212 }; 8213 8214 window.open_lightbox = function () { 8215 // If override is active, only allow calls tagged by the allowed source 8216 if (window.override_lightbox) { 8217 if (!window.lightbox_allowed_source) return; // locked down hard 8218 if (window.lightbox_call_source !== window.lightbox_allowed_source) { 8219 return; // ignore everyone else 8220 } 8221 } 8222 8223 return originalOpen.apply(this, arguments); 8224 }; 8225 } 8226 8227 wait(); 8228 })(); 8229 8230 function uuid(verbose = false) { 8231 let id = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => 8232 (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) 8233 ) 8234 if (verbose) { 8235 console.log(id); 8236 } 8237 return id 8238 } 8239 8240 function set_cookie(name, value, days, domain) { 8241 var expires = ''; 8242 if (domain == null) { 8243 var domain = window.location.hostname; 8244 domain = domain.split('.'); 8245 8246 if (domain.length == 2) { 8247 domain = domain.join('.'); 8248 } 8249 8250 if (domain.length == 3) { 8251 domain = domain.slice(Math.max(domain.length - 2, 1)); 8252 domain = domain.join('.'); 8253 } 8254 } 8255 if (days) { 8256 var date = new Date(); 8257 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 8258 expires = '; expires=' + date.toUTCString(); 8259 } 8260 document.cookie = name + '=' + (value || '') + expires + '; domain=' + domain + '; path=/'; 8261 } 8262 8263 function get_cookie(name) { 8264 var name_eq = name + '='; 8265 var ca = document.cookie.split(';'); 8266 for (var i = 0; i < ca.length; i++) { 8267 var c = ca[i]; 8268 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 8269 if (c.indexOf(name_eq) == 0) return c.substring(name_eq.length, c.length); 8270 } 8271 return null; 8272 } 8273 8274 function disable_scroll() { 8275 if (scroll_disabled) { 8276 return; 8277 } 8278 8279 scroll_disabled = true; 8280 scrollTop = $(window).scrollTop(); 8281 8282 $('body') 8283 .css({ 8284 'top': -1 * scrollTop, 8285 'position': 'fixed', 8286 'overflow': 'hidden', 8287 'pointer-events': 'none', 8288 }); 8289 } 8290 8291 function load_extras() { 8292 $.getScript('https://cdn.userway.org/widget.js'); 8293 javascript_deferred.load.forEach(function (v) { 8294 javascript_deferred.prototype[v](); 8295 }); 8296 8297 $('iframe[data-src]').each(function () { 8298 var src = $(this).attr('data-src'); 8299 if (!(src == null || src == '')) { 8300 $(this).attr('src', src); 8301 } 8302 }); 8303 8304 $('iframe[data-srcdoc]').each(function () { 8305 var srcdoc = atob($(this).attr('data-srcdoc')); 8306 if (!(srcdoc == null || srcdoc == '')) { 8307 $(this).attr('srcdoc', srcdoc); 8308 } 8309 }); 8310 } 8311 8312 function update_deferred_images() { 8313 $('[data-lazy-picture="false"]').each(function () { 8314 var data_srcset = $(this).attr('data-srcset'); 8315 var srcset = $(this).attr('srcset'); 8316
8317 if (data_srcset !== '') { 8318 $(this).attr('srcset', data_srcset); 8319 } 8320 }); 8321 8322 $('[data-lazy-img="false"]').each(function () { 8323 var src = $(this).attr('data-src'); 8324 if (src) { 8325 $(this).attr('src', src); 8326 } 8327 }); 8328 8329 /* $('source[data-srcset]').each(function() { 8330 if ($('body').attr('data-width') > 360) { 8331 var src = $(this).attr('data-srcset'); 8332 $(this).attr('srcset', src); 8333 } 8334 else { 8335 var src = $(this).attr('data-srcset-sm'); 8336 $(this).attr('srcset', src); 8337 } 8338 }); */ 8339 8340 8341 $('video source[data-src]').each(function () { 8342 if ($('body').attr('data-width') > 360) { 8343 var src = $(this).attr('data-src'); 8344 $(this).attr('src', src); 8345 $(this).closest('video')[0].load(); 8346 8347 if ($(this).closest('video')[0].hasAttribute('muted')) { 8348 $(this).closest('video')[0].play(); 8349 } 8350 } 8351 }); 8352 } 8353 8354 function lazy_load_deferred_images() { 8355 const lazySections = document.querySelectorAll('body > section') 8356 8357 lazySections.forEach(section => { 8358 // section.classList.add('lazying'); 8359 createObserver(section); 8360 }); 8361 8362 8363 function createObserver(el) { 8364 let observer; 8365 8366 let options = { 8367 root: null, 8368 rootMargin: "100px 0px", 8369 threshold: 0 8370 }; 8371 8372 observer = new window.IntersectionObserver(handleIntersect, options); 8373 observer.observe(el); 8374 } 8375 8376 function handleIntersect(entries, o) { 8377 entries.forEach((entry) => { 8378 if (entry.isIntersecting) { 8379 const lazyAssets = entry.target.querySelectorAll('[data-lazy-picture="true"], [data-lazy-img="true"]'); 8380 // console.log('Lazy Assets', lazyAssets); 8381 8382 lazyAssets.forEach((asset) => { 8383 load(asset); 8384 }); 8385 8386 o.unobserve(entry.target) 8387 8388 } else { 8389 } 8390 }); 8391 } 8392 8393 function load(asset) { 8394 8395 if (asset.tagName === 'IMG') { 8396 if (asset.hasAttribute('data-src')) { 8397 const source = asset.getAttribute('data-src'); 8398 if (source) { 8399 asset.setAttribute('src', source); 8400 asset.removeAttribute('data-src') 8401 } 8402 } else { 8403 } 8404 } 8405 8406 if (asset.tagName === 'SOURCE') { 8407 if (asset.hasAttribute('data-srcset')) { 8408 const source = asset.getAttribute('data-srcset'); 8409 if (source) { 8410 asset.setAttribute('srcset', source); 8411 asset.removeAttribute('data-srcset') 8412 } 8413 } else { 8414 } 8415 } 8416 } 8417 8418 // document.addEventListener('scroll', function () { 8419 8420 // }); 8421 } 8422 8423 8424 function set_resize_listeners() { 8425 window.addEventListener('resize', function () { 8426 if ($(window).width() == window_width) { 8427 return; 8428 } 8429 else { 8430 clearTimeout(timeout); 8431 timeout = setTimeout(get_viewport_size, 50); 8432 } 8433 window_width = $(window).width(); 8434 }); 8435 8436 window.addEventListener('resize', function () { 8437 if ($(window).height() == window_height) { 8438 return; 8439 } 8440 else { 8441 clearTimeout(timeout); 8442 timeout = setTimeout(get_viewport_size, 50); 8443 } 8444 window_height = $(window).height(); 8445 }); 8446 } 8447 8448 function set_scroll_listeners() { 8449 $(document).one('scroll', function () { 8450 if (!extras_loaded) { 8451 extras_loaded = true; 8452 load_extras(); 8453 } 8454 }); 8455 8456 $(document).one('mousemove', function () { 8457 if (!extras_loaded) { 8458 extras_loaded = true; 8459 load_extras(); 8460 } 8461 }); 8462 } 8463 8464 function set_accordion_listeners() { 8465 if ($('div[data-micro-template="accordion"]')) { 8466 $('div[data-accordion="title"').click(function () { 8467 var $container = $(this).closest($('div[data-micro-template="accordion_container"]')); 8468 var $toggles = $container.find('.accordion_toggle'); 8469 var $bodies = $container.find('.accordion_body'); 8470 var $titles = $container.find('.accordion_title'); 8471 8472 $titles.removeClass('active'); 8473 $toggles.text("+"); 8474 $bodies.slideUp(); 8475 8476 if (!$(this).next().is(":visible")) { 8477 $(this).addClass('active'); 8478 $(this).next().slideDown(); 8479 $(this).children('.accordion_toggle').text('-'); 8480 } 8481 }); 8482 } 8483 } 8484 8485 8486 function get_form_info(form) { 8487 const el = $(form)[0]; 8488 return { 8489 page: window.location.pathname, 8490 form: { 8491 id: el.getAttribute('data-form-id') || null, 8492 type: el.getAttribute('data-type') || null, 8493 category: el.getAttribute('data-category') || null, 8494 }, 8495 }; 8496 } 8497 8498 function dispatch_form_event(name, form, response) { 8499 const detail = get_form_info(form); 8500 detail.response = response; 8501 $(form)[0].dispatchEvent(new CustomEvent(name, { bubbles: true, detail: detail })); 8502 } 8503 8504 function form_actions() { 8505 if ($('form').length) { 8506 if ($('input[data-toggle="datepicker"]').length) { 8507 $.getScript('/system/js/datepicker/datepicker.js', function () { 8508 $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/system/js/datepicker/datepicker.css')); 8509 $('input[data-toggle="datepicker"]').each(function () { 8510 8511 let start_date; 8512 8513 if ($(this).attr('name') == 'dob' || $(this).attr('name') == 'birthdate' || $(this).attr('data-email-label').includes('Birth')) { 8514 start_date = '1907-03-04'; 8515 } 8516 8517 const data_start_date = $(this).attr('data-start-date'); 8518 8519 if (data_start_date) { 8520 start_date = data_start_date; 8521 } 8522 8523 if (start_date) { 8524 const match = /^([+-])(\d+)([dwy])$/.exec(start_date); 8525 if (match) { 8526 const [, sign, amountStr, unit] = match; 8527 const amount = parseInt(amountStr, 10) * (sign === '-' ? -1 : 1); 8528 start_date = new Date(); 8529 if (unit === 'd') start_date.setDate(start_date.getDate() + amount); 8530 else if (unit === 'w') start_date.setDate(start_date.getDate() + amount * 7); 8531 else if (unit === 'y') start_date.setFullYear(start_date.getFullYear() + amount); 8532 } else { 8533 start_date = new Date(start_date); 8534 } 8535 } else { 8536 start_date = new Date(); 8537 } 8538 8539 var disabled = { 8540 'mon': $(this).attr('data-mon'),
8541 'tue': $(this).attr('data-tue'), 8542 'wed': $(this).attr('data-wed'), 8543 'thu': $(this).attr('data-thu'), 8544 'fri': $(this).attr('data-fri'), 8545 'sat': $(this).attr('data-sat'), 8546 'sun': $(this).attr('data-sun'), 8547 }; 8548 8549 $(this).datepicker({ 8550 'autoHide': true, 8551 'startDate': start_date, 8552 'filter': function (date, view) { 8553 if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } } 8554 if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } } 8555 if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } } 8556 if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } } 8557 if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } } 8558 if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } } 8559 if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } } 8560 } 8561 }); 8562 }); 8563 }); 8564 } 8565 8566 $('form input[type="file"]').change(function () { 8567 var max_file_size = $(this).closest('[data-group="file"]').attr('data-max-size'); 8568 var current_label = $(this).closest('label').find('.label_name').text(); 8569 console.log(current_label); 8570 var current_form = $(this).closest('form'); 8571 var container = $(this).closest('[data-container="file"]'); 8572 var selected_file = $(this).val().split('/').pop().split('\\').pop(); 8573 8574 $(this).closest('label').find('.label_name').text(selected_file); 8575 $(this).closest('label').find('.label_name').append('<div class="remove_file"><i class="fal fa-times">'); 8576 8577 var total_file_size = 0; 8578 8579 $(current_form).find('input[type="file"]').each(function () { 8580 if ($(this).val().length > 0) { 8581 total_file_size += $(this).prop('files')[0].size; 8582 } 8583 }); 8584 8585 $(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2)); 8586 8587 if ($(container).next('[data-container="file"]').length < 1) { 8588 file_field_counter++; 8589 var current_name = $(container).attr('data-name'); 8590 var next_container = $(container).clone(true).insertAfter(container); 8591 $(next_container).find('input').attr('name', current_name + '_' + file_field_counter); 8592 $(next_container).find('input').val(''); 8593 $(next_container).find('label .label_name').text(current_label); 8594 } 8595 8596 if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) { 8597 $(current_form).find('.max_size_container').addClass('too_large'); 8598 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled'); 8599 $(current_form).find('[data-type="submit"]').addClass('disabled'); 8600 $(current_form).addClass('disabled'); 8601 } 8602 else { 8603 $(current_form).find('.max_size_container').removeClass('too_large'); 8604 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled'); 8605 $(current_form).find('[data-type="submit"]').removeClass('disabled'); 8606 $(current_form).removeClass('disabled'); 8607 } 8608 8609 $(container).find('.remove_file').click(function (e) { 8610 e.preventDefault(); 8611 $(container).remove(); 8612 8613 total_file_size = 0; 8614 8615 $(current_form).find('input[type="file"]').each(function () { 8616 if ($(this).val().length > 0) { 8617 total_file_size += $(this).prop('files')[0].size; 8618 } 8619 }); 8620 8621 if ((total_file_size / 1024 / 1024).toFixed(2) > parseInt(max_file_size)) { 8622 $(current_form).find('.max_size_container').addClass('too_large'); 8623 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').addClass('disabled'); 8624 $(current_form).find('[data-type="submit"]').addClass('disabled'); 8625 $(current_form).addClass('disabled'); 8626 } 8627 else { 8628 $(current_form).find('.max_size_container').removeClass('too_large'); 8629 $(current_form).find('[data-group="file"] > div [data-container="file"]:last-of-type').removeClass('disabled'); 8630 $(current_form).find('[data-type="submit"]').removeClass('disabled'); 8631 $(current_form).removeClass('disabled'); 8632 } 8633 8634 if ($('form.disabled').length > 0) { 8635 $('form [data-type="submit_multi"]').addClass('disabled'); 8636 } 8637 else { 8638 $('form [data-type="submit_multi"]').removeClass('disabled'); 8639 } 8640
8641 $(current_form).find('.max_size_container .dynamic_size').text((total_file_size / 1024 / 1024).toFixed(2)); 8642 }); 8643 }); 8644 8645 $('form *[data-required="true"], form *[data-required="1"]').each(function () { 8646 var placeholder = $(this).attr('placeholder'); 8647 $(this).attr('required', true); 8648 $(this).attr('placeholder', placeholder + ' *'); 8649 $(this).find('option[value=""]').text($(this).find('option[value=""]').text() + ' *'); 8650 }); 8651 8652 $('form fieldset').each(function () { 8653 var field_name = $(this).attr('name'); 8654 var default_value = $(this).attr('value'); 8655 8656 if (default_value !== '') { 8657 $(this).find('input[data-type="radio"][name="' + field_name + '"][value="' + default_value + '"]').attr('checked', true); 8658 $(this).find('input[data-type="radio"][id="' + field_name + '_' + default_value + '"]').attr('checked', true); 8659 $(this).find('input[data-type="checkbox"][name="' + default_value + '"]').attr('checked', true); 8660 $(this).find('input[data-type="checkbox"][id="' + field_name + '_' + default_value + '"]').attr('checked', true); 8661 } 8662 }); 8663 8664 $('form *[data-readonly="true"], form *[data-readonly="1"]').each(function () { 8665 $(this).attr('readonly', true); 8666 }); 8667 8668 $('form *[data-hidden="true"], form *[data-hidden="1"]').each(function () { 8669 $(this).css('display', 'none'); 8670 }); 8671 8672 $('form[data-dynamic="true"]').on('submit', function (e) { 8673 console.time('Click 2 Submit') 8674 e.preventDefault(); 8675 var submitted_form = $(this); 8676 var recaptcha_site_key = $(this).attr('data-recaptcha-site-key'); 8677 var recaptcha_secret_key = $(this).attr('data-recaptcha-secret-key'); 8678 var recaptcha_processor = $(this).attr('data-recaptcha-processor'); 8679 8680 if ( 8681 recaptcha_site_key !== '' && 8682 recaptcha_secret_key !== '' && 8683 recaptcha_processor !== '' 8684 ) { 8685 if (this.checkValidity()) { 8686 grecaptcha.ready(function () { 8687 grecaptcha.execute(recaptcha_site_key, { action: 'submit' }).then(function (token) { 8688 $.post(recaptcha_processor, { 8689 secret: recaptcha_secret_key, 8690 response: token 8691 }) 8692 .done(function (recaptcha) { 8693 prepare_submission(submitted_form, recaptcha).then((val) => { 8694 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
8694y, val.ad_location_key, val.submission_url); 8695 }).then((val) => { 8696 // Done 8697 track_submit(submitted_form); 8698 8699 // Custom Event 8700 dispatch_form_event("tdi:form:success", submitted_form, val); 8701 8702 }); 8703 }) 8704 }); 8705 }); 8706 } 8707 } 8708 else { 8709 if (this.checkValidity()) { 8710 prepare_submission(submitted_form, null).then((val) => { 8711 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); 8712 }).then((val) => { 8713 // Done 8714 track_submit(submitted_form); 8715 8716 // Custom Event 8717 dispatch_form_event("tdi:form:success", submitted_form, val); 8718 8719 }); 8720 } 8721 } 8722 }); 8723 8724 $('form .button.submit[data-dynamic="true"]').click(function () { 8725 if (!form_button_lock && !click_lock) { 8726 click_lock = true; 8727 $(this).closest('form').find('input[type="submit"]')[0].click(); 8728 } 8729 setTimeout(function () { 8730 click_lock = false; 8731 }, 1000); 8732 }); 8733 8734 $('form select[name="location"]').change(function (e) { 8735 $(this).closest('form').find('input[name="date"').val(''); 8736 if ($(this).find(':selected').data('datesDisabled')) { 8737 var $selectedOption = $(this).find(':selected').data('datesDisabled'); 8738 $selectedOption = atob($selectedOption); 8739 8740 $(this).closest('form').find('input[data-toggle="datepicker"]').each(function () { 8741 var disabled = JSON.parse($selectedOption); 8742 $(this).datepicker('destroy'); 8743 $(this).datepicker({ 8744 'autoHide': true, 8745 'filter': function (date, view) { 8746 if (disabled['mon'] == true) { if (date.getDay() === 1 && view === 'day') { return false; } } 8747 if (disabled['tue'] == true) { if (date.getDay() === 2 && view === 'day') { return false; } } 8748 if (disabled['wed'] == true) { if (date.getDay() === 3 && view === 'day') { return false; } } 8749 if (disabled['thu'] == true) { if (date.getDay() === 4 && view === 'day') { return false; } } 8750 if (disabled['fri'] == true) { if (date.getDay() === 5 && view === 'day') { return false; } } 8751 if (disabled['sat'] == true) { if (date.getDay() === 6 && view === 'day') { return false; } } 8752 if (disabled['sun'] == true) { if (date.getDay() === 0 && view === 'day') { return false; } } 8753 } 8754 }); 8755 $(this).datepicker('update'); 8756 }); 8757 } 8758 }); 8759 8760 8761 8762 $('form input[name^="phone"][data-type="text"]').on('input', function () { 8763 var el = this; 8764 var oldValue = el.value; 8765 var selStart = el.selectionStart; 8766 8767 // digits to the left of the caret in the OLD value 8768 var digitsLeft = oldValue.slice(0, selStart).replace(/\D/g, '').length; 8769 8770 var digits = oldValue.replace(/\D/g, ''); 8771 8772 8773 var intl = digits.length > 10; 8774 8775 var formatted; 8776 if (!intl) { 8777 var m = digits.slice(0, 10).match(/^(\d{0,3})(\d{0,3})(\d{0,4})$/); 8778 formatted = !m[2] ? m[1] : '(' + m[1] + ') ' + m[2] + (m[3] ? '-' + m[3] : ''); 8779 } else { 8780 formatted = '+' + digits.slice(0, 15); 8781 } 8782 8783 el.value = formatted; 8784 8785 if (el === document.activeElement) { 8786 var pos = 0, seen = 0; 8787 while (pos < formatted.length && seen < digitsLeft) { 8788 if (/\d/.test(formatted[pos])) seen++; 8789 pos++; 8790 } 8791 el.setSelectionRange(pos, pos); 8792 } 8793 }); 8794 } 8795 } 8796 8797 function prepare_submission(form_submit, recaptcha) { 8798 return new Promise((resolve, reject) => { 8799 console.time('prepare_submission()'); 8800 form_button_lock = true; 8801 $(form_submit).find('.button.submit[data-dynamic="true"]').text('Sending...'); 8802 8803 const appendLocation = $(form_submit).attr('data-append-location') === '1' ? true : false;
8804 const locationSelected = $(form_submit).find('select[name="location"] option:selected') ? $(form_submit).find('select[name="location"] option:selected').text() : null; 8805 8806 var form_data = {}; 8807 var recipients_add = []; 8808 var cc_add = []; 8809 var db_only = $(form_submit).attr('data-db-only'); 8810 var recipients = $(form_submit).attr('data-recipients'); 8811 var ad_recipients = $(form_submit).attr('data-ad-recipients'); 8812 var cc = $(form_submit).attr('data-cc'); 8813 var subject = $(form_submit).attr('data-subject'); 8814 var category = $(form_submit).attr('data-category') + (appendLocation && locationSelected ? ` (${locationSelected})` : ''); 8815 var is_hipaa = $(form_submit).attr('data-hipaa'); 8816 var reply_to = $(form_submit).attr('data-reply-to'); 8817 var pdf = $(form_submit).attr('data-pdf'); 8818 var submission_url = $(form_submit).attr('data-submission-url'); 8819 8820 var ad_source = $(form_submit).find('[data-ad-tracking="source"]').val(); 8821 var ad_campaign = $(form_submit).find('[data-ad-tracking="campaign"]').val(); 8822 var ad_location = $(form_submit).find('[data-ad-tracking="ad_location"]').val(); 8823 8824 var ad_source_key = (get_cookie('source') ? get_cookie('source') : null);
8825 var ad_campaign_key = (get_cookie('campaign') ? get_cookie('campaign') : null); 8826 var ad_location_key = (get_cookie('location') ? get_cookie('location') : null); 8827 8828 $(form_submit).find('input, textarea, select, fieldset').each(function () { 8829 if ( 8830 $(this).is('input:not([type="file"])') && 8831 $(this)[0].hasAttribute('name') && 8832 $(this)[0].hasAttribute('data-email-label') 8833 ) { 8834 value_obj = { 8835 'label': $(this).attr('data-email-label'), 8836 'name': $(this).attr('name'), 8837 'value': $(this).val(), 8838 'type': 'text' 8839 }; 8840 form_data[$(this).attr('name')] = value_obj; 8841 } 8842 8843 if ( 8844 $(this).is('textarea') && 8845 $(this)[0].hasAttribute('name') && 8846 $(this)[0].hasAttribute('data-email-label') 8847 ) { 8848 value_obj = { 8849 'label': $(this).attr('data-email-label'), 8850 'name': $(this).attr('name'), 8851 'value': $(this).val(), 8852 'type': 'textarea' 8853 }; 8854 form_data[$(this).attr('name')] = value_obj; 8855 } 8856 8857 if ( 8858 $(this).is('select') && 8859 $(this)[0].hasAttribute('name') && 8860 $(this)[0].hasAttribute('data-email-label') 8861 ) { 8862 value_obj = { 8863 'label': $(this).attr('data-email-label'), 8864 'name': $(this).attr('name'), 8865 'value': $(this).val(), 8866 'type': 'select' 8867 }; 8868 form_data[$(this).attr('name')] = value_obj; 8869 8870 if ( 8871 $(this).find(':selected').length > 0 && 8872 $(this).find(':selected')[0].hasAttribute('data-recipients') && 8873 $(this).find(':selected').attr('data-recipients').length 8874 ) { 8875 recipients_add.push($(this).find(':selected').attr('data-recipients')); 8876 } 8877 8878 if ( 8879 $(this).find(':selected').length > 0 && 8880 $(this).find(':selected')[0].hasAttribute('data-cc') && 8881 $(this).find(':selected').attr('data-cc').length 8882 ) { 8883 cc_add.push($(this).find(':selected').attr('data-cc')); 8884 } 8885 } 8886 8887 if ( 8888 $(this).is('fieldset') && 8889 $(this)[0].hasAttribute('name') && 8890 $(this)[0].hasAttribute('data-email-label') 8891 ) { 8892 var val = []; 8893 var keys = []; 8894 $(this).find('input:checked').each(function () { 8895 val.push($(this).attr('value')); 8896 keys.push($(this).attr('name')); 8897 }); 8898 value_obj = { 8899 'label': $(this).attr('data-email-label'), 8900 'name': $(this).attr('name'), 8901 'keys': keys.join('; '), 8902 'value': val.join('; '), 8903 'type': $(this).attr('type') 8904 }; 8905 form_data[$(this).attr('name')] = value_obj; 8906 } 8907 }); 8908 8909 console.timeEnd('prepare_submission()'); 8910 console.time('submit_form()'); 8911 resolve({ 8912 "form_submit": form_submit, 8913 "recaptcha": recaptcha, 8914 "form_data": form_data, 8915 "db_only": db_only, 8916 "recipients": recipients, 8917 "recipients_add": recipients_add, 8918 "ad_recipients": ad_recipients, 8919 "cc": cc, 8920 "cc_add": cc_add, 8921 "subject": subject, 8922 "category": category, 8923 "is_hipaa": is_hipaa, 8924 "reply_to": reply_to, 8925 "pdf": pdf, 8926 "ad_source": ad_source, 8927 "ad_campaign": ad_campaign, 8928 "ad_location": ad_location, 8929 "ad_source_key": ad_source_key,
8930 "ad_campaign_key": ad_campaign_key, 8931 "ad_location_key": ad_location_key, 8932 "submission_url": submission_url 8933 }) 8934 }); 8935 } 8936 8937 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) { 8938 return new Promise((resolve, reject) => { 8939 var email_list = []; 8940 var first_name = null; 8941 var last_name = null; 8942 8943 var file_size_total = 0; 8944 var files_uploaded = []; 8945 var files_selected = 0; 8946 8947 if ( 8948 form_submit[0].hasAttribute('data-google-conversion') && 8949 google_conversion 8950 ) { 8951 const conversion_code = $(form_submit[0]).attr('data-google-conversion'); 8952 if (conversion_code.length > 0) { 8953 google_tracking.gtag('event', 'conversion', { 'send_to': conversion_code }); 8954 } 8955 } 8956 8957 if ( 8958 form_submit[0].hasAttribute('data-facebook-conversion') && 8959 facebook_conversion 8960 ) { 8961 const conversion_type = $(form_submit[0]).attr('data-facebook-conversion'); 8962 if (conversion_type.length > 0) { 8963 facebook_tracking.fbq('track', conversion_type); 8964 } 8965 } 8966 8967 $(form_submit).find('input[type="file"]').each(function () { 8968 var file_selected = $(this).val(); 8969 if (file_selected.length > 0) { 8970 files_selected++; 8971 } 8972 }); 8973 8974 $(form_submit).find('input[type="file"]').each(function () { 8975 var file_to_upload = $(this).val(); 8976 var submit_promise = new Promise((res, rej) => { 8977 if (file_to_upload.length > 0) { 8978 var xhr = new XMLHttpRequest(); 8979 var file = $(this).prop('files')[0]; 8980 var formData = new FormData(); 8981 formData.append('file', file); 8982 8983 xhr.onreadystatechange = function () { 8984 if (xhr.readyState == 4) { 8985 files_uploaded.push(xhr.responseText); 8986 res(xhr.responseText); 8987 } 8988 } 8989 8990 xhr.open('POST', '/system/processors/file_upload/processor.php', true); 8991 xhr.send(formData); 8992 } else { 8993 res('') 8994 } 8995 }).then((file) => { 8996 if (file) { 8997 return file; 8998 } else { 8999 return ''; 9000 } 9001 }); 9002 files_uploaded.push(submit_promise); 9003 }); 9004 9005 $(form_submit).find('input[type="email"]').each(function () { 9006 email_list.push($(this).val()); 9007 }); 9008 9009 $(form_submit).find('input[type="text"][data-email-label="First Name"]').each(function () { 9010 first_name = $(this).val(); 9011 }); 9012 9013 $(form_submit).find('input[type="text"][data-email-label="Last Name"]').each(function () { 9014 last_name = $(this).val(); 9015 }); 9016 9017 9018 if ((first_name === null || first_name === '') && (last_name === null || last_name === '')) { 9019 $(form_submit).find('input[type="text"][data-email-label="Full Name"], input[type="text"][data-email-label="Name"]').each(function () { 9020 const full_name = $(this).val(); 9021 first_name = full_name; 9022 }); 9023 } 9024 9025 9026 console.time('POST to processor.php') 9027 $.post('/system/processors/validation/processor.php', { 9028 type: 'date_time', 9029 val: null 9030 }) 9031 .done(function (validation) { 9032 console.timeEnd('POST to processor.php') 9033 console.time('Wait For Files') 9034 9035 Promise.all(files_uploaded).then((value) => { 9036 console.timeEnd('Wait For Files') 9037 let uploaded_files = value.filter(file => file); 9038 console.log(JSON.stringify(uploaded_files)); 9039 console.log('Files Uploaded'); 9040 console.time('POST to submission_url') 9041 $.post(submission_url, { 9042 validation: validation, 9043 db_only: db_only, 9044 recipients: recipients, 9045 recipients_add: JSON.stringify(recipients_add), 9046 ad_recipients: ad_recipients, 9047 recaptcha: recaptcha, 9048 cc: cc, 9049 cc_add: JSON.stringify(cc_add), 9050 subject: subject, 9051 category: category, 9052 first_name: first_name, 9053 last_name: last_name, 9054 is_hipaa: is_hipaa, 9055 reply_to: reply_to, 9056 pdf: pdf, 9057 ad_source: ad_source, 9058 ad_campaign: ad_campaign, 9059 ad_location: ad_location, 9060 ad_source_key: ad_source_key,
9061 ad_campaign_key: ad_campaign_key, 9062 ad_location_key: ad_location_key, 9063 files: JSON.stringify(uploaded_files), 9064 data: JSON.stringify(form_data), 9065 email_list: JSON.stringify(email_list) 9066 }) 9067 .done(function (data) { 9068 console.timeEnd('POST to submission_url') 9069 9070 form_button_lock = false; 9071 form_submit[0].reset(); 9072 $(form_submit).find('.remove_file').click(); 9073 $('form .button.submit[data-dynamic="true"]').each(function () { 9074 var placeholder = $(this).attr('placeholder'); 9075 $(this).text(placeholder); 9076 }); 9077 9078 if ($(form_submit).attr('data-action') !== '') { 9079 var action = $(form_submit).attr('data-action'); 9080 9081 if (action == 'close_lightbox') { 9082 close_lightbox(); 9083 } 9084 9085 if (action == 'redirect') { 9086 var redirect = $(form_submit).attr('data-confirmation'); 9087 window.location.replace(redirect); 9088 } 9089 9090 if (action == 'function') { 9091 var form_complete_function = $(form_submit).attr('data-confirmation'); 9092 window[form_complete_function](form_data); 9093 } 9094 9095 if (action == 'none') { } 9096 } 9097 else { 9098 var confirmation = $(form_submit).children('section[data-type="system-lightbox-content"]'); 9099 $(confirmation).clone().appendTo('section[data-type="system-lightbox-container"]'); 9100 open_lightbox(); 9101 } 9102 resolve(false); 9103 }); 9104 }); 9105 }); 9106 }); 9107 } 9108 9109 function get_viewport_size() { 9110 viewport_size = viewport(); 9111 $('body').attr('data-width', viewport_size.width); 9112 $('body').attr('data-height', viewport_size.height); 9113 } 9114 9115 function viewport() { 9116 var e = window, a = 'inner'; 9117 if (!('innerWidth' in window)) { 9118 a = 'client'; 9119 e = document.documentElement || document.body; 9120 } 9121 return { width: e[a + 'Width'], height: e[a + 'Height'] }; 9122 } 9123 9124 function set_tracking() { 9125 const url_parameters = new URLSearchParams(window.location.search); 9126 const source = url_parameters.get('source'); 9127 const campaign = url_parameters.get('campaign'); 9128 const location = url_parameters.get('location'); 9129 9130 if (source) { 9131 set_cookie('source', source, 90, null); 9132 } 9133 9134 if (campaign) { 9135 set_cookie('campaign', campaign, 90, null); 9136 } 9137 9138 if (location) { 9139 set_cookie('location', location, 90, null); 9140 } 9141 } 9142 9143 function load_functions() { 9144 javascript.load.forEach(function (v) { 9145 javascript.prototype[v](); 9146 }); 9147 } 9148 9149 function load_fa() { 9150 /* $.getScript('https://kit.fontawesome.com/10cd9403cd.js'); */ 9151 } 9152 9153 function load_default_subs() { 9154 $('video:not(.no_subs)').each(function () { 9155 var found_video = $(this); 9156 9157 if ($(this).find('source').length) { 9158 var video_source = $(this).find('source').attr('src').split('/').pop(); 9159 } 9160 else { 9161 var video_source = $(this).attr('src').split('/').pop(); 9162 } 9163 9164 $.get('/custom/content/subs/' + video_source + '.vtt', function (data) { 9165 if (data === 'Error') { 9166 $('<track/>') 9167 .attr('label', 'English') 9168 .attr('kind', 'subtitles') 9169 .attr('srclang', 'en') 9170 .attr('src', '/system/content/subs/no_audio.vtt') 9171 .appendTo(found_video); 9172 } 9173 else { 9174 $('<track/>') 9175 .attr('label', 'English') 9176 .attr('kind', 'subtitles') 9177 .attr('srclang', 'en') 9178 .attr('src', '/custom/content/subs/' + video_source + '.vtt') 9179 .appendTo(found_video); 9180 } 9181 }) 9182 .fail(function (data) { 9183 $('<track/>') 9184 .attr('label', 'English') 9185 .attr('kind', 'subtitles') 9186 .attr('srclang', 'en') 9187 .attr('src', '/system/content/subs/no_audio.vtt') 9188 .appendTo(found_video); 9189 }); 9190 }); 9191 } 9192 9193 function stalling(ms) { 9194 return setTimeout(() => { 9195 }, ms); 9196 } 9197 9198 function initialize() { 9199 console.log('Initializing...'); 9200 window_width = $(window).width(); 9201 window_height = $(window).height(); 9202 get_viewport_size(); 9203 viewport_size = viewport(); 9204 update_deferred_images(); 9205 set_resize_listeners(); 9206 set_scroll_listeners(); 9207 set_accordion_listeners(); 9208 form_actions(); 9209 set_tracking(); 9210 load_functions(); 9211 load_fa(); 9212 load_default_subs(); 9213 9214 track_load(); 9215 deferred_websocket(); 9216 lazy_load_deferred_images(); 9217 9218 // Add Tracking to each button 9219 const selection = document.querySelectorAll('section[class^="section_"], #di-consent-banner, #di-cookie-pref-dialog'); 9220 for (var i = 0; i < selection.length; i++) { 9221 var found_buttons = selection[i].querySelectorAll("a[href], [data-click-tracking]:not(a[href]), button:not(a[href])"); 9222 found_buttons = Array.from(new Set(found_buttons)); 9223 found_buttons.forEach(element => { 9224 element.addEventListener('click', function (e) { 9225 var stall = false;
9226 if (this.tagName === 'A' && this.getAttribute('href') !== '#') { 9227 stall = stalling(500); 9228 } 9229 9230 track_click(this).then(() => { 9231 if (stall !== false) { 9232 clearTimeout(stall); 9233 } 9234 }) 9235 }) 9236 }); 9237 } 9238 } 9239 9240 $(document).ready(initialize); 9241</script>
9241 9242 9243
9243<script> 9244 // Override any default global variables from SYSTEM_JS 9245 (function() { 9246 var overrides = { 9247 }; 9248 9249 // Apply overrides to global scope 9250 for (var key in overrides) { 9251 if (overrides.hasOwnProperty(key)) { 9252 window[key] = overrides[key]; 9253 } 9254 } 9255 })(); 9256 </script>
9256 9257 9258
9258<script src="https://api.aleso.ai/aleso.js" async></script>
9258 9259 </body> 9260 </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.