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