1<!DOCTYPE html> 2<html lang="en-CA" xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> 3 4 5 6<head> 7 8 <!-- Begin Monetate ExpressTag Sync v8.1. Place at start of document head. DO NOT ALTER. --> 9 10 11
11<script type="text/javascript">var monetateT = new Date().getTime();</script>
11 12
12<script type="text/javascript" src="//se.monetate.net/js/2/a-507d68b4/p/contactsexpress.ca/entry.js"></script>
12 13 14 15 16 <!-- End Monetate tag. --> 17 18 <title>ContactsExpress.ca -- Contact Lenses</title> 19
19<script type="application/ld+json" data-hid="27e719c">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.contactsexpress.ca/#organization","name":"ContactsExpress","legalName":"KITS Eyecare Ltd.","url":"https://www.contactsexpress.ca","logo":{"@type":"ImageObject","url":"https://www.contactsexpress.ca/kits.png"}},{"@type":"WebSite","@id":"https://www.contactsexpress.ca/#website","name":"ContactsExpress","url":"https://www.contactsexpress.ca","inLanguage":"en-CA","publisher":{"@id":"https://www.contactsexpress.ca/#organization"}}]}</script>
19 20 <meta http-equiv="Content-type" content="text/html; charset=Windows-1252" /> 21 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 22 23 24 25 <link rel="icon" type="image/png" href="/css/images/favicon.png" /> 26 <link rel="manifest" href="/js/shared/manifest.json"/> 27 28 <!--<link rel="stylesheet" href="/css/foundation.min.css" /> 29 <link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700|Open+Sans' rel='stylesheet' type='text/css'> 30 <link rel="stylesheet" href="/css/main.min.css" />--> 31 32 33 34 35 <link rel=canonical href="https://www.contactsexpress.ca/product_listing" /> 36 37 38 39<!--[if lte IE 8]> 40 <link rel="stylesheet" href="/css/ie8.css" type="text/css" media="all" /> 41 42
42<script type="text/javascript"> 43 document.createElement('header'); 44 document.createElement('hgroup'); 45 document.createElement('nav'); 46 document.createElement('menu'); 47 document.createElement('section'); 48 document.createElement('article'); 49 document.createElement('aside'); 50 document.createElement('footer'); 51 </script>
51 52<![endif]--> 53 54<!--[if lte IE 9]> 55 <link rel="stylesheet" type="text/css" href="/css/fonts/OSC/stylesheet.css" /> 56<![endif]--> 57 58 59 60 61 62 63 64 65 66 67
67<script> 68function getCookie(Name){ 69var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair 70if (document.cookie.match(re)) //if cookie found 71return document.cookie.match(re)[0].split("=")[1] //return its value 72return "" 73} 74</script>
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108<!-- Start: Google Analytics Code --> 109 110 111 112 113 114 115 116 117 118 119
120<script> 121 var dataLayer = []; 122//var norders = ""; 123 //Get mv_cache_source value from Coookies 124 var mv_cache_source = getCookie("mv_cache_source"); 125 126 127 128 129 130 131 132 133 134 135// Called when vto opened PLP 136function GA_openVTO(sku,config, itemName, itemCategory, itemBrand, itemPrice) { 137 138 dataLayer.push({ 139 'event': 'virtual-try-on-plp', 140 'ecommerce': { 141 'items': [{ 142 'item_name': itemName, 143 'item_category': itemCategory, 144 'item_brand': itemBrand, 145 'price': itemPrice.replace('$',''), 146 'item_id': sku 147 }] 148 } 149 }); 150 151} 152function GA_openVTOPDP(sku,config, itemName, itemCategory, itemBrand, itemPrice) { 153 154 dataLayer.push({ 155 'event': 'virtual-try-on-pdp', 156 'ecommerce': { 157 'items': [{ 158 'item_name': itemName, 159 'item_category': itemCategory, 160 'item_brand': itemBrand, 161 'price': itemPrice, 162 'item_id': sku 163 }] 164 } 165 }); 166 167} 168 169 170 171 172<!-- Google Tag Manager --> 173<!-- dataLayer must be defined above GTM tag -->
vendor: 337 bytes, lines 173-178
173 174(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 175 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 176 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 177 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 178 })(window,document,'script','dataLayer','
178GTM-PVMFLV6
vendor: 5 bytes, line 178
178');
179<!-- End Google Tag Manager --> 180 181 182 183</script>
183 184 185 186<!-- End: Google Analytics Code --> 187 188 189<!-- START: Facebook Pixel Code --> 190 191 192<!-- END: Facebook Pixel Code --> 193 194 195<!-- Start: Google Code for General Visitors Remarketing List --> 196 197 198
199<script type="text/javascript"> 200 /* <![CDATA[ */ 201 var google_conversion_id = 990579355; 202 var google_conversion_label = "H99KCKeWxAIQm7S6_wM"; 203 var google_custom_params = window.google_tag_params; 204 var google_remarketing_only = true; 205 /* ]]> */ 206</script>
vendor: 2 bytes, line 206
206
207<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> 208</script>
208 209<noscript> 210 <div style="display:inline;"> 211 <img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/990579355/?value=1.00&currency_code=USD&label=H99KCKeWxAIQm7S6_wM&guid=ON&script=0"/> 212 </div> 213</noscript> 214 215<!-- End: Google Code for General Visitors Remarketing List --> 216 217 218 219 220 221 222 223
224<script src="//rum-static.pingdom.net/pa-5d3201973a70310008000003.js" async></script>
224 225 226 227 228 229 230 231 232 233 234 235 236 237 <!--
237<script type="text/javascript" src="/js/respond.min.js"></script>
237--> 238 239 <meta name="description" content="Save on your contact lenses. Free shipping available within Canada. Up to 70% off on contact lenses by acuvue, ciba, coopervision, bausch and more."> 240 <meta name="aesop" content="sales"> 241 <meta name="google-site-verification" content="ixuPluCB6hPxBWRjd00QfmS5JnwB1AQwbaDamon7w_E" /> 242 <meta name="keywords" content=""> 243 244 245 <!-- Stylesheets 246 ============================================= --> 247 <link href="https://fonts.googleapis.com/css?family=Lato:300,400,400i,700|Raleway:300,400,500,600,700|Crete+Round:400i" rel="stylesheet" type="text/css" /> 248 <link rel="stylesheet" href="/css/kits/bootstrap.css" type="text/css" /> 249 <link rel="stylesheet" href="/css/kits/style.css" type="text/css" /> 250 <link rel="stylesheet" href="/css/kits/swiper.css" type="text/css" /> 251 <link rel="stylesheet" href="/css/kits/dark.css" type="text/css" /> 252 <link rel="stylesheet" href="/css/kits/font-icons.css" type="text/css" /> 253 <link rel="stylesheet" href="/css/kits/animate.css" type="text/css" /> 254 <link rel="stylesheet" href="/css/kits/magnific-popup.css" type="text/css" /> 255 <link rel="stylesheet" href="/css/kits/responsive.css" type="text/css" /> 256 257 258 259 260 261<!-- TrustBox script -->
262<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
vendor: 1 bytes, line 262
262
263<script type="application/javascript" src="https://api.resellerratings.com/assets/script/74a0b722f4f5bbb0efd4039105346bef8"></script>
263 264<!-- End TrustBox script --> 265 266 267 268 269 <link rel="stylesheet" href="/css/kits/custom.css" type="text/css" /> 270 <meta name="viewport" content="width=device-width, initial-scale=1" /> 271 <meta name="p:domain_verify" content="148b90ee12e09a72d94d7cb77e53bdf0"/> 272 273
273<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
273 274
274<script type="text/javascript" src="/js/jquery.enhanced.cookie.js"></script>
274 275
275<script> 276 277//Get number items in cart cookie value and display it beside My Cart 278var nitems = getCookie("nitems"); 279if(nitems && nitems > 0) 280{ 281 $('.nitems').html(nitems).addClass('circle'); 282} 283 284 285var pformvals = getCookie("pform_values"); 286if(pformvals){ 287 pformvals = $.parseJSON(unescape(pformvals)); 288 pformvals_name = pformvals.fname + " " + pformvals.lname; 289 if(pformvals.email) { 290 $('.browseAccount-hello').html('Hello '+pformvals_name+'!'); 291 $('.browseAccount-login').hide(); 292 $('.browseAccount-createnew').hide(); 293 $('.browseAccount-logout').show(); 294 } 295 296} 297 298 299$(function() { 300 $('.language').click(function() { 301 $('.language-dropdown').toggle(); 302 }); 303}); 304 305 306</script>
306 307
308<script type="text/javascript" src="https://www.gstatic.com/firebasejs/8.2.8/firebase-app.js"></script>
vendor: 1 bytes, line 308
308
309<script type="text/javascript" src="https://www.gstatic.com/firebasejs/8.2.8/firebase-analytics.js"></script>
vendor: 1 bytes, line 309
309
310<script type="text/javascript" src="https://www.gstatic.com/firebasejs/8.2.8/firebase-messaging.js"></script>
vendor: 1 bytes, line 310
310
311<script type="text/javascript" src="/js/shared/initialize-sw.js"></script>
311 312 313</head> 314 315<!-- BEGIN OPTI_TOP --> 316 317 318 319 320 321 322 323 324 325 326 327<body class="stretched no-transition"> 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354<link href=" 355https://cdn.jsdelivr.net/npm/@dflock/[email protected]/primeicons.min.css 356" rel="stylesheet"> 357<style> 358#manual-pd-overlay .p-overlaypanel-content { 359 background-color: #ffff; 360 border-radius: 1rem !important; 361 362 padding: 0; 363} 364 365#manual-pd-overlay { 366 padding: 0; 367 button { 368 border: none; 369 background: transparent; 370 } 371 .h-font-weight-600 { 372 font-weight: 600; 373 } 374 .p-button-label { 375 font-weight: 700; 376 } 377 378 border-radius: 1rem !important; 379 .border-round-2xl { 380 border-radius: 1rem !important; 381 } 382 .p-3 { 383 padding: 1rem !important; 384 } 385 .gap-2 { 386 gap: 0.5rem !important; 387 } 388 .align-items-center { 389 align-items: center !important; 390 } 391 .flex-column { 392 flex-direction: column !important; 393 } 394 .flex { 395 display: flex !important; 396 } 397 398 .w-full { 399 width: 100% !important; 400 } 401 .align-items-center { 402 align-items: center !important; 403 } 404 .justify-content-between { 405 justify-content: space-between !important; 406 } 407 .flex-row { 408 flex-direction: row !important; 409 } 410 .flex { 411 display: flex !important; 412 } 413 414 .h-font-size-14 { 415 font-size: 14px; 416 } 417 418 .p-inputnumber { 419 display: inline-flex; 420 } 421 background: #fff; 422 color: #495057; 423 border: 0 none; 424 border-radius: 6px; 425 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); 426 427 .p-inputtext { 428 font-size: 1rem; 429 color: #495057; 430 background: #fff; 431 padding: 0.75rem 0.75rem; 432 border: 1px solid #ced4da; 433 transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; 434 435 -moz-appearance: none; 436 appearance: none; 437 border-radius: 6px; 438 } 439 440 .p-inputtext { 441 margin: 0; 442 } 443 444 .p-inputnumber-input { 445 flex: 1 1 auto; 446 } 447 448 .h-color-pale-sky { 449 color: #717680; 450 } 451 .h-font-size-14 { 452 font-size: 14px; 453 } 454 455 .button__primary-kits { 456 cursor: pointer; 457 display: flex; 458 align-items: center; 459 justify-content: center; 460 background-color: #0a0d12; 461 border: 0.0625rem solid transparent; 462 } 463 .h-font-size-14 { 464 font-size: 14px; 465 } 466 .p-component { 467 font-family: Outfit, sans-serif, Helvetica, Arial !important; 468 font-feature-settings: 'lnum' !important; 469 } 470 .h-2rem { 471 height: 2rem !important; 472 } 473 .w-7rem { 474 width: 7rem !important; 475 } 476 .p-button { 477 color: #fff; 478 479 padding: 0.75rem 1.25rem; 480 481 transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; 482 border-radius: 6px; 483 } 484 .p-component { 485 font-weight: 400; 486 } 487 .p-button { 488 margin: 0; 489 490 -moz-user-select: none; 491 user-select: none; 492 493 vertical-align: bottom; 494 text-align: center; 495 overflow: hidden; 496 position: relative; 497 } 498 .p-component, 499 .p-component * { 500 box-sizing: border-box; 501 } 502 button, 503 [type='button'], 504 [type='reset'], 505 [type='submit'] { 506 -webkit-appearance: button; 507 } 508 509 button, 510 select { 511 text-transform: none; 512 } 513 514 input, 515 button, 516 select, 517 optgroup, 518 textarea { 519 margin: 0; 520 font-family: inherit; 521 font-size: inherit; 522 line-height: inherit; 523 } 524 525 .pi-times:before { 526 content: '\e90b'; 527 } 528 529 .pi:before { 530 --webkit-backface-visibility: hidden; 531 backface-visibility: hidden; 532 } 533} 534 535#manual-pd-overlay:before { 536 bottom: 99%; 537 left: 1.25rem; 538 content: ' '; 539 height: 0; 540 width: 0; 541 position: absolute; 542 pointer-events: none; 543 544 /* Set shorthand first, then override width */ 545 border: solid transparent; 546 border-width: 10px; /* adjust this to control arrow size */ 547 border-bottom-color: #f2f2f2; 548 margin-left: -10px; 549} 550body.p-overflow-hidden { 551 overflow: hidden; 552} 553 554body.p-overflow-hidden { 555 position: unset !important; 556} 557</style> 558<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/resources/themes/lara-light-indigo/theme.css">
559<script src="/js/shared/vue/vto/js/chunk-vendors.js" defer></script>
vendor: 1 bytes, line 559
559
560<script src="/js/shared/vue/vto/js/app.js" defer></script>
560 561<link href="/js/shared/vue/vto/css/chunk-vendors.css" rel="stylesheet"> 562<link href="/js/shared/vue/vto/css/app.css" rel="stylesheet"> 563 564<!-- Cart Reminder Modal --> 565<div class="modal fade" id="cartReminder" tabindex="-1" role="dialog" aria-labelledby="cartReminderTitle" aria-hidden="true"> 566 <div class="modal-dialog modal-dialog-centered" role="document"> 567 <div class="modal-content"> 568 <div class="modal-header border-0"> 569 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 570 <span aria-hidden="true">×</span> 571 </button> 572 </div> 573 <div class="modal-body center"> 574 <img class="mb-2" src="/cart/images/shared/greenshield_lp/gsc_welcome_banner.jpg" width="100%"> 575 <p style="font-size: 24px; font-weight: 700; color: #2e2e2e;"> 576 Welcome back! 577 <br> 578 Ready to check out? 579 </p> 580 <p>You're just one click away from fantastic style and even better savings!</p> 581 </div> 582 <div class="modal-footer border-0" style="justify-content: center;"> 583 <a href="https://www.contactsexpress.ca/ord/checkout" class="review-cart-cta center">REVIEW MY CART</a> 584 <button type="button" class="continue-cta center" data-dismiss="modal">CONTINUE SHOPPING</button> 585 </div> 586 </div> 587 </div> 588</div> 589
590<script> 591 $(document).ready(function(){ 592 /*** Cart reminder logic ***/ 593 let itemsCookie = getCookie("nitems"); 594 let checkCookie = document.cookie.indexOf('savedItems='); 595 596 // Set flag cookie 597 function setCookie(cName, cValue) { 598 let now = new Date(); 599 now.setTime(now.getTime() + 3 * 3600 * 1000); 600 const expires = 'expires=' + now.toUTCString(); 601 document.cookie = cName + '=' + cValue + '; ' + expires + '; path=/'; 602 } 603 604 //Check if the cart has items & if the page is not 'checkout' 605 if(itemsCookie && itemsCookie > 0 && window.location.href.indexOf("checkout") === -1) 606 { 607 if (checkCookie === -1) { 608 //$('#cartReminder').modal('show') 609 setCookie('savedItems', true); 610 } 611 } 612 }) 613</script>
613 614
615<script> 616(function(g,e,o,t,a,r,ge,tl,y,s){ 617t=g.getElementsByTagName(e)[0];y=g.createElement(e);y.async=true; 618y.src='https://g10696554090.co/gr?id=-MHr6_TjZ9tU0Y6zCij6&refurl='+g.referrer+'&winurl='+encodeURIComponent(window.location); 619t.parentNode.insertBefore(y,t); 620})(document,'script'); 621</script>
621 622 623<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;1,100;1,200;1,300;1,400&display=swap" rel="stylesheet"> 624<link href="https://fonts.googleapis.com/css2?family=Raleway: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="stylesheet"> 625<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet"> 626<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"/> 627<link rel="stylesheet" href="/css/autocomplete.css" type="text/css" media="all" /> 628
629<script> 630try 631{ 632 if(getCookie('ga_internal_session')){ 633 dataLayer.push({'internalSessionID': getCookie('ga_internal_session') }); 634 635 } 636} 637catch{ 638 639} 640</script>
640 641<style> 642 body { 643 font-feature-settings: "lnum"; 644 } 645 body.no-scroll { 646 position: fixed; 647 width: 100%; 648 overflow: hidden !important; 649 height: 100vh !important; 650 height: calc(100vh - env(safe-area-inset-bottom)); 651 } 652 [dropdown-toggle] { 653 cursor: pointer; 654 } 655 .w-lg-0 { 656 @media (min-width: 992px) { 657 width: unset !important; 658 } 659 } 660 .gap-1 { 661 gap: 4px; 662 } 663 .gap-2 { 664 gap: 8px; 665 } 666 .gap-3 { 667 gap: 16px; 668 } 669 .gap-4 { 670 gap: 24px; 671 } 672 .gap-5 { 673 gap: 32px; 674 } 675 .h-fit-content { 676 height: fit-content !important; 677 } 678 .stripe-dropdown-opened, .header-dropdown-opened { 679 position: fixed; 680 z-index: 1006; 681 top: 0; 682 width: 100%; 683 height: 100%; 684 background-color: #000000; 685 opacity: 10%; 686 } 687 .header-dropdown-opened { 688 z-index: 1006; 689 } 690 .veero-eyefit-modal { 691 z-index: 99999; 692 } 693 .canada-post-strike__heading { 694 font-size: 32px; 695 font-weight: 700; 696 text-align: center; 697 } 698 .canada-post-strike__body, .canada-post-strike__body li { 699 font-size: 14px !important; 700 font-weight: 400 !important; 701 line-height: unset !important; 702 } 703 .canada-post-strike__learn-more { 704 font-size: 14px; 705 font-weight: 400; 706 color: inherit !important; 707 } 708 .mfp-content { 709 &:has(#free_sunglasses_disclaimer, #summer_black_friday_2026) { 710 width: 100% !important; 711 max-width: 400px !important; 712 border-radius: 16px; 713 } 714 @scope (#free_sunglasses_disclaimer, #summer_black_friday_2026) { 715 .modal__heading { 716 font-size: 24px; 717 font-weight: 600; 718 color: #181D27; 719 } 720 .modal__subheading { 721 font-size: 16px; 722 font-weight: 400; 723 color: #535862; 724 } 725 .modal__item-container { 726 display: flex; 727 flex-wrap: wrap; 728 } 729 .modal__cta-container { 730 display: flex; 731 justify-content: center; 732 gap: 8px; 733 padding-top: 24px; 734 padding-bottom: 16px; 735 } 736 .modal__cta { 737 display: block !important; 738 background-color: #ffffff; 739 border: 1px solid #D5D7DA; 740 text-align: center; 741 color: #414651; 742 font-size: 16px; 743 font-weight: 600; 744 padding: 10px 16px; 745 border-radius: 8px; 746 &:hover { 747 color: #252B37; 748 background-color: #F5F5F5; 749 border: 1px solid #D5D7DA; 750 } 751 &:active { 752 color: #414651; 753 background-color: #ffffff; 754 border: 1px solid #181D27; 755 } 756 } 757 } 758 @scope (#summer_black_friday_2026) { 759 .modal__subheading { 760 max-height: 400px; 761 overflow: auto; 762 } 763 } 764 } 765 .text-decoration-underline { 766 text-decoration: underline !important; 767 } 768 .stripe--border-left { 769 border-left: 1px solid #ffffff; 770 } 771 .stripe__background { 772 display: flex; 773 flex-direction: row; 774 background-color: #000000; 775 776 777 background-color: #181D27; 778 779 color: #ffffff; 780 min-height: 50px; 781 justify-content: space-between; 782 align-items: center; 783 text-align: center; 784 overflow: hidden; 785 position: relative; 786 } 787 .stripe__promo-list { 788 display: flex; 789 align-items: center; 790 flex: 1; 791 } 792 .stripe__promo { 793 display: none; 794 font-size: 14px; 795 font-weight: 500; 796 width: 100%; 797 color: #ffffff !important; 798 justify-content: center; 799 align-items: center; 800 flex-wrap: wrap; 801 /* row-gap: 10px; */ 802 } 803 .stripe__promo:hover { 804 color: #ffffff; 805 } 806 .stripe__promo > a { 807 color: #ffffff !important; 808 font-size: 14px; 809 font-weight: 500; 810 align-self: center; 811 /* column-gap: 20px; */ 812 /* row-gap: 10px; */ 813 } 814 .stripe__promo a:hover { 815 color: #ffffff; 816 } 817 .stripe__shop-now { 818 border: 1px solid #ffffff; 819 border-radius: 6px; 820 padding: 4px 16px; 821 background-color: transparent; 822 margin-left: 20px; 823 margin-top: 0; 824 color: inherit !important; 825 font-size: inherit !important; 826 font-weight: inherit !important; 827 } 828 .stripe__autoship--pill { 829 background-color: #ef6c00; 830 border-radius: 20px; 831 color: #ffffff; 832 padding: 5px 15px; 833 margin: 0 5px; 834 } 835 .stripe__autoship--logo { 836 padding-bottom: 1px; 837 max-width: 76px; 838 width: 76px; 839 margin: 0 5px; 840 } 841 .stripe__autoship--terms { 842 font-weight: bold; 843 white-space: nowrap; 844 text-decoration: underline !important; 845 } 846 .stripe__conditions, .stripe__conditions:is(:hover, :active) { 847 color: #ffffff !important; 848 font-size: 12px !important; 849 font-weight: 500 !important; 850 margin-inline: 10px !important; 851 line-height: initial !important; 852 } 853 .stripe__control { 854 cursor: pointer; 855 display: none; 856 } 857 .stripe__help-me { 858 cursor: pointer; 859 font-size: 14px; 860 font-weight: 500; 861 color: #ffffff; 862 } 863 .stripe__join-kits-plus { 864 font-size: 14px; 865 font-weight: 500; 866 color: #ffffff; 867 } 868 .stripe__join-kits-plus:hover { 869 color: #ffffff; 870 } 871 .stripe__dropdown { 872 position: absolute; 873 z-index: 5; 874 right: 30px; 875 display: none; 876 } 877 .stripe-dropdown__wrapper { 878 background-color: #ffffff; 879 padding: 32px; 880 } 881 .stripe-dropdown__wrapper--dark { 882 background-color: #F5F6F7; 883 } 884 .stripe-dropdown__button { 885 display: flex; 886 justify-content: center; 887 align-items: center; 888 border: 1px solid #0E0F11; 889 text-align: center; 890 border-radius: 6px; 891 padding: 8px 24px; 892 color: #0E0F11; 893 font-size: 16px; 894 font-weight: 500; 895 } 896 .stripe-dropdown__button:hover { 897 color: #0E0F11; 898 } 899 .stripe-dropdown__category { 900 font-size: 16px; 901 font-weight: 600; 902 color: #0E0F11; 903 } 904 .stripe-dropdown__cta { 905 display: flex; 906 font-size: 16px; 907 font-weight: 400; 908 color: #0E0F11; 909 cursor: pointer; 910 } 911 .stripe-dropdown__cta:hover { 912 color: #0E0F11; 913 text-decoration: underline !important; 914 } 915 .stripe-dropdown__fine-print { 916 color: #787B80; 917 font-size: 14px; 918 font-weight: 400; 919 } 920 .stripe__languages { 921 display: flex; 922 column-gap: 10px; 923 font-size: 14px; 924 font-weight: 400; 925 color: #C8CACC; 926 } 927 .stripe__languages span { 928 cursor: pointer; 929 } 930 .language__selector--active { 931 color: #ffffff; 932 font-weight: 500; 933 } 934 .header-mobile__category .language__selector--active { 935 color: #0E0F11; 936 font-weight: 400; 937 } 938 .language__selector { 939 color: #939599; 940 font-weight: 400; 941 } 942 .stripe__countdown { 943 display: none; 944 line-height: 1 !important; 945 column-gap: 5px; 946 font-size: 14px; 947 font-weight: 700; 948 margin-right: 20px; 949 align-items: center; 950 } 951 .stripe__time { 952 background-color: #ffffff; 953 color: #2e2e2e; 954 margin-right: 2px; 955 margin-left: 2px; 956 border-radius: 4px; 957 width: 25px; 958 height: 25px; 959 display: inline-block; 960 align-content: center; 961 } 962 .stripe__time-type { 963 font-size: 12px; 964 font-weight: 400; 965 color: #FACACA; 966 } 967 .stripe__pill {
968 background-color: #ffffff; 969 border-radius: 20px; 970 color: #000000; 971 padding: 5px 15px; 972 margin: 0 5px; 973 white-space: nowrap; 974 } 975 .stripe__pill--gradient { 976 padding: 4px 30px; 977 /* background: linear-gradient(90deg, #0A29C2 -4.86%, #4767FF 48.17%, #3D11DB 100.14%); 978 box-shadow: 0px -4px 20px rgba(25, 130, 248, 0.3), 0px 4px 20px rgba(34, 137, 253, 0.4); */ 979 background: linear-gradient(90deg, #A67450 0%, #E3AB82 50%, #935F39 100%); 980 box-shadow: 0px -4px 20px rgba(213, 158, 119, 0.3), 0px 4px 20px rgba(213, 158, 119, 0.4); 981 border-radius: 20px; 982 margin-right: 10px; 983 color: #0E0F11; 984 } 985 .nav__sticky { 986 /* position: absolute; */ 987 /* top: 0; */ 988 /* z-index: 1007; */ 989 position: relative; 990 z-index: 1007; 991 width: 100%; 992 background-color: #ffffff; 993 } 994 #header { 995 position: relative; 996 z-index: 1008; 997 } 998 #site-stripe { 999 position: relative; 1000 z-index: 1009; 1001 } 1002 .stripe--sticky { 1003 position: fixed !important; 1004 display: block; 1005 top: 0; 1006 z-index: 1008; 1007 width: 100%; 1008 } 1009 .header--sticky { 1010 position: fixed !important; 1011 z-index: 1007; 1012 width: 100%; 1013 } 1014 .header__container { 1015 min-height: 70px; 1016 display: flex; 1017 align-items: center; 1018 justify-content: space-between; 1019 /* border-bottom: 1px solid #EBEDF0; */ 1020 padding: 0 24px; 1021 transition: 0.35s; 1022 background-color: #ffffff !important; 1023 &:has([data-active-search="optician"]) { 1024 background-color: #ebf5ff !important; 1025 } 1026 @media (max-width: 575px) { 1027 margin-bottom: 75px; 1028 padding-inline: 16px; 1029 } 1030 } 1031 .header__logo { 1032 width: 100%; 1033 max-width: 180px; 1034 /* margin-right: 10px; */ 1035 &.header__logo--kits { 1036 max-width: fit-content; 1037 @media (max-width: 575px) { 1038 max-width: 120px; 1039 } 1040 } 1041 } 1042 .header__categories { 1043 height: stretch; 1044 display: flex; 1045 align-items: center; 1046 justify-content: center; 1047 position: relative; 1048 background-color: #F7F8F9; 1049 } 1050 .header__category-option { 1051 padding: 16px 24px; 1052 1053 color: #0E0F11; 1054 font-weight: 500; 1055 font-size: 16px; 1056 cursor: pointer; 1057 border-bottom: 2px solid #F7F8F9; 1058 height: 100%; 1059 align-content: center; 1060 &[data-dropdown-type="smart-glasses"] .smart-glasses__new-pill { 1061 padding: 2px 6px; 1062 border-radius: 9999px; 1063 background-color: #1960EF; 1064 color: #ffffff; 1065 font-size: 14px; 1066 font-weight: 500; 1067 } 1068 } 1069 .header__category-option:hover { 1070 color: #0E0F11; 1071 } 1072 .header__category-option[data-dropdown-opened="true"], 1073 .header__utility[data-dropdown-opened="true"] { 1074 border-bottom: 2px solid #000000; 1075 } 1076 .header__category-option[data-dropdown-opened="true"].border-bottom--sale { 1077 border-bottom: 2px solid #DC2626; 1078 } 1079 .header__category-option[data-dropdown-opened="true"].border-bottom--insurance { 1080 border-bottom: 2px solid #000000; 1081 } 1082 .header__utilities { 1083 display: flex; 1084 align-items: center; 1085 height: 70px; 1086 /* padding-right: 8px; */ 1087 } 1088 .header__utilities:has(.header__search[data-dropdown-opened="true"], .header__search--mobile[data-dropdown-opened="true"]) { 1089 display: none; 1090 } 1091 .header__utility { 1092 display: flex; 1093 align-items: center; 1094 height: 100%; 1095 font-size: 16px; 1096 font-weight: 400; 1097 color: #0E0F11; 1098 border-bottom: 2px solid #ffffff; 1099 padding-inline: 10px; 1100 } 1101 .header__utility:hover { 1102 border-bottom: 2px solid #000000; 1103 } 1104 .border-bottom--primary:hover { 1105 border-bottom: 2px solid #000000; 1106 } 1107 .border-bottom--sale:hover { 1108 border-bottom: 2px solid #DC2626; 1109 } 1110 .border-bottom--insurance:hover { 1111 border-bottom: 2px solid #000000; 1112 } 1113 .legacy-search { 1114 flex: 1; 1115 max-width: 500px; 1116 margin-inline: 20px; 1117 @media (max-width: 991px) { 1118 /* top: 20%; */ 1119 } 1120 @media (max-width: 767px) { 1121 width: 100%; 1122 position: absolute; 1123 left: 0; 1124 top: 100%; 1125 max-width: unset; 1126 background-color: #FAFAFA; 1127 padding: 16px; 1128 margin: 0; 1129 } 1130 .legacy-search__wrapper { 1131 border: 1px solid #dee2e6; 1132 border-radius: 9999px; 1133 padding: 10px; 1134 display: flex; 1135 flex-direction: row; 1136 align-items: center; 1137 justify-content: space-between; 1138 width: 100%; 1139 background-color: #ffffff; 1140 position: relative; 1141 padding-right: 40px; 1142 color: #717680; 1143 @media (max-width: 767px) { 1144 max-width: 500px; 1145 place-self: center; 1146 } 1147 } 1148 } 1149 .header__optician { 1150 display: flex; 1151 flex-direction: row; 1152 justify-content: center; 1153 align-items: center; 1154 white-space: nowrap; 1155 padding: 8px 12px; 1156 margin-inline: 10px; 1157 gap: 2px; 1158 border-radius: 8px; 1159 background: linear-gradient(45deg, #0017E4 0%, #3793FF 100%); 1160 font-size: 14px; 1161 font-weight: 600; 1162 color: #ffffff !important; 1163 @media (max-width: 991px) { 1164 background: linear-gradient(90deg, #2D4EF0 -4.86%, #4767FF 48.17%, #5938D2 100.14%); 1165 padding: 6px; 1166 & span { 1167 font-size: 12px; 1168 } 1169 } 1170 } 1171 .barcode-scanner { 1172 position: absolute; 1173 right: 8px; 1174 padding: 6px; 1175 border-radius: 8px; 1176 cursor: pointer; 1177 &:hover { 1178 background-color: #F5F5F5; 1179 } 1180 &:active { 1181 background-color: #ffffff; 1182 } 1183 } 1184 .header__search { 1185 /* display: flex; 1186 align-items: center; 1187 width: 250px; 1188 height: 34px; 1189 border: 1px solid #EBEDF0; 1190 border-radius: 20px; 1191 color: #BBC1C9; 1192 padding: 10px; */ 1193 cursor: pointer; 1194 padding-inline: 10px; 1195 height: 100%; 1196 align-content: center; 1197 } 1198 .header__search:hover { 1199 /* border: 1px solid #0E0F11; */ 1200 } 1201 .header__search--mobile { 1202 display: block; 1203 } 1204 .header-search-bar__container { 1205 background-color: transparent; 1206 width: 100%; 1207 top: 0; 1208 display: none; 1209 border-radius: 0 0 8px 8px; 1210 padding: 0 10px; 1211 } 1212 .header-search-bar__optician-wrapper { 1213 color: #414651; 1214 font-size: 14px; 1215 font-weight: 600; 1216 display: flex; 1217 align-items: center; 1218 gap: 4px; 1219 width: fit-content; 1220 margin-right: 20px;
1221 border: 1px solid #D5D7DA; 1222 border-radius: 8px; 1223 padding: 10px 26px; 1224 white-space: nowrap; 1225 min-width: 148px; 1226 background-color: #ffffff; 1227 } 1228 .header-search-bar__close, .header-mobile__close { 1229 display: block; 1230 margin-left: 10px; 1231 cursor: pointer; 1232 } 1233 .header-search-bar__wrapper { 1234 display: flex; 1235 justify-content: space-between; 1236 align-items: center; 1237 border: 1px solid #D5D7DA; 1238 border-radius: 8px; 1239 padding: 8px 16px; 1240 width: 100%; 1241 max-width: 575px; 1242 background-color: #ffffff; 1243 @media (max-width: 991px) { 1244 max-width: unset; 1245 } 1246 &.optician-search { 1247 .search-icon { 1248 display: none; 1249 } 1250 .optician-icon { 1251 display: block; 1252 } 1253 } 1254 } 1255 .header-search-bar__wrapper:has(#search-input:focus, #search-input-1:focus, #search-input-2:focus) { 1256 border: 1px solid #000000; 1257 &.optician-search { 1258 border: 1px solid #1960EF !important; 1259 } 1260 } 1261 .optician-icon { 1262 display: none; 1263 } 1264 .optician-search-type-wrapper { 1265 position: relative; 1266 display: flex; 1267 flex-direction: row; 1268 justify-content: space-between; 1269 align-items: center; 1270 border: 1px solid #D5D7DA; 1271 border-radius: 8px; 1272 padding: 12px 6px; 1273 margin-right: 30px; 1274 background-color: #fafafa; 1275 position: relative; 1276 gap: 10px; 1277 font-size: 14px; 1278 font-weight: 500; 1279 white-space: nowrap; 1280 .search-type-highlight { 1281 position: absolute; 1282 top: 10%; 1283 z-index: 0; 1284 background-color: #ffffff; 1285 height: 80%; 1286 width: 118px; 1287 border-radius: 8px; 1288 transition: 0.35s; 1289 left: 2%; 1290 transform: translateX(0%); 1291 box-shadow: 0 1px 2px -1px #0a0d121a,0 1px 3px #0a0d121a; 1292 } 1293 &[data-active-search="optician"] .search-type-highlight { 1294 transform: translateX(100%); 1295 background-color: #0f50d2; 1296 box-shadow: unset; 1297 } 1298 .search-type-trigger { 1299 z-index: 1; 1300 display: flex; 1301 justify-content: center; 1302 align-items: center; 1303 cursor: pointer; 1304 width: 112px; 1305 transition: 0.35s; 1306 &[search-type-trigger="search"] { 1307 color: #181D27; 1308 } 1309 &[search-type-trigger="optician"] { 1310 color: #0f50d2; 1311 } 1312 .optician-icon-blue { 1313 display: block; 1314 } 1315 .optician-icon-white { 1316 display: none; 1317 } 1318 } 1319 &[data-active-search="optician"] .search-type-trigger[search-type-trigger="optician"] { 1320 color: #ffffff; 1321 .optician-icon-blue { 1322 display: none; 1323 } 1324 .optician-icon-white { 1325 display: block; 1326 } 1327 } 1328 } 1329 .header-search-bar__input { 1330 border: 0; 1331 font-size: 16px; 1332 font-weight: 400; 1333 width: 100%; 1334 } 1335 .header-search-bar__input::placeholder { 1336 color: #BBC1C9; 1337 font-size: 14px; 1338 font-weight: 400; 1339 } 1340 .header-search-bar__clear { 1341 font-size: 14px; 1342 font-weight: 400; 1343 color: #939599; 1344 text-decoration: underline; 1345 cursor: pointer; 1346 display: none; 1347 } 1348 .loading-dots { 1349 display: flex; 1350 gap: 10px; 1351 justify-content: center; 1352 align-items: center; 1353 width: 100%; 1354 height: 100px; 1355 } 1356 .loading-dots span { 1357 width: 13px; 1358 height: 13px; 1359 background-color: #000000; 1360 border-radius: 50%; 1361 display: inline-block; 1362 animation: dance 1.5s infinite ease-in-out; 1363 &:has(.optician) { 1364 background-color: #0f50d2; 1365 } 1366 } 1367 .loading-dots span:nth-child(1) { 1368 animation-delay: 0s; 1369 } 1370 .loading-dots span:nth-child(2) { 1371 animation-delay: 0.3s; 1372 } 1373 .loading-dots span:nth-child(3) { 1374 animation-delay: 0.6s; 1375 } 1376 .loading-dots span:nth-child(4) { 1377 animation-delay: 0.9s; 1378 } 1379 .loading-dots-optician { 1380 display: flex; 1381 gap: 10px; 1382 justify-content: center; 1383 align-items: center; 1384 width: fit-content; 1385 margin-right: 25px; 1386 span { 1387 width: 5px; 1388 height: 5px; 1389 background-color: #0f50d2; 1390 border-radius: 50%; 1391 display: inline-block; 1392 animation: dance 1.5s infinite ease-in-out; 1393 &:nth-of-type(1) { 1394 animation-delay: 0s; 1395 } 1396 &:nth-of-type(2) { 1397 animation-delay: 0.3s; 1398 } 1399 &:nth-of-type(3) { 1400 animation-delay: 0.6s; 1401 } 1402 } 1403 } 1404 1405 @keyframes dance { 1406 0% { 1407 transform: translateX(0) scale(0.4); 1408 opacity: 0; 1409 } 1410 25% { 1411 transform: translateX(5px) scale(1); 1412 opacity: 1; 1413 } 1414 75% { 1415 transform: translateX(10px) scale(1); 1416 } 1417 100% { 1418 transform: translateX(15px) scale(0.4); 1419 opacity: 0; 1420 } 1421 } 1422 @keyframes loading { 1423 0% { 1424 transform: translateX(-100%); 1425 } 1426 100% { 1427 transform: translateX(100%); 1428 } 1429 } 1430 .search-dropdown__heading { 1431 font-size: 16px; 1432 font-weight: 600; 1433 color: #717680; 1434 } 1435 .search-dropdown__popular-search { 1436 width: 100%; 1437 } 1438 .search-dropdown__pills-wrapper, .search-dropdown__suggestions-wrapper { 1439 display: flex; 1440 flex-wrap: wrap; 1441 gap: 10px; 1442 padding: 20px 0; 1443 } 1444 .search-dropdown__suggestions-wrapper { 1445 flex-direction: column; 1446 } 1447 .search-dropdown__pills-wrapper { 1448 overflow-x: auto; 1449 scrollbar-width: none; 1450 } 1451 .search-dropdown__pill { 1452 display: block; 1453 color: #0E0F11; 1454 background-color: #EBEDF0; 1455 border-radius: 20px; 1456 padding: 8px 12px; 1457 font-size: 14px; 1458 font-weight: 400; 1459 cursor: pointer; 1460 white-space: nowrap; 1461 } 1462 .search-dropdown__pill:hover { 1463 background-color: #DCDEE0; 1464 color: #0E0F11; 1465 } 1466 [data-search-optician] .search-dropdown__pill { 1467 background-color: #ebf5ff; 1468 } 1469 .search-dropdown__pill--loading { 1470 height: 37px; 1471 cursor: default; 1472 background-color: #F5F5F5 !important; 1473 position: relative; 1474 overflow: hidden; 1475 &:nth-of-type(1) { 1476 width: 130px; 1477 } 1478 &:nth-of-type(2) { 1479 width: 150px; 1480 } 1481 &:nth-of-type(3) { 1482 width: 175px; 1483 } 1484 &:nth-of-type(4) { 1485 width: 110px; 1486 } 1487 &:nth-of-type(5) { 1488 width: 160px; 1489 } 1490 &::after {
1491 content: ''; 1492 animation: loading 1.2s infinite; 1493 height: 100%; 1494 left: 0; 1495 position: absolute; 1496 right: 0; 1497 top: 0; 1498 transform: translateX(-100%); 1499 z-index: 1; 1500 background: linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.4),hsla(0,0%,100%,0)); 1501 } 1502 } 1503 .search-dropdown__suggestion { 1504 font-size: 16px; 1505 font-weight: 400; 1506 color: #0E0F11; 1507 cursor: pointer; 1508 display: block; 1509 width: fit-content; 1510 } 1511 .search-dropdown__suggestion--match { 1512 font-weight: 700; 1513 } 1514 .search-dropdown__suggestion--no-match { 1515 cursor: default; 1516 color: #5A5D63; 1517 } 1518 .search-dropdown__products-container { 1519 display: flex; 1520 flex-wrap: wrap; 1521 width: 100%; 1522 padding-bottom: 60px; 1523 } 1524 .search-dropdown__category { 1525 color: #4B608B; 1526 font-size: 16px; 1527 font-weight: 400; 1528 text-decoration: underline !important; 1529 } 1530 .search-dropdown__category:hover { 1531 color: #4B608B; 1532 } 1533 .search-dropdown__products-list { 1534 display: flex; 1535 flex-wrap: wrap; 1536 } 1537 .search-dropdown__product-wrapper { 1538 display: flex; 1539 flex-direction: column; 1540 width: 100%; 1541 height: 100%; 1542 justify-content: center; 1543 &.loading { 1544 gap: 10px; 1545 padding-bottom: 15px; 1546 } 1547 .search-dropdown__product-loading { 1548 width: 100%; 1549 position: relative; 1550 overflow: hidden; 1551 background-color: #F5F5F5 !important; 1552 border-radius: 8px; 1553 &:nth-of-type(1) { 1554 height: 150px; 1555 } 1556 &:nth-of-type(2) { 1557 height: 12px; 1558 max-width: 70%; 1559 } 1560 &:nth-of-type(3) { 1561 height: 12px; 1562 max-width: 40%; 1563 } 1564 &::after { 1565 content: ''; 1566 animation: loading 1.2s infinite; 1567 height: 100%; 1568 left: 0; 1569 position: absolute; 1570 right: 0; 1571 top: 0; 1572 transform: translateX(-100%); 1573 z-index: 1; 1574 background: linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.4),hsla(0,0%,100%,0)); 1575 } 1576 } 1577 } 1578 .search-dropdown__product-image--alt { 1579 display: none; 1580 } 1581 .search-dropdown__product-wrapper[data-product-type="glasses"]:hover .search-dropdown__product-image--main { 1582 display: none; 1583 } 1584 .search-dropdown__product-wrapper[data-product-type="glasses"]:hover .search-dropdown__product-image--alt { 1585 display: block; 1586 } 1587 .search-dropdown__product-brand, .header-dropdown__product-brand { 1588 font-size: 16px; 1589 font-weight: 600; 1590 color: #0E0F11; 1591 } 1592 .search-dropdown__product-name, .header-dropdown__product-name { 1593 font-size: 16px; 1594 font-weight: 400; 1595 color: #404347; 1596 } 1597 .search-dropdown__product-price, .header-dropdown__product-price { 1598 font-size: 16px; 1599 font-weight: 500; 1600 color: #0E0F11; 1601 padding-top: 5px; 1602 } 1603 .search-dropdown__product-price--discounted, .header-dropdown__product-price--discounted { 1604 color: #DC2626; 1605 } 1606 .search-dropdown__product-price--strikethrough, .header-dropdown__product-price--strikethrough { 1607 text-decoration: line-through; 1608 } 1609 .header__dropdown { 1610 display: none; 1611 position: absolute; 1612 top: 99%; 1613 z-index: 5; 1614 background-color: #ffffff; 1615 padding: 32px 0; 1616 overflow: auto; 1617 border-top: 1px solid #EBEDF0; 1618 height: 400px; 1619 } 1620 .header__dropdown--wide { 1621 width: 100%; 1622 margin: 0 auto; 1623 } 1624 .header__dropdown[data-dropdown-type="account"] { 1625 right: 0; 1626 border-radius: 0 0 8px 8px; 1627 max-width: 375px; 1628 width: 100%; 1629 height: unset; 1630 @media (max-width: 575px) { 1631 max-width: unset; 1632 } 1633 } 1634 .header__dropdown[data-dropdown-type="hamburger"] { 1635 right: 0; 1636 border-radius: 0 0 8px 8px; 1637 max-width: 375px; 1638 width: 100%; 1639 overflow-x: hidden; 1640 overflow-y: auto; 1641 height: unset; 1642 max-height: 80vh; 1643 padding-bottom: 80px; 1644 } 1645 .header__dropdown[data-dropdown-type="cart"], .header__dropdown[data-dropdown-type="favorites"] { 1646 right: 0; 1647 border-radius: 0 0 8px 8px; 1648 max-width: 320px; 1649 width: 100%; 1650 overflow: auto; 1651 height: unset; 1652 max-height: 80vh; 1653 } 1654 .header__dropdown[data-dropdown-type="favorites"] .header-dropdown__product-wrapper { 1655 max-height: 400px; 1656 } 1657 .header__dropdown[data-dropdown-type="search"] { 1658 height: 100vh; 1659 } 1660 .header-dropdown__container { 1661 display: flex; 1662 flex-wrap: nowrap; 1663 justify-content: space-between; 1664 padding-inline: 2%; 1665 max-width: 1440px; 1666 } 1667 .header__dropdown[data-dropdown-type="search"] .header-dropdown__container { 1668 max-width: unset; 1669 } 1670 .header-dropdown__container[data-search-optician] { 1671 justify-content: center; 1672 } 1673 .optician-show-all { 1674 align-items: center; 1675 background-color: #0a0d12; 1676 border: 1px solid transparent; 1677 border-radius: .5rem; 1678 cursor: pointer; 1679 display: flex; 1680 justify-content: center; 1681 padding: 10px; 1682 color: #ffffff; 1683 margin-top: 30px; 1684 font-size: 16px; 1685 } 1686 .optician-thoughts-container { 1687 display: flex; 1688 align-items: center; 1689 } 1690 .optician-thoughts { 1691 color: #0C41AC; 1692 font-size: 16px; 1693 font-weight: 400; 1694 } 1695 @scope ([data-dropdown-type="designer"]) { 1696 .header-dropdown__container { 1697 justify-content: center; 1698 } 1699 } 1700 @scope ([data-dropdown-type="contacts"]) { 1701 .header-dropdown__container { 1702 /* justify-content: center; */ 1703 } 1704 } 1705 [dropdown][data-dropdown-type="cart"] .header-dropdown__products-list { 1706 height: 100%; 1707 overflow: auto; 1708 max-height: 40vh; 1709 } 1710 .header-dropdown__item { 1711 font-size: 18px; 1712 font-weight: 500; 1713 color: #181D27; 1714 display: flex; 1715 align-items: center; 1716 padding: 5px 0; 1717 } 1718 .header-dropdown__item--bold { 1719 font-size: 16px; 1720 font-weight: 600; 1721 color: #717680; 1722 } 1723 .header__dropdown:not(:has([mini-hamburger])) a.header-dropdown__item:hover { 1724 text-decoration: underline #181D27 !important; 1725 } 1726 .header__dropdown:not(:has([mini-hamburger])) a.header-dropdown__item--DC2626:hover { 1727 text-decoration: underline #DC2626 !important; 1728 } 1729 .header__dropdown:not(:has([mini-hamburger])) a.header-dropdown__item--0F50D2:hover { 1730 text-decoration: underline #0F50D2 !important; 1731 } 1732 [mini-hamburger] .header-dropdown__item { 1733 color: #181D27; 1734 font-size: 20px; 1735 font-weight: 500; 1736 } 1737 [mini-hamburger] .header-dropdown__item--bold { 1738 color: #717680; 1739 font-size: 14px; 1740 font-weight: 600; 1741 } 1742 [mini-hamburger][data-dropdown-type="mobile-help"] .header-dropdown__item { 1743 color: #414651; 1744 font-size: 14px; 1745 font-weight: 500; 1746 } 1747 .header-dropdown__item--DC2626, a.header-dropdown__item--DC2626:hover { 1748 color: #DC2626 !important; 1749 } 1750 .header-dropdown__item--0F50D2, a.header-dropdown__item--0F50D2:hover { 1751 color: #0F50D2 !important; 1752 } 1753 .header-dropdown__item--001CA8, a.header-dropdown__item--001CA8:hover { 1754 color: #001CA8 !important; 1755 } 1756 .header-dropdown__item--DC6803, a.header-dropdown__item--DC6803:hover { 1757 color: #DC6803 !important; 1758 } 1759 .header-dropdown__options-wrapper { 1760 width: 200px; 1761 } 1762 .header-dropdown__brands-wrapper { 1763 max-width: 425px; 1764 padding-inline: 20px; 1765 } 1766 .header-dropdown__tile-wrapper, .search-dropdown__promo-wrapper { 1767 display: flex; 1768 flex-direction: column; 1769 row-gap: 10px; 1770 margin: 16px; 1771 max-width: 300px; 1772 } 1773 @scope (.header__dropdown[data-dropdown-type="sale"]) { 1774 .header-dropdown__tile-wrapper { 1775 margin-inline: 24px; 1776 } 1777 } 1778 .header-dropdown__tile-heading, .search-dropdown__promo-heading { 1779 color: #181D27; 1780 font-size: 18px; 1781 font-weight: 600; 1782 padding-top: 10px; 1783 max-width: inherit; 1784 } 1785 .header-dropdown__tile-subheading, .search-dropdown__promo-subheading { 1786 color: #414651; 1787 font-size: 14px; 1788 font-weight: 500; 1789 display: flex; 1790 align-items: center; 1791 column-gap: 10px; 1792 width: fit-content; 1793 } 1794 :is(.header-dropdown__tile-wrapper, .search-dropdown__promo-wrapper):hover :is(.search-dropdown__promo-subheading, .header-dropdown__tile-subheading) { 1795 border-bottom: 1px solid #414651; 1796 } 1797 .header-dropdown__readers-heading { 1798 color: #181D27; 1799 font-size: 20px; 1800 font-weight: 600; 1801 } 1802 .header-dropdown__readers-subheading { 1803 color: #414651; 1804 font-size: 16px; 1805 font-weight: 400; 1806 @media (max-width: 991px) { 1807 color: #535862; 1808 font-size: 14px; 1809 } 1810 } 1811 .header-dropdown__readers-cta { 1812 color: #414651 !important; 1813 font-size: 14px; 1814 font-weight: 500; 1815 display: flex; 1816 align-items: center; 1817 column-gap: 10px; 1818 width: fit-content; 1819 } 1820 .header-dropdown__readers-cta:hover { 1821 border-bottom: 1px solid #414651; 1822 } 1823 .header-dropdown__account-welcome { 1824 font-size: 18px; 1825 font-weight: 500; 1826 color: #0E0F11; 1827 padding-bottom: 20px; 1828 } 1829 .header-dropdown__pill { 1830 background-color: #F1F3FD; 1831 font-size: 12px; 1832 font-weight: 500; 1833 padding: 4px 8px; 1834 border-radius: 8px; 1835 margin-left: 5px; 1836 display: inline-block; 1837 color: #0C41AC; 1838 } 1839 .header-dropdown__pill--new { 1840 background-color: #E6FA85; 1841 color: #383D21; 1842 border-radius: 2px; 1843 padding: 2px 6px; 1844 font-size: 16px; 1845 font-weight: 400; 1846 @media (max-width: 768px) { 1847 font-size: 14px; 1848 } 1849 } 1850 .header-dropdown__pill--gradient { 1851 background: linear-gradient(90deg, #0A29C2 -4.86%, #4767FF 48.17%, #3D11DB 100.14%); 1852 -webkit-background-clip: text; 1853 -webkit-text-fill-color: transparent; 1854 background-clip: text; 1855 text-fill-color: transparent; 1856 } 1857 .header__items-count { 1858 position: absolute; 1859 color: #ffffff; 1860 bottom: 10px; 1861 right: -2px; 1862 background-color: #0E0F11; 1863 height: 25px; 1864 width: 25px; 1865 display: none;
1866 align-items: center; 1867 justify-content: center; 1868 border-radius: 50px; 1869 border: 2px solid #ffffff; 1870 font-size: 13px; 1871 } 1872 .header-dropdown__image { 1873 /* border-radius: 8px; */ 1874 } 1875 [data-dropdown-type="readers"] .header-dropdown__image { 1876 max-height: 70%; 1877 } 1878 .header-dropdown__button-container { 1879 display: flex; 1880 flex-direction: row; 1881 gap: 24px; 1882 } 1883 .header-dropdown__button { 1884 padding: 10px 16px; 1885 display: flex; 1886 justify-content: center; 1887 gap: 5px; 1888 border-radius: 6px; 1889 font-size: 16px; 1890 font-weight: 600; 1891 width: 100%; 1892 transition: 0.35s; 1893 } 1894 .header-dropdown__button--black { 1895 color: #ffffff; 1896 background-color: #0A0D12; 1897 border: 1px solid #0A0D12; 1898 } 1899 .header-dropdown__button--black:hover { 1900 color: #ffffff; 1901 background-color: #0A0D12; 1902 border: 1px solid #0A0D12; 1903 } 1904 .header-dropdown__button--black:active { 1905 color: #ffffff; 1906 background-color: #0A0D12; 1907 border: 1px solid #0A0D12; 1908 } 1909 .header-dropdown__button--white { 1910 color: #414651; 1911 background-color: #ffffff; 1912 border: 1px solid #D5D7DA; 1913 }
1914 .header-dropdown__button--white:hover { 1915 color: #414651; 1916 background-color: #ffffff; 1917 border: 1px solid #D5D7DA; 1918 } 1919 .header-dropdown__button--white:active { 1920 color: #414651; 1921 background-color: #ffffff; 1922 border: 1px solid #D5D7DA; 1923 } 1924 .header-dropdown__account-logout { 1925 color: #414651; 1926 font-size: 16px; 1927 font-weight: 500; 1928 text-decoration: underline !important; 1929 display: block; 1930 width: fit-content; 1931 } 1932 .header-dropdown__account-logout:hover { 1933 color: #414651; 1934 } 1935 .header-dropdown__account-category { 1936 font-size: 16px; 1937 font-weight: 600; 1938 color: #0E0F11; 1939 } 1940 .header-dropdown__cta { 1941 color: #404347; 1942 display: block; 1943 font-size: 16px; 1944 font-weight: 400; 1945 } 1946 .header-dropdown__cta:hover { 1947 color: #404347; 1948 text-decoration: underline !important; 1949 } 1950 .header-dropdown__total-items { 1951 font-size: 16px; 1952 font-weight: 400; 1953 color: #404347; 1954 } 1955 .header-dropdown__free-shipping-stripe { 1956 display: flex; 1957 align-items: center; 1958 background-color: #F1F3FD; 1959 color: #4B608B; 1960 font-weight: 400; 1961 font-size: 16px; 1962 width: 100%; 1963 } 1964 .header-dropdown__free-shipping-stripe--bold { 1965 font-weight: 700; 1966 } 1967 .header-dropdown__cart-empty, .header-dropdown__favorites-empty { 1968 font-size: 16px; 1969 font-weight: 400; 1970 color: #5A5D63; 1971 } 1972 .header-dropdown__clear-cart, .header-dropdown__clear-item { 1973 cursor: pointer; 1974 width: fit-content; 1975 float: right; 1976 } 1977 .header-dropdown__product-wrapper { 1978 display: flex; 1979 align-items: center; 1980 justify-content: space-between; 1981 } 1982 .header-dropdown__subtotal-wrapper { 1983 display: flex; 1984 justify-content: space-between; 1985 border-top: 1px solid #DCDEE0; 1986 } 1987 .header-dropdown__subtotal-text, .header-dropdown__subtotal-amount { 1988 font-size: 16px; 1989 font-weight: 600; 1990 color: #0E0F11; 1991 } 1992 .header-dropdown__subtotal-full[data-subtotal-full="false"] { 1993 font-weight: 300; 1994 text-decoration: line-through; 1995 } 1996 .header-dropdown__subtotal-discounted { 1997 display: none; 1998 font-weight: 500; 1999 color: #DC2626; 2000 } 2001 .header-dropdown__coupon-wrapper { 2002 width: 100%; 2003 border: 1px solid #ABAEB2; 2004 border-radius: 8px; 2005 padding: 6px 15px; 2006 display: flex; 2007 justify-content: space-between; 2008 } 2009 .header-dropdown__coupon-wrapper:has(.header-dropdown__coupon-input:focus) { 2010 border: 1px solid #0E0F11; 2011 } 2012 .header-dropdown__coupon-input { 2013 font-size: 16px; 2014 font-weight: 400; 2015 color: #0E0F11; 2016 border: 0; 2017 width: 100%; 2018 } 2019 .header-dropdown__coupon-input::placeholder { 2020 font-size: 16px; 2021 font-weight: 400; 2022 color: #ABAEB2; 2023 } 2024 .header-dropdown__coupon-input[disabled] { 2025 background-color: unset; 2026 color: #ABAEB2; 2027 } 2028 .header-dropdown__coupon-message { 2029 font-size: 14px; 2030 font-weight: 400; 2031 } 2032 .header-dropdown__coupon-message--valid { 2033 color: #059669; 2034 display: flex; 2035 align-items: center; 2036 } 2037 .header-dropdown__coupon-message--invalid { 2038 color: #DC2626; 2039 display: flex; 2040 align-items: center; 2041 } 2042 .header-dropdown__coupon-apply { 2043 padding: 8px 16px; 2044 font-size: 14px; 2045 font-weight: 500; 2046 color: #ffffff; 2047 text-align: center; 2048 border-radius: 8px; 2049 cursor: pointer; 2050 } 2051 .header-dropdown__coupon-apply[can-apply-coupon="false"] { 2052 background-color: transparent; 2053 color: #000000; 2054 text-decoration: underline; 2055 } 2056 .header-dropdown__coupon-apply[can-apply-coupon="true"] { 2057 background-color: #0E0F11; 2058 } 2059 .header-dropdown__brands-container { 2060 display: grid; 2061 grid-template: "a a a"; 2062 gap: 20px; 2063 width: inherit; 2064 } 2065 .header-dropdown__brand-wrapper { 2066 max-height: 65px; 2067 max-width: 130px; 2068 display: flex; 2069 justify-content: center; 2070 } 2071 .header-dropdown__brand-wrapper img { 2072 height: 100%; 2073 border-radius: 8px; 2074 } 2075 .header-mobile__category { 2076 font-size: 20px; 2077 font-weight: 500; 2078 padding: 16px; 2079 display: flex; 2080 align-items: center; 2081 justify-content: space-between; 2082 &[data-dropdown-type="mobile-smart-glasses"] .smart-glasses__new-pill { 2083 padding: 2px 6px; 2084 border-radius: 8px; 2085 background-color: #1960EF; 2086 color: #ffffff; 2087 font-size: 14px; 2088 font-weight: 500; 2089 } 2090 } 2091 .header-mobile__category, .header-mobile__category a, .header-mobile__category a:hover { 2092 color: #181D27; 2093 } 2094 .header-mobile__category--border-top { 2095 border-top: 1px solid #EBEDF0; 2096 } 2097 .header-mobile__category--border-bottom { 2098 border-bottom: 1px solid #EBEDF0; 2099 } 2100 .header-mobile__category[back-to-main-hamburger] { 2101 position: sticky; 2102 top: 0; 2103 background-color: #ffffff; 2104 z-index: 1; 2105 } 2106 .header-mobile__utilities { 2107 border-top: 1px solid #E9EAEB; 2108 } 2109 .header-mobile__utilities .header-mobile__category { 2110 color: #414651 !important; 2111 font-size: 14px; 2112 font-weight: 500; 2113 padding: 10px 16px; 2114 } 2115 .header-mobile__utilities .header-mobile__category a { 2116 color: #414651 !important; 2117 font-size: 14px; 2118 font-weight: 500; 2119 } 2120 .header-mobile__utilities .header-mobile__category img { 2121 vertical-align: bottom; 2122 } 2123 .header-mobile__category-heading { 2124 border-bottom: 1px solid #DCDEE0; 2125 font-size: 18px; 2126 font-weight: 500; 2127 color: #0E0F11; 2128 padding: 14px; 2129 display: flex; 2130 } 2131 .header-mobile__account-welcome { 2132 font-size: 18px; 2133 font-weight: 500; 2134 color: #0E0F11; 2135 } 2136 .header-mobile__account-links { 2137 color: #414651 !important; 2138 width: fit-content; 2139 border-bottom: 1px solid #414651; 2140 font-size: 14px; 2141 font-weight: 500; 2142 } 2143 .header-mobile__designer-brands--initials { 2144 padding-inline: 18px; 2145 padding-bottom: 15px; 2146 display: flex; 2147 flex-wrap: wrap; 2148 } 2149 .header-mobile__designer-brands--initials a { 2150 font-size: 20px; 2151 font-weight: 600; 2152 color: #717680 !important; 2153 padding: 10px 12px; 2154 border-radius: 8px; 2155 } 2156 .header-mobile__designer-brands--initials a:is(:hover, :active) { 2157 background-color: #F5F5F5 !important; 2158 color: #181D27 !important 2159 } 2160 .header-mobile__designer-brands--options { 2161 display: flex; 2162 flex-direction: column; 2163 } 2164 .brand-initial__heading { 2165 font-size: 20px; 2166 font-weight: 600; 2167 color: #0E0F11; 2168 background-color: #F5F6F7; 2169 padding: 8px 30px; 2170 } 2171 .video__wrapper{ 2172 border-radius: 8px; 2173 transition: 0.50s; 2174 width: 100%; 2175 } 2176 .mfp-content:has(.find-my-size-container), .mfp-content:has(#prescription_info, #autoship_modal, #postal_save10, #canadian_getaway) { 2177 width: fit-content; 2178 } 2179 .mfp-arrow.mfp-arrow-left.mfp-prevent-close, .mfp-arrow.mfp-arrow-right.mfp-prevent-close { 2180 display:none; 2181 } 2182 .find-my-size-container { 2183 max-width: 400px; 2184 height: 560px; 2185 background: #f3f4f6; 2186 padding: 24px; 2187 display: flex; 2188 flex-direction: column; 2189 margin-bottom: 20px; 2190 } 2191 .find-my-size-container .title { 2192 color: #2e2e2e; 2193 font-size: 18px; 2194 font-weight: 600; 2195 margin-bottom: 20px; 2196 } 2197 .find-my-size-container .content { 2198 font-size: 14px; 2199 } 2200 .find-my-size-container .image { 2201 text-align:center; 2202 width: 285px; 2203 margin: auto; 2204 margin-top: 20px; 2205 } 2206 .find-my-size-container .table { 2207 font-size: 10px; 2208 margin-top: 20px; 2209 } 2210 .find-my-size-container .table table { 2211 width: 100%; 2212 } 2213 .find-my-size-container .table th { 2214 background:#2e2e2e; 2215 color: white; 2216 } 2217 .find-my-size-container .table th, .find-my-size-container .table td { 2218 border: 1px solid #2e2e2e; 2219 } 2220 @media (max-width: 991px) { 2221 .stripe__background { 2222 justify-content: center; 2223 } 2224 .stripe__countdown { 2225 display: block; 2226 margin-bottom: 5px; 2227 margin-right: 0; 2228 } 2229 .stripe__promo, .stripe__promo > a { 2230 align-items: center; 2231 } 2232 /* .stripe__shop-now { 2233 margin-left: 0; 2234 margin-top: 10px; 2235 } */ 2236 .header__search, .header__utility[data-dropdown-type="favorites"] { 2237 display: none; 2238 } 2239 .header__categories { 2240 display: none; 2241 } 2242 .header__dropdown[data-dropdown-type="eyeglasses"] .header-dropdown__container, 2243 .header__dropdown[data-dropdown-type="sunglasses"] .header-dropdown__container, 2244 .header__dropdown[data-dropdown-type="designer"] .header-dropdown__container, 2245 .header__dropdown[data-dropdown-type="contacts"] .header-dropdown__container, 2246 .header__dropdown[data-dropdown-type="progressives"] .header-dropdown__container { 2247 max-width: 375px; 2248 } 2249 .header__dropdown[data-dropdown-type="search"] { 2250 height: 100vh; 2251 } 2252 .header-dropdown__item { 2253 padding: 10px 16px; 2254 } 2255 .header-dropdown__item:is(a, .button-veero-eyefit):hover { 2256 text-decoration: none !important; 2257 background-color: #F5F6F7; 2258 } 2259 @scope ([data-dropdown-type="account"]) { 2260 .header-dropdown__item { 2261 background-color: unset !important; 2262 } 2263 } 2264 .header-dropdown__brands-container { 2265 gap: 10px; 2266 } 2267 .header-search-bar__optician-wrapper { 2268 min-width: unset; 2269 padding: 10px; 2270 margin-right: 10px; 2271 } 2272 .search-dropdown__popular-search { 2273 margin-bottom: 20px; 2274 padding-bottom: 20px; 2275 border-bottom: 1px solid #E9EAEB; 2276 } 2277 .search-dropdown__promo-wrapper { 2278 display: none; 2279 } 2280 .header-dropdown__tile-wrapper, .search-dropdown__promo-wrapper { 2281 max-width: 375px; 2282 } 2283 .search-dropdown__pills-wrapper { 2284 /* flex-wrap: nowrap; */ 2285 } 2286 } 2287 @media (max-width: 767px) { 2288 .stripe__background { 2289 /* flex-direction: column; */ 2290 } 2291 .find-my-size-container { 2292 height: 620px; 2293 } 2294 .header__dropdown[data-dropdown-type="hamburger"] { 2295 top: 0 !important; 2296 width: 100% !important; 2297 max-width: unset !important; 2298 height: 100vh; 2299 max-height: unset; 2300 border-radius: 0; 2301 } 2302 } 2303 2304</style> 2305 2306<div id="vtoApp"></div> 2307 2308 2309 2310<div class="modal1 mfp-hide" id="how_to_prescription"> 2311 <div style="position:absolute; top: 2%; right: 2%;"> <a href="#" onclick="$.magnificPopup.close(); return false;" style="font-size: 16px; font-weight: bold; color: #000000;">X</a></div> 2312 <div class="block mx-auto" style="background-color: #FFF; max-width: 800px; padding:50px"> 2313 <div class="feature-box fbox-effect fbox-lg border-bottom-0 mb-0" style="padding: 10px;"> 2314 <div class="fbox-content" style="color:#000000"> 2315 <h2 style="margin-bottom:0px; margin-top:0px;">How to read your glasses prescription</h2>
2316 <img src="/cart/images/shared/flypagegl/glasses_RX-01.jpg"/> 2317 <h2>How to enter your glasses prescription</h2> 2318 <img src="/cart/images/shared/flypagegl/glasses_RX-02.jpg"/> 2319 <p> 2320 <b>OD</b> is an abbreviation for the Latin term oculus dexter which means right eye. Notice that the right eye information is asked for first even though we typically read from left to right. 2321 </p> 2322 <p> 2323 <b>OS</b> is an abbreviation of the Latin oculus sinister which means left eye. That will be referenced on the far right column of the prescription. 2324 </p> 2325 <p> 2326 <b>SPH</b> is short for sphere. The sphere of your prescription indicates the power on the lenses that is needed to see clearly. A plus (+) symbol indicates the eyeglass wearer is farsighted. A minus (-) symbol indicates that the eyeglass wearer is nearsighted. 2327 </p> 2328 <p> 2329 <b>CYL</b> is short for cylinder. The cylinder indicates the lens power necessary to correct astigmatism. If the column has no value (is blank), it indicates that the eyeglass wearer does not have astigmatism. If this is the case on your prescription, you can leave it blank when entering it in. 2330 </p> 2331 <p> 2332 <b>AXIS</b> is a prescription will include an axis value for those with astigmatism. This
2332number represents the angle of the lens that shouldn't feature a cylinder power to help correct your astigmatism. 2333 </p> 2334 <p> 2335 <b>ADD</b> is short for "additional correction." This is where details about bifocals, multifocal lenses or progressive lenses would appear. 2336 </p> 2337 </div> 2338 </div> 2339 2340 </div> 2341</div> 2342 2343 2344<div class="modal1 mfp-hide" id="prescription_info"> 2345 <div style="position:absolute; top: 2%; right: 2%;"> 2346 <a href="#" onclick="$.magnificPopup.close(); return false;" style="font-size: 16px; font-weight: bold; color: #000000;">X</a> 2347 </div> 2348 <div class="block mx-auto" style="background-color: #FFF; max-width: 800px; padding:50px"> 2349 <div class="feature-box fbox-effect fbox-lg border-bottom-0 mb-0" style="padding: 10px;"> 2350 <div class="fbox-content" style="color:#000000"> 2351 <h2 style="margin-bottom:0px; margin-top:0px;">How to read your contacts prescription</h2> 2352 <img src="/cart/images/shared/flypagecl/contacts_RX-01.jpg"/> 2353 <h2 style="margin-bottom:0px">How to enter your contacts prescription</h2> 2354 <img src="/cart/images/shared/flypagecl/contacts_RX-02.jpg"/> 2355 <p> 2356 <b>OD</b> is an abbreviation for the Latin term oculus dexter which means right eye. Notice that the right eye information is asked for first even though we typically read from left to right. 2357 </p> 2358 <p> 2359 <b>OS</b> is an abbreviation of the Latin oculus sinister which means left eye. That will be referenced on the far right column of the prescription. 2360 </p> 2361 <p> 2362 <b>B.C.</b> is short for base curve measurement indicates the back curvature of your contact lens, in millimetres. This is important for comfort, as the BC of your contact lenses should match your eye's natural curve as closely as possible to ensure a better fit when you are wearing your contact lenses. 2363 </p> 2364 <p> 2365 <b>DIA</b> is short for "diameter," or the distance from one edge of the contact lens to the other. This is measured in millimeters. 2366 </p> 2367 <p> 2368 <b>SPH</b> is short for sphere. The sphere of your prescription indicates the power on the lenses that is needed to see clearly. A plus (+) symbol indicates the eyeglass wearer is farsighted. A minus (-) symbol indicates that the eyeglass wearer is nearsighted. 2369 </p> 2370 <p> 2371 <b>CYL</b> is short for cylinder. The cylinder indicates the lens power necessary to correct astigmatism. If the column has no value (is blank), it indicates that the eyeglass wearer does not have astigmatism. If this is the case on your prescription, you can leave it blank when entering it in. 2372 </p> 2373 <p> 2374 <b>AXIS</b> is a prescription will include an axis value for those with astigmatism. This
2374number represents the angle of the lens that shouldn't feature a cylinder power to help correct your astigmatism. 2375 </p> 2376 <p> 2377 <b>ADD</b> is short for "additional correction." This is where details about bifocals, multifocal lenses or progressive lenses would appear. 2378 </p> 2379 </div> 2380 </div> 2381 </div> 2382</div> 2383 2384 2385 2386 2387 2388<div class="modal1 mfp-hide" id="postal_save10"> 2389 <div class="block mx-auto" style="background-color: #ffffff; max-width: 600px;"> 2390 <div class="feature-box fbox-center fbox-effect fbox-lg border-bottom-0 mb-0" style="padding: 40px;"> 2391 <div class="fbox-content"> 2392 <h3>10% OFF* YOUR FIRST CONTACTS ORDER!<br/> Use code: SAVE10</h3> 2393 </div> 2394 <p style="font-size:12px"> 2395 *Discount applied on the current website price at the time of order. Offer only valid for new customer first contacts order over $10. Maximum discount of $100. Cannot be combined with any other offers. Promotions are subject to change without notice. We reserve the right to cancel orders that are in breach of the terms and conditions of this offer. 2396 </p> 2397 </div> 2398 <div class="center m-0" style="padding: 30px; padding-top:0px"> 2399 <a href="#" class="button" onClick="$.magnificPopup.close();return false;">Close</a> 2400 </div> 2401 </div> 2402</div> 2403 2404 2405<div class="modal1 mfp-hide" id="autoship_modal"> 2406 <div class="block mx-auto" style="background-color: #ffffff; max-width: 800px; "> 2407 <div class="feature-box fbox-center fbox-effect fbox-lg mb-0" style="padding: 30px; background-color:#f6f9fe"> 2408 <div class="fbox-content mb-4" > 2409 <img src="/cart/images/shared/autoship/subscribe-and-save-logo.svg" alt="Subscribe & Save Logo" style="width: 285px; padding-bottom: 5px; padding-bottom: 15px;"/> 2410 </div> 2411 <div class="row"> 2412 <div class="col-6 col-md-3 center"> 2413 <img src="/cart/images/shared/autoship/Piggy_Bank.svg"/> 2414 <div style="color:#2E2E2E; font-size:18px; font-weight:bold">Save 15%</div> 2415 <div style="color:#909090; font-size:15px">Increased savings<br/>on future orders</div> 2416 </div> 2417 <div class="col-6 col-md-3 center"> 2418 <img src="/cart/images/shared/autoship/Price_Match.svg"/> 2419 <div style="color:#2E2E2E; font-size:18px; font-weight:bold">Price-Match Guarantee</div> 2420 <div style="color:#909090; font-size:15px">On every order</div> 2421 </div> 2422 <div class="col-6 col-md-3 center"> 2423 <img src="/cart/images/shared/autoship/Shipping.svg"/> 2424 <div style="color:#2E2E2E; font-size:18px; font-weight:bold">Free Shipping</div> 2425 <div style="color:#909090; font-size:15px">on all future orders*</div> 2426 2427 </div> 2428 <div class="col-6 col-md-3 center"> 2429 <img src="/cart/images/shared/homepage/legacy/loyalty_rewards.svg" style="height:65px"/> 2430 <div style="color:#2E2E2E; font-size:18px; font-weight:bold">Loyalty Rewards</div> 2431 <div style="color:#909090; font-size:15px">Top tier savings & perks with each reorder</div> 2432 </div> 2433 </div> 2434 </div> 2435 <div class="center m-0" style="padding: 30px; padding-top:0px; background-color:#f6f9fe"> 2436 <a href="https://www.contactsexpress.ca/autoship" class="button" style="background:#0071bc; color:#ffffff; font-size:16px; border-radius:5px; padding:0px 15px 0px 15px; width:180px">Learn More</a> 2437 <a href="#" class="button" onClick="$.magnificPopup.close();return false;" style="background: #f6f9fe; color:#0071bc; font-size:16px; border-radius:5px; border:1px solid #0071bc; text-shadow:0px; width:180px">Close</a> 2438 <div style="font-size:16px; text-align:center; color:#306fb6; padding-top:20px" class=""> 2439 <a href="https://www.contactsexpress.ca/autoship">*See Subscribe & Save page for details, restrictions may apply!</a> 2440 </div> 2441 </div> 2442 2443 <div class="left m-0" style="padding: 30px; padding-top:0px; background-color:#f6f9fe"> 2444 Unfortunately, we can't offer direct billing on Subscribe & Save orders just yet, but we're actively working on it! In the meantime, here's what you can do: 2445 <ul style="margin-left:20px; margin-top:20px "> 2446 <li style="line-height:2"><b style="font-weight:bold">To keep Subscribe & Save</b>: Place your order as usual and submit a claim to your insurance provider afterward.</li> 2447 <li style="line-height:2"><b style="font-weight:bold">For direct billing now</b>: Unselect the Subscribe & Save option at checkout and we'll process your insurance claim directly.</li> 2448 </ul> 2449 </div> 2450 2451 </div> 2452</div> 2453 2454<div class="nav__sticky"> 2455 <section id="site-stripe"> 2456 <div class="stripe__background px-2 px-sm-5 py-2"> 2457 <div class="swiper w-100" id="stripes-swiper"> 2458 <div class="swiper-wrapper align-items-center"> 2459 2460 </div> 2461 </div> 2462 2463 2464 2465 <div class="d-none d-lg-flex align-items-center"> 2466 2467 <div class="stripe__help-me px-3" data-dropdown-opened="false" dropdown-toggle data-dropdown-type="help-me">Help</div> 2468 2469 </div> 2470 </div> 2471 2472 2473 2474<div class="stripe__dropdown" dropdown data-dropdown-type="help-me"> 2475 <div class="stripe-dropdown__wrapper"> 2476 <a href="https://www.contactsexpress.ca/order-status" class="stripe-dropdown__button mb-3">
2476<img class="mr-2" src="/cart/images/shared/icons/package-search.svg" height="20">Check order status</a> 2477 <a href="https://www.contactsexpress.ca/saved_carts_changes?pagename=saved_carts" class="stripe-dropdown__button mb-3"><img class="mr-2" src="/cart/images/shared/icons/clock-rewind.svg" height="20">Place reorder</a> 2478 <div class="stripe-dropdown__category mb-2">Resource hub</div> 2479 <div class="button-veero-eyefit stripe-dropdown__cta mb-2">How to measure your PD at home</div> 2480 <a href="#how_to_prescription" data-lightbox="inline" class="stripe-dropdown__cta mb-2">Glasses - How to read your prescription</a> 2481 <a href="#prescription_info" data-lightbox="inline" class="stripe-dropdown__cta mb-2">Contacts - How to read your prescription</a> 2482 <a href="https://www.contactsexpress.ca/shipping" class="stripe-dropdown__cta mb-2">Shipping & Returns</a> 2483 </div> 2484 <div class="stripe-dropdown__wrapper stripe-dropdown__wrapper--dark"> 2485 <div class="stripe-dropdown__category mb-2">Get in touch</div> 2486 <div onclick="Intercom('show');" class="stripe-dropdown__cta mb-2"><img class="mr-2" src="/cart/images/shared/icons/chat-box-grey.svg" height="24">Chat with us</div> 2487 <a href="https://www.contactsexpress.ca/contactus" class="stripe-dropdown__cta mb-2"> 2488 <img class="mr-2" src="/cart/images/shared/icons/phone-grey.svg" height="24"> 2489 <div> 2490 <div>1-833-487-5487</div> 2491 <div class="stripe-dropdown__fine-print">(Monday to Friday: 10am-6pm EST) 2492 <br/> 2493 </div> 2494 </div> 2495 </a> 2496 <a href="https://www.contactsexpress.ca/contactus" class="stripe-dropdown__cta mb-2"><img class="mr-2" src="/cart/images/shared/icons/envelope-closed-grey.svg" height="24"><span class="__cf_email__" data-cfemail="205345525649434560634f4e5441435453655850524553530e4341">[email protected]</span></a> 2497 <a href="https://www.contactsexpress.ca/contactus" class="stripe-dropdown__cta mb-2"> 2498 <img class="mr-2" src="/cart/images/shared/icons/hark-logo-grey.svg" height="24"> 2499 <div> 2500 <div>Leave a video or voice message</div> 2501 <div class="stripe-dropdown__fine-print">The fastest way to connect with our team</div> 2502 </div> 2503 </a> 2504 </div> 2505</div> 2506 2507 2508<div class="header__dropdown pt-0" dropdown data-dropdown-type="hamburger"> 2509 <div main-hamburger> 2510 <div id="optician-ai-wrapper-mobile" style="display: none; "> 2511 <div class="header-search-bar__container py-3 px-3 header-mobile__category--border-bottom" dropdown data-dropdown-type="search"> 2512 2513 <div class="d-flex align-items-center justify-content-center"> 2514 <div class="header-search-bar__wrapper position-relative"> 2515 <div class="d-flex align-items-center w-100"> 2516 <img class="pr-2" src="/cart/images/shared/icons/search-grey.svg" height="20"> 2517 <input class="header-search-bar__input" type="text" placeholder="Search Products"> 2518 </div> 2519 <div class="barcode-scanner"><img src="/cart/images/shared/icons/scan-barcode.svg"></div> 2520 </div> 2521 2522 <img class="header-search-bar__close" src="/cart/images/shared/icons/close-grey.svg"> 2523 2524 </div> 2525 </div> 2526 </div> 2527 <div id="non-optician-ai-wrapper-mobile"> 2528 <div class="header-search-bar__container py-3 px-3 header-mobile__category--border-bottom" dropdown data-dropdown-type="search"> 2529 <div class="d-flex align-items-center justify-content-center"> 2530 <div class="header-search-bar__wrapper position-relative"> 2531 <div class="d-flex align-items-center w-100"> 2532 <img class="pr-2" src="/cart/images/shared/icons/search-grey.svg" height="20"> 2533 <input class="header-search-bar__input" type="text" placeholder="Search Products"> 2534 </div> 2535 <div class="barcode-scanner"><img src="/cart/images/shared/icons/scan-barcode.svg"></div> 2536 </div> 2537 <img class="header-search-bar__close" src="/cart/images/shared/icons/close-grey.svg"> 2538 </div> 2539 </div> 2540 </div> 2541 2542 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-contacts">
2543 <span>Contacts</span> 2544 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2545 </div> 2546 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-eyeglasses"> 2547 <span>Eyeglasses</span> 2548 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2549 </div> 2550 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-sunglasses"> 2551 <span>Sunglasses</span> 2552 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2553 </div> 2554 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-smart-glasses"> 2555 <span>AI Smart Glasses <span class="smart-glasses__new-pill">New</span></span> 2556 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2557 </div> 2558 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-designer"> 2559 <span>Brands</span> 2560 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2561 </div> 2562 <!-- <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-readers"> 2563 <span>Readers</span> 2564 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2565 </div> --> 2566 2567 <a href="https://www.contactsexpress.ca/insurance" class="header-mobile__category nav_insurance"> 2568 <span>Insurance</span> 2569 </a> 2570 2571 <div class="header-mobile__utilities"> 2572 <div class="header-mobile__category logged_out" slide-to-mini-hamburger data-dropdown-type="mobile-account">Sign in</div> 2573 <div class="header-mobile__category logged_in" slide-to-mini-hamburger data-dropdown-type="mobile-account">My account</div> 2574 <div class="header-mobile__category"> 2575 <a href="https://www.contactsexpress.ca/favorites"> 2576 2577 Favourites 2578 2579 </a> 2580 </div> 2581 <div class="header-mobile__category"> 2582 <a href="https://www.contactsexpress.ca/insurance">Use your insurance</a> 2583 </div> 2584 <div class="header-mobile__category" slide-to-mini-hamburger data-dropdown-type="mobile-help">Get help</div> 2585 2586 </div> 2587 </div> 2588 2589<div mini-hamburger data-dropdown-type="mobile-help" style="display: none; "> 2590 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2591 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Get help</span> 2592 <div class="header-mobile__close"> 2593 <img src="/cart/images/shared/icons/close-grey.svg"> 2594 </div> 2595 </div> 2596 <div class="col-12 px-0 mt-4 flex-column"> 2597 <div class="px-3"> 2598 <a href="https://www.contactsexpress.ca/order-status" class="mb-3 header-dropdown__button header-dropdown__button--w
2598hite"><img src="/cart/images/shared/icons/package-search.svg" height="20">Check order status</a> 2599 </div> 2600 <div class="px-3 header-mobile__category--border-bottom"> 2601 <a href="https://www.contactsexpress.ca/saved_carts_changes?pagename=saved_carts" class="mb-3 header-dropdown__button header-dropdown__button--white"><img src="/cart/images/shared/icons/clock-rewind.svg" height="20">Place reorder</a> 2602 </div> 2603 <div class="button-veero-eyefit header-dropdown__item px-3">How to measure your PD at home</div> 2604 <a href="#how_to_prescription" data-lightbox="inline" class="header-dropdown__item px-3">Glasses - How to read your prescription</a> 2605 <a href="#prescription_info" data-lightbox="inline" class="header-dropdown__item px-3">Contacts - How to read your prescription</a> 2606 <a href="https://www.contactsexpress.ca/shipping" class="header-dropdown__item px-3">Shipping & Returns</a> 2607 <a href="https://www.contactsexpress.ca/contactus" class="header-dropdown__item px-3">Contact us</a> 2608 <!-- <div onclick="Intercom('show');" class="header-dropdown__item px-3"><img class="mr-2" src="/cart/images/shared/icons/chat-box-grey.svg" height="24">Chat with us</div> --> 2609 </div> 2610</div> 2611 2612<div mini-hamburger data-dropdown-type="mobile-account" style="display: none; "> 2613 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2614 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Account</span> 2615 <div class="header-mobile__close"> 2616 <img src="/cart/images/shared/icons/close-grey.svg"> 2617 </div> 2618 </div> 2619 <div class="col-12 px-0 mt-4 flex-column logged_out" style="display: none; "> 2620 <div class="px-3 header-mobile__category--border-bottom"> 2621 <div class="col-12 px-0 mb-3 header-mobile__account-welcome">Welcome, </div> 2622 <div class="header-dropdown__button-container mb-3"> 2623 <a href="https://www.contactsexpress.ca/login" class="header-dropdown__button header-dropdown__button--black">Sign in</a> 2624 <a href="https://www.contactsexpress.ca/new_account" class="header-dropdown__button header-dropdown__button--w
2624hite">Register</a> 2625 </div> 2626 </div> 2627 <div class="header-dropdown__item header-dropdown__item--bold">Trending products</div> 2628 <a href="https://www.contactsexpress.ca/autoship" class="col-12 px-3 mb-1 header-dropdown__item" header-autoship>Subscribe & Save</a> 2629 2630 </div> 2631 <div class="col-12 px-0 mt-4 flex-column logged_in" style="display: none; "> 2632 <div class="px-3"> 2633 <div class="col-12 px-0 header-mobile__account-welcome">Nice to see you, <span class="account-name"></span></div> 2634 <a href="https://www.contactsexpress.ca/logout" class="col-12 px-0 mb-3 header-dropdown__account-logout">Sign out</a> 2635 <a href="https://www.contactsexpress.ca/order-status" class="mb-3 header-dropdown__button header-dropdown__button--white"><img src="/cart/images/shared/icons/package-search.svg" height="20">Check order status</a> 2636 </div> 2637 <div class="px-3"> 2638 <a href="https://www.contactsexpress.ca/saved_carts_changes?pagename=saved_carts" class="mb-3 header-dropdown__button header-dropdown__button--white"><img src="/cart/images/shared/icons/clock-rewind.svg" height="20">Place reorder</a> 2639 </div> 2640 <div class="header-dropdown__item header-dropdown__item--bold">Account details</div> 2641 <a href="https://www.contactsexpress.ca/customerservice" class="col-12 px-3 mb-1 header-dropdown__item">My profile</a> 2642 <a href="https://www.contactsexpress.ca/query/check_orders.html?pagename=check_status" class="col-12 px-3 mb-1 header-dropdown__item">Order history</a> 2643 <a href="https://www.contactsexpress.ca/upload_rx" class="col-12 px-3 mb-1 header-dropdown__item">My prescription</a> 2644 <div class="header-dropdown__item header-dropdown__item--bold">Trending products</div> 2645 <a href="https://www.contactsexpress.ca/autoship" class="col-12 px-3 mb-1 header-dropdown__item" header-autoship>Subscribe & Save</a> 2646 2647 </div> 2648</div> 2649 2650 2651 2652<div mini-hamburger data-dropdown-type="mobile-eyeglasses" style="display: none; "> 2653 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2654 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Eyeglasses</span> 2655 <div class="header-mobile__close"> 2656 <img src="/cart/images/shared/icons/close-grey.svg"> 2657 </div> 2658 </div> 2659 <div class="col-12 pt-3 px-0"> 2660 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 2661 <a href="https://www.contactsexpress.ca/glasses" class="header-dropdown__item">All eyeglasses</a> 2662 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Women&product_type=Glasses" class="header-dropdown__item">Women</a> 2663 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Men&product_type=Glasses" class="header-dropdown__item">Men</a> 2664 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Glasses" class="header-dropdown__item">Kids</a> 2665 2666 </div> 2667 <div class="col-12 px-0"> 2668 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 2669 2670 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="header-dropdown__item">Best Sellers</a> 2671 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=features_uFilter:+Progressive+Eligible&product_type=Glasses" class="header-dropdown__item">Progressives</a> 2672 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+New&product_type=Glasses" class="header-dropdown__item">KITS new arrivals</a> 2673 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Glasses" class="header-dropdown__item">KITS eyeglasses</a> 2674 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Glasses" class="header-dropdown__item">Designer eyeglasses</a> 2675 </div> 2676 <div class="col-12 pt-3 px-0"> 2677 <div class="header-dropdown__item header-dropdown__item--bold">Curated</div> 2678 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+The+Campus+Edit&product_type=Glasses" class="header-dropdown__item">The Campus Edit</a> 2679 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Office+Ready&product_type=Glasses" class="header-dropdown__item">Office Ready</a> 2680 </div> 2681 <div class="d-flex flex-column pt-3"> 2682 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Glasses" class="header-dropdown__tile-wrapper"> 2683
2684 <img src="/cart/images/shared/nav/eyeglasses/Jul20-2026-Navbar-Eyeglasses-1.jpg" class="header-dropdown__image"> 2685 2686 <div class="header-dropdown__tile-heading">Up to 50% off Kids frames</div> 2687 <div class="header-dropdown__tile-subheading">Shop kids glasses <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2688 </a> 2689 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 2690 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-1.jpg" class="header-dropdown__image"> 2691 <div class="header-dropdown__tile-heading">Meet Your Everyday AI Glasses</div> 2692 <div class="header-dropdown__tile-subheading">Shop KITS Pangolin 3 <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2693 </a> 2694 </div> 2695</div> 2696 2697 2698<div mini-hamburger data-dropdown-type="mobile-sunglasses" style="display: none; "> 2699 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2700 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Sunglasses</span> 2701 <div class="header-mobile__close"> 2702 <img src="/cart/images/shared/icons/close-grey.svg"> 2703 </div> 2704 </div> 2705 <div class="col-12 pt-3 px-0"> 2706 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 2707 <a href="https://www.contactsexpress.ca/sunglasses" class="header-dropdown__item">All sunglasses</a> 2708 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Women&product_type=Sunglasses" class="header-dropdown__item">Women</a> 2709 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Men&product_type=Sunglasses" class="header-dropdown__item">Men</a> 2710 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Sunglasses" class="header-dropdown__item">Kids</a> 2711 </div> 2712 <div class="col-12 px-0"> 2713 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 2714 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Sunglasses" class="header-dropdown__item">Best sellers</a> 2715 <a href="https://www.contactsexpress.ca/includes-polarized-lenses" class="header-dropdown__item">Polarized</a> 2716 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Sunglasses" class="header-dropdown__item">KITS sunglasses</a> 2717 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Sunglasses" class="header-dropdown__item">Designer sunglasses</a> 2718 </div> 2719 <div class="d-flex flex-column pt-3"> 2720 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 2721 2722 <img src="/cart/images/shared/nav/sunglasses/Aug06-2026-Navbar-Sunglasses-1.jpg" class="header-dropdown__image"> 2723 2724 <div class="header-dropdown__tile-heading">Up to 50% off Kids frames</div> 2725 <div class="header-dropdown__tile-subheading">Shop kids sunglasses <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2726 </a> 2727 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+The+Slim+Edit&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 2728 <img src="/cart/images/shared/nav/sunglasses/Apr13-2026-Navbar-Sunglasses-2.jpg" class="header-dropdown__image"> 2729 <div class="header-dropdown__tile-heading">Vacation-ready</div> 2730 <div class="header-dropdown__tile-subheading">
2730Shop sun styles <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2731 </a> 2732 </div> 2733</div> 2734 2735 2736 2737 2738 2739 2740<style> 2741 @scope ([mini-hamburger][data-dropdown-type="mobile-smart-glasses"]) { 2742 .smart-glasses__product-wrapper { 2743 background-color: #F5F5F5; 2744 border-radius: 8px; 2745 position: relative; 2746 padding: 16px; 2747 } 2748 .smart-glasses__new-pill { 2749 position: absolute; 2750 z-index: 0; 2751 padding: 2px 6px; 2752 border-radius: 8px; 2753 background-color: #1960EF; 2754 color: #ffffff; 2755 font-size: 14px; 2756 font-weight: 500; 2757 top: 4px; 2758 left: 4px; 2759 } 2760 .smart-glasses__product-title { 2761 color: #252B37; 2762 font-size: 16px; 2763 font-weight: 600; 2764 } 2765 .smart-glasses__product-price { 2766 color: #414651; 2767 font-size: 16px; 2768 font-weight: 400; 2769 &.sale { 2770 color: #D92D20; 2771 font-weight: 500; 2772 } 2773 &.strikethrough { 2774 text-decoration: line-through; 2775 } 2776 } 2777 } 2778</style> 2779 2780<div mini-hamburger data-dropdown-type="mobile-smart-glasses" style="display: none; "> 2781 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2782 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">AI Smart Glasses</span> 2783 <div class="header-mobile__close"> 2784 <img src="/cart/images/shared/icons/close-grey.svg"> 2785 </div> 2786 </div> 2787 <div class="mt-2 pb-3"> 2788 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 2789 <a href="https://www.contactsexpress.ca/ai-smart-glasses" class="header-dropdown__item">All AI Smart Glasses</a> 2790 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">KITS</a> 2791 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Ray-Ban%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Ray-Ban Meta</a> 2792 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Oakley%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Oakley Meta</a> 2793 2794 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Lucyd%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Lucyd Armor</a> 2795 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Reebok%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Reebok</a> 2796 </div> 2797 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 2798 <div class="d-flex flex-column gap-3 header-dropdown__item"> 2799 <a href="https://www.contactsexpress.ca/glasses/GL28472/pangolin-3-soren" class="smart-glasses__product-wrapper"> 2800 <div class="smart-glasses__new-pill">New</div> 2801 <div class="d-flex flex-row"> 2802 <div class="col-6 align-content-center"> 2803 2804 2805 <img src="/cart/images/frames/items/5/52/52000073035_IMG.jpg" alt="KITS Pangolin 3 Soren" style="mix-blend-mode: multiply; "/> 2806 </div> 2807 <div class="d-flex flex-column justify-content-center"> 2808 <div class="smart-glasses__product-title">KITS Pangolin 3 Soren</div> 2809 <div class="smart-glasses__product-price">$208</div> 2810 </div> 2811 </div> 2812 </a> 2813 <a href="https://www.contactsexpress.ca/glasses/GL25778/ray-ban-rw7001-blayzer-meta-gen-2" class="smart-glasses__product-wrapper"> 2814 <div class="d-flex flex-row"> 2815 <div class="col-6 align-content-center"> 2816 2817 2818 <img src="/cart/images/frames/items/2/23/23000064111_IMG.jpg" alt="Ray-Ban RW7001 Blayzer Meta Gen 2" style="mix-blend-mode: multiply; "/> 2819 </div> 2820 <div class="d-flex flex-column justify-content-center"> 2821 <div class="smart-glasses__product-title">Ray-Ban RW7001 Blayzer Meta Gen 2</div> 2822 2823 <div class="smart-glasses__product-price"> 2824 $579 2825 </div> 2826 2827 </div> 2828 </div> 2829 </a> 2830 </div> 2831 <div class="d-flex flex-column pt-3"> 2832 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 2833
2834 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-1.jpg" class="header-dropdown__image"> 2835 2836 <div class="header-dropdown__tile-heading">KITS Pangolin 3</div> 2837 <div class="header-dropdown__tile-subheading">Discover now <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2838 </a> 2839 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 2840 2841 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-2.jpg" class="header-dropdown__image"> 2842 2843 <div class="header-dropdown__tile-heading">Designer frames. Smart technology.</div> 2844 <div class="header-dropdown__tile-subheading">Shop the collection <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2845 </a> 2846 </div> 2847</div> 2848 2849 2850<div mini-hamburger data-dropdown-type="mobile-designer" style="display: none; "> 2851 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2852 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Brands</span> 2853 <div class="header-mobile__close"> 2854 <img src="/cart/images/shared/icons/close-grey.svg"> 2855 </div> 2856 </div> 2857 <div class="header-dropdown__item header-dropdown__item--bold">Top brands</div> 2858 <div class="header-dropdown__brands-container p-3"> 2859 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Glasses,Sunglasses" class="header-dropdown__brand-wrapper"> 2860 <img src="/cart/images/shared/nav/designer/logo-kits-grey.svg"> 2861 </a> 2862 <a href="https://www.contactsexpress.ca/brand-ray-ban" class="header-dropdown__brand-wrapper"> 2863 <img src="/cart/images/shared/nav/designer/logo-ray-ban-grey.svg"> 2864 </a> 2865 <a href="https://www.contactsexpress.ca/brand-oakley" class="header-dropdown__brand-wrapper"> 2866 <img src="/cart/images/shared/nav/designer/logo-oakley-grey.svg"> 2867 </a> 2868 <a href="https://www.contactsexpress.ca/brand-tom-ford" class="header-dropdown__brand-wrapper"> 2869 <img src="/cart/images/shared/nav/designer/logo-tom-ford-grey.svg"> 2870 </a> 2871 <a href="https://www.contactsexpress.ca/brand-marc-jacobs" class="header-dropdown__brand-wrapper"> 2872 <img src="/cart/images/shared/nav/designer/logo-marc-jacobs-grey.svg"> 2873 </a> 2874 <a href="https://www.contactsexpress.ca/brand-gucci" class="header-dropdown__brand-wrapper"> 2875 <img src="/cart/images/shared/nav/designer/logo-gucci-grey.svg"> 2876 </a> 2877 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Michael+Kors&product_type=Glasses,Sunglasses" class="header-dropdown__brand-wrapper"> 2878 <img src="/cart/images/shared/nav/designer/logo-michael-kors-grey.svg"> 2879 </a> 2880 <a href="https://www.contactsexpress.ca/brand-carrera" class="header-dropdown__brand-wrapper"> 2881 <img src="/cart/images/shared/nav/designer/logo-carrera-grey.svg"> 2882 </a> 2883 <a href="https://www.contactsexpress.ca/brand-kate-spade" class="header-dropdown__brand-wrapper"> 2884 <img src="/cart/images/shared/nav/designer/logo-kate-spade-grey.svg"> 2885 </a> 2886 </div> 2887 <!-- <div class="col-12 header-mobile__category header-mobile__category--border-bottom" to-brands-hamburger data-dropdown-type="mobile-designer"> 2888 <span>Shop by brands</span> 2889 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 2890 </div> --> 2891 <div class="mt-2 pb-3"> 2892 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 2893 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/brands">Brand A-Z</a> 2894 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Glasses">Designer eyeglasses</a> 2895 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Sunglasses">Designer sunglasses</a> 2896 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids%26filter=collections_name_uFilter:+Designer+Kids&product_type=Glasses,Sunglasses">Designer kids</a> 2897 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/smart-glasses">Smart glasses</a> 2898 <a class="header-dropdown__item" href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Safety+Glasses&product_type=Glasses,Sunglasses">Safety glasses</a> 2899 <a class="header-dropdown__item header-dropdown__item--DC2626" href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Promo&product_type=Glasses,Sunglasses">Designer sale up to 70% off</a> 2900 </div> 2901 <div class="d-flex flex-column pt-3"> 2902 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Kids&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 2903
2904 <img src="/cart/images/shared/nav/designer/Aug06-2026-Navbar-Designer-1.jpg" class="header-dropdown__image"> 2905 2906 <div class="header-dropdown__tile-heading">NEW designer kids collection</div> 2907 <div class="header-dropdown__tile-subheading">Shop up to 50% off <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2908 </a> 2909 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Ray-Ban%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 2910 2911 <img src="/cart/images/shared/nav/designer/Sep08-2026-Navbar-Designer-2.jpg" class="header-dropdown__image"> 2912 2913 <div class="header-dropdown__tile-heading">Shop NEW Ray-Ban Meta</div> 2914 <div class="header-dropdown__tile-subheading">With 30% off lenses<img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2915 </a> 2916 </div> 2917</div> 2918 2919<div class="py-4" brands-hamburger data-dropdown-type="mobile-designer" style="display: none; "> 2920 <div class="col-12 header-mobile__category header-mobile__category--border-bottom" back-to-mini-hamburger data-dropdown-type="mobile-designer"> 2921 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Shop by brands</span> 2922 </div> 2923 <div class="py-3"> 2924 <a href="https://www.contactsexpress.ca/glasses" class="header-dropdown__item header-dropdown__item--bold">All brands <span class="header-mobile__designer-brands--count"></span></a> 2925 </div> 2926 <div class="col-12 header-mobile__designer-brands--initials"></div> 2927 <div class="header-mobile__designer-brands--options"></div> 2928</div> 2929 2930<div mini-hamburger data-dropdown-type="mobile-sale" style="display: none; "> 2931 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2932 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Sale</span> 2933 <div class="header-mobile__close"> 2934 <img src="/cart/images/shared/icons/close-grey.svg"> 2935 </div> 2936 </div> 2937 <div class="d-flex flex-column align-items-center pt-3"> 2938 <a href="https://www.contactsexpress.ca/glasses-on-sale" class="header-dropdown__tile-wrapper"> 2939 2940 <img src="/cart/images/shared/nav/sale/Jul27-2026-Navbar-Sale-1.jpg" class="header-dropdown__image"> 2941 2942 <div class="header-dropdown__tile-heading header-dropdown__item--DC2626">Up to 65% off selected KITS Frames</div> 2943 <div class="header-dropdown__tile-subheading">Shop KITS sale <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2944 </a> 2945 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Promo&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 2946 <img src="/cart/images/shared/nav/sale/Jan19-2026-Navbar-Sale-2.jpg" class="header-dropdown__image"> 2947 <div class="header-dropdown__tile-heading header-dropdown__item--DC2626">Designer sale up to 70% off</div> 2948 <div class="header-dropdown__tile-subheading">Shop Designer sale <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 2949 </a> 2950 </div> 2951</div> 2952 2953 2954<div mini-hamburger data-dropdown-type="mobile-readers" style="display: none; "> 2955 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2956 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Readers</span> 2957 <div class="header-mobile__close"> 2958 <img src="/cart/images/shared/icons/close-grey.svg"> 2959 </div> 2960 </div> 2961 <div class="col-12 pt-3 px-0"> 2962 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 2963 <a href="https://www.contactsexpress.ca/glasses/readers" class="header-dropdown__item">Readers</a> 2964 <a href="https://www.contactsexpress.ca/glasses/progressive-readers" class="header-dropdown__item"> 2965 Progressive readers
2966 <span class="header-dropdown__pill"> 2967 <span>New</span> 2968 </span> 2969 </a> 2970 </div> 2971 <!-- <div class="col-12 pt-3 px-0"> 2972 <div class="header-dropdown__item header-dropdown__item--bold">Near + far vision</div> 2973 <a href="https://www.contactsexpress.ca/glasses/sun-readers?product_type=Sunglasses" class="header-dropdown__item">Sun readers</a> 2974 <a href="https://www.contactsexpress.ca/glasses/sun-readers?filters=%26filter=features_uFilter:+Progressive+Eligible&product_type=Sunglasses" class="header-dropdown__item">Sun progressive readers</a> 2975 </div> --> 2976 <div class="d-flex flex-column pt-3"> 2977 <div class="header-dropdown__tile-wrapper"> 2978 <a href="https://www.contactsexpress.ca/glasses/progressive-readers"> 2979 2980 <img src="/cart/images/shared/nav/readers/Jan19-2026-Navbar-Readers-1.jpg" class="header-dropdown__image"> 2981 2982 </a> 2983 <div class="header-dropdown__tile-wrapper m-0"> 2984 <div class="header-dropdown__readers-heading">See near and far with one pair</div> 2985 <div class="header-dropdown__readers-subheading">Progressive readers seamlessly transition from no magnification at the top to your reading strength at the bottom, so you can move naturally throughout your day without ever taking your glasses off. One pair, no visible lines, no prescription needed.</div> 2986 <a href="https://www.contactsexpress.ca/glasses/progressive-readers" class="header-dropdown__readers-cta">Shop Progressive Readers <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></a> 2987 </div> 2988 </div> 2989 </div> 2990</div> 2991 2992 2993<div mini-hamburger data-dropdown-type="mobile-contacts" style="display: none; "> 2994 <div class="col-12 header-mobile__category header-mobile__category--border-bottom p-4" back-to-main-hamburger> 2995 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Contacts</span> 2996 <div class="header-mobile__close"> 2997 <img src="/cart/images/shared/icons/close-grey.svg"> 2998 </div> 2999 </div> 3000 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 3001 <div class="header-dropdown__brands-container p-3"> 3002 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+KITS" class="header-dropdown__brand-wrapper"> 3003 <img src="/cart/images/shared/nav/contacts/logo-kits-daily.svg"> 3004 </a> 3005 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Johnson+and+Johnson" class="header-dropdown__brand-wrapper"> 3006 <img src="/cart/images/shared/nav/contacts/logo-acuvue.svg"> 3007 </a> 3008 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__brand-wrapper"> 3009 <img src="/cart/images/shared/nav/contacts/logo-biofinity.svg"> 3010 </a> 3011 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper"> 3012 <img src="/cart/images/shared/nav/contacts/logo-dailies.svg"> 3013 </a> 3014 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper"> 3015 <img src="/cart/images/shared/nav/contacts/logo-air-optix.svg"> 3016 </a> 3017 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__brand-wrapper"> 3018 <img src="/cart/images/shared/nav/contacts/logo-clariti.svg"> 3019 </a> 3020 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper"> 3021 <img src="/cart/images/shared/nav/contacts/logo-precision1.svg"> 3022 </a> 3023 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__brand-wrapper"> 3024 <img src="/cart/images/shared/nav/contacts/logo-biotrue.svg"> 3025 </a> 3026 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__brand-wrapper">
3027 <img src="/cart/images/shared/nav/contacts/logo-ultra.svg"> 3028 </a> 3029 <!-- <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Johnson+and+Johnson" class="header-dropdown__brand-wrapper"> 3030 <img src="/cart/images/shared/nav/contacts/logo-acuvue-vita.svg"> 3031 </a> --> 3032 </div> 3033 <!-- <div class="col-12 header-mobile__category header-mobile__category--border-bottom" to-brands-hamburger data-dropdown-type="mobile-contacts"> 3034 <span>Shop by brands</span> 3035 <img src="/cart/images/shared/icons/greater-than-black.svg" height="30" width="30"> 3036 </div> --> 3037 <div class="col-12 py-3 px-0"> 3038 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3039 <a href="https://www.contactsexpress.ca/contacts" class="header-dropdown__item">All contacts</a> 3040 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Daily+Disposables" class="header-dropdown__item">Daily</a> 3041 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+1-2+Week+Disposables" class="header-dropdown__item">Weekly</a> 3042 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Monthly+Disposables" class="header-dropdown__item">Monthly</a> 3043 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Toric+Lenses" class="header-dropdown__item">Toric</a> 3044 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Bifocals+and+Progressives" class="header-dropdown__item">Multifocal</a> 3045 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Color+Disposables" class="header-dropdown__item"> 3046 3047 Colour 3048 3049 </a> 3050 </div> 3051 <div class="d-flex flex-column"> 3052 <a href="https://www.contactsexpress.ca/kits-daily-contacts" class="header-dropdown__tile-wrapper"> 3053 <img src="/cart/images/shared/nav/contacts/Apr30-2026-Navbar-Contacts-1.jpg" class="header-dropdown__image"> 3054 <div class="header-dropdown__tile-heading">Contacts starting at $1 a day</div> 3055 <div class="header-dropdown__tile-subheading">Shop KITS Daily <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3056 </a> 3057 <!-- <a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDA30" class="header-dropdown__tile-wrapper"> 3058 <img src="/cart/images/shared/nav/contacts/Jan19-2026-Navbar-Contacts-2.jpg" class="header-dropdown__image"> 3059 <div class="header-dropdown__tile-heading">Vendor ad</div> 3060 <div class="header-dropdown__tile-subheading">Shop vendor <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3061 </a> --> 3062 </div> 3063</div> 3064<div class="py-4" brands-hamburger data-dropdown-type="mobile-contacts" style="display: none; "> 3065 <div class="col-12 header-mobile__category header-mobile__category--border-bottom" back-to-mini-hamburger data-dropdown-type="mobile-contacts"> 3066 <span class="d-flex align-items-center"><img src="/cart/images/shared/icons/arrow-left.svg" height="25" width="25" class="mr-2">Shop by brands</span> 3067 </div> 3068 <div class="col-12 px-0"> 3069 <div class="py-3"> 3070 <a href="https://www.contactsexpress.ca/contacts" class="header-dropdown__item header-dropdown__item--bold">All brands</a> 3071 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Johnson+and+Johnson" class="header-dropdown__item">Acuvue</a> 3072 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__item">Alcon</a> 3073 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__item">Air Optix</a> 3074 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__item">Biofinity</a> 3075 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__item">Clariti</a> 3076 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__item">Dailies</a> 3077 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__item">Precision 1</a> 3078 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__item">Biotrue</a> 3079 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__item">ULTRA</a> 3080 </div> 3081 </div> 3082</div> 3083</div> 3084 3085 </section> 3086 <section id="header"> 3087 <div class="header__container"> 3088 <div class="header__logo ">
3089 <a href="https://www.contactsexpress.ca/index"> 3090 3091 <img src="/cart/images/shared/nav/contacts-express-logo-dark.svg"> 3092 3093 3094 </a> 3095 </div> 3096 <div class="legacy-search"> 3097 <div class="legacy-search__wrapper" dropdown-toggle data-dropdown-opened="false" data-dropdown-type="search"> 3098 <div class="d-flex flex-row align-items-center gap-2 mr-4"> 3099 <img src="/cart/images/shared/icons/search-grey.svg" height="20"> 3100 <span>Search Products</span> 3101 </div> 3102 3103 <div class="barcode-scanner"><img src="/cart/images/shared/icons/scan-barcode.svg"></div> 3104 3105 </div> 3106 </div> 3107 <div class="header-search-bar__container" dropdown data-dropdown-type="search"> 3108 3109 <div class="d-flex align-items-center justify-content-center h-100"> 3110 <div class="header-search-bar__wrapper"> 3111 <div class="d-flex align-items-center w-100"> 3112 <img class="pr-2" src="/cart/images/shared/icons/search-grey.svg" height="20"> 3113 <input id="search-input" class="header-search-bar__input" type="text" placeholder="Search Products"> 3114 </div> 3115 <div class="header-search-bar__clear" id="search-clear">Clear</div> 3116 </div> 3117 <img class="header-search-bar__close" src="/cart/images/shared/icons/close-grey.svg"> 3118 </div> 3119 3120 </div> 3121 <div class="header__utilities"> 3122 3123 <div class="header__utility" dropdown-toggle data-dropdown-opened="false" data-dropdown-type="account"><img src="/cart/images/shared/icons/account-grey.svg" height="20"></div> 3124 <a href="https://www.contactsexpress.ca/favorites" id="favorites" class="position-relative header__utility" dropdown-toggle data-dropdown-opened="false" data-dropdown-type="favorites"> 3125 <img src="/cart/images/shared/icons/heart-grey.svg" height="20"> 3126 <div id="header-favorites-count" class="header__items-count"></div> 3127 </a> 3128 <a href="https://www.contactsexpress.ca/ord/checkout" class="position-relative header__utility" dropdown-toggle data-dropdown-opened="false" data-dropdown-type="cart"> 3129 <img src="/cart/images/shared/icons/bag-grey.svg" height="20"> 3130 <div id="header-cart-count" class="header__items-count"></div> 3131 </a> 3132 <div class="d-flex d-lg-none header__utility" id="hamburger" dropdown-toggle data-dropdown-opened="false" data-dropdown-type="hamburger"><img id="img-hamburger" src="/cart/images/shared/icons/hamburger-grey.svg" height="20"></div> 3133 </div> 3134 </div> 3135 <div class="header__categories"> 3136 3137 <a href="https://www.contactsexpress.ca/contacts" class="header__category-option" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="contacts">Contacts</a> 3138 <a href="https://www.contactsexpress.ca/glasses" class="header__category-option" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="eyeglasses">Eyeglasses</a> 3139 <a href="https://www.contactsexpress.ca/sunglasses" class="header__category-option" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="sunglasses">Sunglasses</a> 3140 <a href="https://www.contactsexpress.ca/ai-smart-glasses" class="header__category-option text-nowrap" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="smart-glasses">AI Smart Glasses <span class="smart-glasses__new-pill">New</span></a> 3141 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Glasses,Sunglasses" class="header__category-option" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="designer">Brands</a> 3142 <!-- <a href="https://www.contactsexpress.ca/glasses/readers" class="header__category-option" category-dropdown-toggle data-dropdown-opened="false" data-dropdown-type="readers">Readers</a> --> 3143 3144 <a href="https://www.contactsexpress.ca/insurance" class="header__category-option nav_insurance">Insurance</a> 3145 3146 </div> 3147 3148 3149 3150<div class="header__dropdown py-4 pt-0" dropdown data-dropdown-type="favorites"> 3151 <div class="row mx-0 flex-column"> 3152 3153 <div class="d-flex justify-content-between col-12 px-4 pb-4 header-dropdown__item"><span class="header-dropdown__item--bold">Favourites <span class="header-dropdown__total-items">(<span id="dropdown-favorites-count"></span> items)</span></span></div> 3154 3155 <div class="col-12 px-4 mb-3 header-dropdown__products-list" id="favorites-list"></div> 3156 </div> 3157</div> 3158 3159 3160<div class="header__dropdown pb-4 pt-0" dropdown data-dropdown-type="cart"> 3161 <div class="d-inline"> 3162 <div class="d-flex justify-content-between col-12 p-4 header-dropdown__item">
3163 <span class="header-dropdown__item--bold">My bag <span class="header-dropdown__total-items">(<span id="dropdown-cart-count"></span> items)</span></span> 3164 </div> 3165 <div class="header-dropdown__free-shipping-stripe px-4 py-2 mb-3"><img src="/cart/images/shared/icons/truck-washed-blue.svg" height="24" class="mr-2"><span id="header-free-ship-message"></span></div> 3166 <div class="col-12 px-4 mb-3 header-dropdown__products-list" id="cart-items"></div> 3167 <div class="header-dropdown__cart-options" style="display: none;"> 3168 <div class="header-dropdown__subtotal-wrapper p-4"> 3169 <div class="header-dropdown__subtotal-text">Subtotal</div> 3170 <div class="header-dropdown__subtotal-amount"> 3171 <span class="header-dropdown__subtotal-discounted" id="subtotal-discounted"></span> 3172 <span class="header-dropdown__subtotal-full" id="subtotal-full" data-subtotal-full="true"></span> 3173 </div> 3174 </div> 3175 <div class="col-12 px-4 pb-3"> 3176 <a href="https://www.contactsexpress.ca/ord/checkout" class="header-dropdown__button header-dropdown__button--black">View cart & checkout</a> 3177 </div> 3178 <div class="col-12 px-4 pb-3"> 3179 <div class="header-dropdown__coupon-wrapper"> 3180 <input class="header-dropdown__coupon-input" id="header-coupon-input" type="text" placeholder="Enter coupon code"> 3181 <span class="header-dropdown__coupon-apply" id="header-coupon-apply" can-apply-coupon="false">Apply</span> 3182 </div> 3183 </div> 3184 <div class="col-12 px-4 pb-3 header-dropdown__coupon-message"></div> 3185 </div> 3186 </div> 3187</div> 3188 3189 3190<div class="header__dropdown p-4" dropdown data-dropdown-type="account"> 3191 <div class="row mx-0 flex-column logged_out" style="display: none; "> 3192 <div class="col-12 px-0 header-dropdown__account-welcome">Welcome, </div> 3193 <div class="header-dropdown__button-container pb-3 header-mobile__category--border-bottom"> 3194 <a href="https://www.contactsexpress.ca/login" class="header-dropdown__button header-dropdown__button--black">Sign in</a> 3195 <a href="https://www.contactsexpress.ca/new_account" class="header-dropdown__button header-dropdown__button--w
3195hite">Register</a> 3196 </div> 3197 <div class="header-dropdown__item header-dropdown__item--bold px-0">Trending products</div> 3198 <a href="https://www.contactsexpress.ca/autoship" class="header-dropdown__item px-0" header-autoship>Subscribe & Save</a> 3199 3200 </div> 3201 <div class="row mx-0 flex-column logged_in" style="display: none; "> 3202 <div class="col-12 px-0 header-mobile__account-welcome">Nice to see you, <span class="account-name"></span></div> 3203 <a href="https://www.contactsexpress.ca/logout" class="col-12 px-0 mb-3 header-dropdown__account-logout">Sign out</a> 3204 <a href="https://www.contactsexpress.ca/order-status" class="mb-3 header-dropdown__button header-dropdown__button--white"><img src="/cart/images/shared/icons/package-search.svg" height="20">Check order status</a> 3205 <a href="https://www.contactsexpress.ca/saved_carts_changes?pagename=saved_carts" class="mb-3 header-dropdown__button header-dropdown__button--white"><img src="/cart/images/shared/icons/clock-rewind.svg" height="20">Place reorder</a> 3206 <div class="header-dropdown__item header-dropdown__item--bold px-0">Account details</div> 3207 <a href="https://www.contactsexpress.ca/customerservice" class="header-dropdown__item px-0">My profile</a> 3208 <a href="https://www.contactsexpress.ca/query/check_orders.html?pagename=check_status" class="header-dropdown__item px-0">Order history</a> 3209 <a href="https://www.contactsexpress.ca/upload_rx" class="header-dropdown__item px-0">My prescription</a> 3210 <div class="header-dropdown__item header-dropdown__item--bold px-0">Trending products</div> 3211 <a href="https://www.contactsexpress.ca/autoship" class="header-dropdown__item px-0" header-autoship>Subscribe & Save</a> 3212 3213 </div> 3214</div> 3215 3216 3217 3218<div class="header__dropdown w-100" dropdown data-dropdown-type="search"> 3219 <div class="header-dropdown__container header__dropdown--wide flex-wrap" style="display: none; " data-search-results> 3220 <div class="search-dropdown__popular-search col-12 col-lg-3 pb-0"> 3221 <div class="search-dropdown__heading">Suggestions</div> 3222 <div class="search-dropdown__suggestions-wrapper"></div> 3223 </div> 3224 <div class="search-dropdown__products-container col-12 col-lg-9"> 3225 <div class="col-12 p-0"> 3226 <div class="search-dropdown__heading">Results (<span id="search-count"></span>)</div> 3227 <div class="search-dropdown__products-list"></div> 3228 </div> 3229 </div> 3230 <div class="search-dropdown__products-container col-12 col-lg-9" data-search-no-results> 3231 <div class="col-12 pl-0"> 3232 <div class="search-dropdown__products-list"></div> 3233 </div> 3234 </div> 3235 </div> 3236 <div class="header-dropdown__container header__dropdown--wide flex-wrap" data-search-trending> 3237 <div class="col-12 col-lg-3"> 3238 <div class="col-12 px-0"> 3239 <div class="search-dropdown__popular-search"> 3240 <div class="search-dropdown__heading">Popular search</div> 3241 <div class="search-dropdown__pills-wrapper"> 3242 3243 <a href="https://www.contactsexpress.ca/glasses" class="search-dropdown__pill">All eyeglasses</a> 3244 3245 <a href="https://www.contactsexpress.ca/glasses/readers" class="search-dropdown__pill">Readers</a> 3246 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Women&product_type=Glasses" class="search-dropdown__pill">Women's</a> 3247 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Men&product_type=Glasses" class="search-dropdown__pill">Men's</a> 3248 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=material_uFilter:+Acetate+OR+material_uFilter:+Plastic+OR+material_uFilter:+Eco-Friendly&product_type=Glasses" class="search-dropdown__pill">Strong prescription</a> 3249 </div> 3250 </div> 3251 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="search-dropdown__promo-wrapper mx-lg-0"> 3252 3253 <img class="header-dropdown__image" src="/cart/images/sh
3253ared/nav/search/Jan19-2026-Navbar-Search-1.jpg"> 3254 3255 <div class="search-dropdown__promo-heading">Popular for a reason</div> 3256 <div class="search-dropdown__promo-subheading">Shop KITS best sellers <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3257 </a> 3258 </div> 3259 </div> 3260 <div class="col-12 col-lg-9 search-dropdown__products-container"> 3261 <div class="search-dropdown__heading">Trending products</div> 3262 <div class="search-dropdown__products-list"></div> 3263 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="search-dropdown__promo-wrapper mx-lg-0 d-flex d-lg-none pt-4"> 3264 3265 <img class="header-dropdown__image" src="/cart/images/shared/nav/search/Jan19-2026-Navbar-Search-1.jpg"> 3266 3267 <div class="search-dropdown__promo-heading">Popular for a reason</div> 3268 <div class="search-dropdown__promo-subheading">Shop KITS best sellers <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3269 </a> 3270 </div> 3271 </div> 3272 <div class="header-dropdown__container header__dropdown--wide flex-wrap" style="display: none; " data-search-optician> 3273 <div class="row mx-0 col-12 col-lg-9 flex-column"> 3274 <div class="optician-thoughts-container"> 3275 <div class="loading-dots-optician" style="height: 20px; display: none; "> 3276 <span></span> 3277 <span></span> 3278 <span></span> 3279 </div> 3280 <img class="mr-2 optician-icon" src="/cart/images/shared/icons/optician-ai-stars-blue.svg" height="20"> 3281 <div class="optician-thoughts">Describe what you're looking for</div> 3282 </div> 3283 <div class="search-dropdown__pills-wrapper w-100"> 3284 <div class="search-dropdown__pill">Trending glasses</div> 3285 <div class="search-dropdown__pill">Lightweight glasses</div> 3286 <div class="search-dropdown__pill">Glasses for round face</div> 3287 <div class="search-dropdown__pill">Red glasses</div> 3288 </div> 3289 <div class="optician-products-container w-100 pb-5" style="display: none; "> 3290 <div class="optician-products-count">AI-powered results (<span id="optician-count"></span>)</div> 3291 <div class="optician-products-wrapper d-flex flex-wrap pb-5"></div> 3292 </div> 3293 </div> 3294 </div> 3295</div> 3296 3297 3298 3299<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="eyeglasses"> 3300 <div class="header-dropdown__container header__dropdown--wide"> 3301 <div class="d-flex"> 3302 <div class="header-dropdown__options-wrapper"> 3303 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3304 <a href="https://www.contactsexpress.ca/glasses" class="header-dropdown__item">All eyeglasses</a> 3305 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Women&product_type=Glasses" class="header-dropdown__item">Women</a> 3306 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Men&product_type=Glasses" class="header-dropdown__item">Men</a> 3307 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Glasses" class="header-dropdown__item">Kids</a> 3308 3309 </div> 3310 <div class="header-dropdown__options-wrapper"> 3311 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 3312 3313 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="header-dropdown__item">Best sellers</a> 3314 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=features_uFilter:+Progressive+Eligible&product_type=Glasses" class="header-dropdown__item">Progressives</a> 3315 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+New&product_type=Glasses" class="header-dropdown__item">KITS new arrivals</a> 3316 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Glasses" class="header-dropdown__item">KITS eyeglasses</a> 3317 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Glasses" class="header-dropdown__item">Designer eyeglasses</a> 3318 <!-- <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Promo&product_type=Glasses" class="header-dropdown__item header-dropdown__item--DC2626">Designer sale from $50</a> --> 3319 </div> 3320 <div class="header-dropdown__options-wrapper"> 3321 <div class="header-dropdown__item header-dropdown__item--bold">Curated</div> 3322 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+The+Campus+Edit&product_type=Glasses" class="header-dropdown__item">The Campus Edit</a> 3323 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Office+Ready&product_type=Glasses" class="header-dropdown__item">Office Ready</a> 3324 </div> 3325 </div> 3326 <div class="d-flex"> 3327 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Glasses" class="header-dropdown__tile-wrapper"> 3328
3329 <img src="/cart/images/shared/nav/eyeglasses/Jul20-2026-Navbar-Eyeglasses-1.jpg" class="header-dropdown__image"> 3330 3331 <div class="header-dropdown__tile-heading">Up to 50% off Kids frames</div> 3332 <div class="header-dropdown__tile-subheading">Shop kids glasses <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3333 </a> 3334 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 3335 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-1.jpg" class="header-dropdown__image"> 3336 <div class="header-dropdown__tile-heading">Meet Your Everyday AI Glasses</div> 3337 <div class="header-dropdown__tile-subheading">Shop KITS Pangolin 3 <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3338 </a> 3339 </div> 3340 </div> 3341</div> 3342 3343 3344<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="sunglasses"> 3345 <div class="header-dropdown__container header__dropdown--wide"> 3346 <div class="d-flex"> 3347 <div class="header-dropdown__options-wrapper"> 3348 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3349 <a href="https://www.contactsexpress.ca/sunglasses" class="header-dropdown__item">All sunglasses</a> 3350 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Women&product_type=Sunglasses" class="header-dropdown__item">Women</a> 3351 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Unisex+OR+gender_uFilter:+Men&product_type=Sunglasses" class="header-dropdown__item">Men</a> 3352 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Sunglasses" class="header-dropdown__item">Kids</a> 3353 </div> 3354 <div class="header-dropdown__options-wrapper"> 3355 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 3356 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Sunglasses" class="header-dropdown__item">Best sellers</a> 3357 <a href="https://www.contactsexpress.ca/includes-polarized-lenses" class="header-dropdown__item">Polarized</a> 3358 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Sunglasses" class="header-dropdown__item">KITS sunglasses</a> 3359 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Sunglasses" class="header-dropdown__item">Designer sunglasses</a> 3360 </div> 3361 </div> 3362 <div class="d-flex"> 3363 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 3364 3365 <img src="/cart/images/shared/nav/sunglasses/Aug06-2026-Navbar-Sunglasses-1.jpg" class="header-dropdown__image"> 3366 3367 <div class="header-dropdown__tile-heading">Up to 50% off Kids frames</div> 3368 <div class="header-dropdown__tile-subheading">Shop kids sunglasses <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3369 </a> 3370 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+The+Slim+Edit&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 3371 <img src="/cart/images/shared/nav/sunglasses/Apr13-2026-Navbar-Sunglasses-2.jpg" class="header-dropdown__image"> 3372 <div class="header-dropdown__tile-heading">Vacation-ready</div> 3373 <div class="header-dropdown__tile-subheading">Shop sun styles <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3374 </a> 3375 </div> 3376 </div> 3377</div> 3378 3379 3380 3381 3382 3383 3384 3385<style> 3386 @scope (.header__dropdown[data-dropdown-type="smart-glasses"]) { 3387 .smart-glasses__product-wrapper { 3388 background-color: #F5F5F5; 3389 border-radius: 8px; 3390 position: relative; 3391 padding: 16px; 3392 } 3393 .smart-glasses__new-pill { 3394 position: absolute; 3395 z-index: 1; 3396 padding: 2px 6px; 3397 border-radius: 8px; 3398 background-color: #1960EF; 3399 color: #ffffff; 3400 font-size: 14px; 3401 font-weight: 500; 3402 top: 4px; 3403 left: 4px; 3404 } 3405 .smart-glasses__product-title { 3406 color: #252B37; 3407 font-size: 16px; 3408 font-weight: 600; 3409 } 3410 .smart-glasses__product-price { 3411 color: #414651; 3412 font-size: 16px; 3413 font-weight: 400; 3414 &.sale { 3415 color: #D92D20; 3416 font-weight: 500; 3417 } 3418 &.strikethrough { 3419 text-decoration: line-through; 3420 } 3421 } 3422 } 3423</style> 3424 3425<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="smart-glasses">
3426 <div class="header-dropdown__container header__dropdown--wide"> 3427 <div class="d-flex"> 3428 <div class="header-dropdown__options-wrapper text-nowrap"> 3429 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3430 <a href="https://www.contactsexpress.ca/ai-smart-glasses" class="header-dropdown__item">All AI Smart Glasses</a> 3431 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">KITS</a> 3432 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Ray-Ban%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Ray-Ban Meta</a> 3433 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Oakley%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Oakley Meta</a> 3434 3435 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Lucyd%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Lucyd Armor</a> 3436 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Reebok%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Reebok</a> 3437 </div> 3438 <div class="header-dropdown__brands-wrapper px-4"> 3439 <div class="col-12 pl-1 pt-0 row mx-0 mb-1 justify-content-between align-items-center"> 3440 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 3441 </div> 3442 <div class="d-flex flex-column gap-3 header-dropdown__item"> 3443 <a href="https://www.contactsexpress.ca/glasses/GL28472/pangolin-3-soren" class="smart-glasses__product-wrapper"> 3444 <div class="smart-glasses__new-pill">New</div> 3445 <div class="d-flex flex-row"> 3446 <div class="col-6 align-content-center"> 3447 3448 3449 <img src="/cart/images/frames/items/5/52/52000073035_IMG.jpg" alt="KITS Pangolin 3 Soren" style="mix-blend-mode: multiply; "/> 3450 </div> 3451 <div class="d-flex flex-column justify-content-center"> 3452 <div class="smart-glasses__product-title">KITS Pangolin 3 Soren</div> 3453 <div class="smart-glasses__product-price">$208</div> 3454 </div> 3455 </div> 3456 </a> 3457 <a href="https://www.contactsexpress.ca/glasses/GL25778/ray-ban-rw7001-blayzer-meta-gen-2" class="smart-glasses__product-wrapper"> 3458 <div class="d-flex flex-row"> 3459 <div class="col-6 align-content-center"> 3460 3461 3462 <img src="/cart/images/frames/items/2/23/23000064111_IMG.jpg" alt="Ray-Ban RW7001 Blayzer Meta Gen 2" style="mix-blend-mode: multiply; "/> 3463 </div> 3464 <div class="d-flex flex-column justify-content-center"> 3465 <div class="smart-glasses__product-title">Ray-Ban RW7001 Blayzer Meta Gen 2</div> 3466 3467 <div class="smart-glasses__product-price"> 3468 $579 3469 </div> 3470 3471 </div> 3472 </div> 3473 </a> 3474 </div> 3475 </div> 3476 </div> 3477 <div class="d-flex"> 3478 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 3479 3480 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-1.jpg" class="header-dropdown__image"> 3481 3482 <div class="header-dropdown__tile-heading">KITS Pangolin 3</div> 3483 <div class="header-dropdown__tile-subheading">Discover now <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3484 </a> 3485 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 3486
3487 <img src="/cart/images/shared/nav/smart_glasses/Jul14-2026-Navbar-Smart-Glasses-2.jpg" class="header-dropdown__image"> 3488 3489 <div class="header-dropdown__tile-heading">Designer frames. Smart technology.</div> 3490 <div class="header-dropdown__tile-subheading">Shop the collection <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3491 </a> 3492 </div> 3493 </div> 3494</div> 3495 3496 3497<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="designer"> 3498 <div class="header-dropdown__container header__dropdown--wide"> 3499 <div class="d-flex"> 3500 <div class="header-dropdown__options-wrapper text-nowrap"> 3501 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3502 <a href="https://www.contactsexpress.ca/brands" class="header-dropdown__item">Brand A-Z</a> 3503 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Glasses" class="header-dropdown__item">Designer eyeglasses</a> 3504 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer&product_type=Sunglasses" class="header-dropdown__item">Designer sunglasses</a> 3505 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=gender_uFilter:+Kids%26filter=collections_name_uFilter:+Designer+Kids&product_type=Glasses,Sunglasses" class="header-dropdown__item">Designer kids</a> 3506 <a href="https://www.contactsexpress.ca/smart-glasses" class="header-dropdown__item">Smart glasses</a> 3507 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Safety+Glasses&product_type=Glasses,Sunglasses" class="header-dropdown__item">Safety glasses</a> 3508 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Promo&product_type=Glasses,Sunglasses" class="header-dropdown__item header-dropdown__item--DC2626 text-wrap">Designer sale up to 70% off</a> 3509 </div> 3510 <div class="header-dropdown__brands-wrapper px-4"> 3511 <div class="col-12 pl-1 pt-0 row mx-0 mb-3 justify-content-between align-items-center"> 3512 <div class="header-dropdown__item header-dropdown__item--bold">Top brands</div> 3513 </div> 3514 <div class="header-dropdown__brands-container"> 3515 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+KITS&product_type=Glasses,Sunglasses" class="header-dropdown__brand-wrapper"> 3516 <img src="/cart/images/shared/nav/designer/logo-kits-grey.svg"> 3517 </a> 3518 <a href="https://www.contactsexpress.ca/brand-ray-ban" class="header-dropdown__brand-wrapper"> 3519 <img src="/cart/images/shared/nav/designer/logo-ray-ban-grey.svg"> 3520 </a> 3521 <a href="https://www.contactsexpress.ca/brand-oakley" class="header-dropdown__brand-wrapper"> 3522 <img src="/cart/images/shared/nav/designer/logo-oakley-grey.svg"> 3523 </a> 3524 <a href="https://www.contactsexpress.ca/brand-tom-ford" class="header-dropdown__brand-wrapper"> 3525 <img src="/cart/images/shared/nav/designer/logo-tom-ford-grey.svg"> 3526 </a> 3527 <a href="https://www.contactsexpress.ca/brand-marc-jacobs" class="header-dropdown__brand-wrapper"> 3528 <img src="/cart/images/shared/nav/designer/logo-marc-jacobs-grey.svg"> 3529 </a> 3530 <a href="https://www.contactsexpress.ca/brand-gucci" class="header-dropdown__brand-wrapper"> 3531 <img src="/cart/images/shared/nav/designer/logo-gucci-grey.svg"> 3532 </a> 3533 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Michael+Kors&product_type=Glasses,Sunglasses" class="header-dropdown__brand-wrapper"> 3534 <img src="/cart/images/shared/nav/designer/logo-michael-kors-grey.svg"> 3535 </a> 3536 <a href="https://www.contactsexpress.ca/brand-carrera" class="header-dropdown__brand-wrapper"> 3537 <img src="/cart/images/shared/nav/designer/logo-carrera-grey.svg"> 3538 </a> 3539 <a href="https://www.contactsexpress.ca/brand-kate-spade" class="header-dropdown__brand-wrapper">
3540 <img src="/cart/images/shared/nav/designer/logo-kate-spade-grey.svg"> 3541 </a> 3542 </div> 3543 </div> 3544 </div> 3545 <div class="d-flex"> 3546 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Kids&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 3547 3548 <img src="/cart/images/shared/nav/designer/Aug06-2026-Navbar-Designer-1.jpg" class="header-dropdown__image"> 3549 3550 <div class="header-dropdown__tile-heading">NEW designer kids collection</div> 3551 <div class="header-dropdown__tile-subheading">Shop up to 50% off <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3552 </a> 3553 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=brand_name_uFilter:+Ray-Ban%26filter=collections_name_uFilter:+Smart+Glasses&product_type=Glasses&product_type=Sunglasses" class="header-dropdown__tile-wrapper"> 3554 3555 <img src="/cart/images/shared/nav/designer/Sep08-2026-Navbar-Designer-2.jpg" class="header-dropdown__image"> 3556 3557 <div class="header-dropdown__tile-heading">Shop NEW Ray-Ban Meta</div> 3558 <div class="header-dropdown__tile-subheading">With 30% off lenses<img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3559 </a> 3560 </div> 3561 </div> 3562</div> 3563 3564 3565<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="sale"> 3566 <div class="header-dropdown__container header__dropdown--wide justify-content-center"> 3567 <div class="d-flex"> 3568 <a href="https://www.contactsexpress.ca/glasses-on-sale" class="header-dropdown__tile-wrapper"> 3569 3570 <img src="/cart/images/shared/nav/sale/Jul27-2026-Navbar-Sale-1.jpg" class="header-dropdown__image"> 3571 3572 <div class="header-dropdown__tile-heading header-dropdown__item--DC2626">Up to 65% off selected KITS Frames</div> 3573 <div class="header-dropdown__tile-subheading">Shop KITS sale <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3574 </a> 3575 <a href="https://www.contactsexpress.ca/glasses?filters=%26filter=collections_name_uFilter:+Designer+Promo&product_type=Glasses,Sunglasses" class="header-dropdown__tile-wrapper"> 3576 <img src="/cart/images/shared/nav/sale/Jan19-2026-Navbar-Sale-2.jpg" class="header-dropdown__image"> 3577 <div class="header-dropdown__tile-heading header-dropdown__item--DC2626">Designer sale up to 70% off</div> 3578 <div class="header-dropdown__tile-subheading">Shop Designer sale <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3579 </a> 3580 </div> 3581 </div> 3582</div> 3583 3584 3585<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="readers"> 3586 <div class="header-dropdown__container header__dropdown--wide"> 3587 <div class="d-flex"> 3588 <div class="header-dropdown__options-wrapper"> 3589 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3590 <a href="https://www.contactsexpress.ca/glasses/readers" class="header-dropdown__item">Readers</a> 3591 <a href="https://www.contactsexpress.ca/glasses/progressive-readers" class="header-dropdown__item text-nowrap"> 3592 Progressive readers 3593 <span class="header-dropdown__pill"> 3594 <span>New</span> 3595 </span> 3596 </a> 3597 </div> 3598 <!-- <div class="header-dropdown__options-wrapper"> 3599 <div class="header-dropdown__item header-dropdown__item--bold">Near + far vision</div> 3600 <a href="https://www.contactsexpress.ca/glasses/sun-readers?product_type=Sunglasses" class="header-dropdown__item">Sun readers</a> 3601 <a href="https://www.contactsexpress.ca/glasses/sun-readers?filters=%26filter=features_uFilter:+Progressive+Eligible&product_type=Sunglasses" class="header-dropdown__item">Sun progressive readers</a> 3602 </div> --> 3603 </div> 3604 <div class="d-flex justify-content-end"> 3605 <a href="https://www.contactsexpress.ca/glasses/progressive-readers" class="h-100"> 3606
3607 <img src="/cart/images/shared/nav/readers/Jan19-2026-Navbar-Readers-1.jpg" class="header-dropdown__image"> 3608 3609 </a> 3610 <div class="header-dropdown__tile-wrapper mx-5 my-0"> 3611 <div class="header-dropdown__readers-heading">See near and far with one pair</div> 3612 <div class="header-dropdown__readers-subheading">Progressive readers seamlessly transition from no magnification at the top to your reading strength at the bottom, so you can move naturally throughout your day without ever taking your glasses off. One pair, no visible lines, no prescription needed.</div> 3613 <a href="https://www.contactsexpress.ca/glasses/progressive-readers" class="header-dropdown__readers-cta">Shop Progressive Readers <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></a> 3614 </div> 3615 </div> 3616 </div> 3617</div> 3618 3619 3620<div class="header__dropdown w-100" category-dropdown dropdown data-dropdown-type="contacts"> 3621 <div class="header-dropdown__container header__dropdown--wide"> 3622 <div class="d-flex"> 3623 <div class="header-dropdown__options-wrapper text-nowrap"> 3624 <div class="header-dropdown__item header-dropdown__item--bold">Shop</div> 3625 <a href="https://www.contactsexpress.ca/contacts" class="header-dropdown__item">All contacts</a> 3626 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Daily+Disposables" class="header-dropdown__item">Daily</a> 3627 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+1-2+Week+Disposables" class="header-dropdown__item">Weekly</a> 3628 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Monthly+Disposables" class="header-dropdown__item">Monthly</a> 3629 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Toric+Lenses" class="header-dropdown__item">Toric</a> 3630 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Bifocals+and+Progressives" class="header-dropdown__item">Multifocal</a> 3631 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=category_uFilter:+Color+Disposables" class="header-dropdown__item"> 3632 3633 Colour 3634 3635 </a> 3636 </div> 3637 <div class="header-dropdown__brands-wrapper px-4"> 3638 <div class="col-12 pl-1 pt-0 row mx-0 mb-3 justify-content-between align-items-center"> 3639 <div class="header-dropdown__item header-dropdown__item--bold">Featured</div> 3640 </div> 3641 <div class="header-dropdown__brands-container"> 3642 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+KITS" class="header-dropdown__brand-wrapper"> 3643 <img src="/cart/images/shared/nav/contacts/logo-kits-daily.svg"> 3644 </a> 3645 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Johnson+and+Johnson" class="header-dropdown__brand-wrapper"> 3646 <img src="/cart/images/shared/nav/contacts/logo-acuvue.svg"> 3647 </a> 3648 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__brand-wrapper"> 3649 <img src="/cart/images/shared/nav/contacts/logo-biofinity.svg"> 3650 </a> 3651 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper"> 3652 <img src="/cart/images/shared/nav/contacts/logo-dailies.svg"> 3653 </a> 3654 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper"> 3655 <img src="/cart/images/shared/nav/contacts/logo-air-optix.svg"> 3656 </a> 3657 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+CooperVision" class="header-dropdown__brand-wrapper"> 3658 <img src="/cart/images/shared/nav/contacts/logo-clariti.svg"> 3659 </a> 3660 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Alcon" class="header-dropdown__brand-wrapper">
3661 <img src="/cart/images/shared/nav/contacts/logo-precision1.svg"> 3662 </a> 3663 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__brand-wrapper"> 3664 <img src="/cart/images/shared/nav/contacts/logo-biotrue.svg"> 3665 </a> 3666 <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Bausch+and+Lomb" class="header-dropdown__brand-wrapper"> 3667 <img src="/cart/images/shared/nav/contacts/logo-ultra.svg"> 3668 </a> 3669 <!-- <a href="https://www.contactsexpress.ca/contacts?filters=%26filter=brand_name_uFilter:+Johnson+and+Johnson" class="header-dropdown__brand-wrapper"> 3670 <img src="/cart/images/shared/nav/contacts/logo-acuvue-vita.svg"> 3671 </a> --> 3672 </div> 3673 </div> 3674 </div> 3675 <div class="d-flex"> 3676 <a href="https://www.contactsexpress.ca/kits-daily-contacts" class="header-dropdown__tile-wrapper"> 3677 <img src="/cart/images/shared/nav/contacts/Apr30-2026-Navbar-Contacts-1.jpg" class="header-dropdown__image"> 3678 <div class="header-dropdown__tile-heading">Contacts starting at $1 a day</div> 3679 <div class="header-dropdown__tile-subheading">Shop KITS Daily <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3680 </a> 3681 <!-- <a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDA30" class="header-dropdown__tile-wrapper"> 3682 <img src="/cart/images/shared/nav/contacts/Jan19-2026-Navbar-Contacts-2.jpg" class="header-dropdown__image"> 3683 <div class="header-dropdown__tile-heading">Vendor ad</div> 3684 <div class="header-dropdown__tile-subheading">Shop vendor <img src="/cart/images/shared/icons/arrow-right-smaller-414651.svg" height="20" width="20" alt="Small Right Arrow"></div> 3685 </a> --> 3686 </div> 3687 </div> 3688</div> 3689 </section> 3690</div> 3691 3692 3693<div id="veero-eyefit"></div> 3694<div id="veero-eyesize"></div> 3695 3696<div class="find-my-size-container modal1 mfp-hide" id="findMySize" style="margin:auto;"> 3697 <div class="title">Measurements</div> 3698 <div class="content">If you already have a pair of glasses, you can compare the measurements to your current frame. Just look inside your temple to find your frame measurements. The overall frame size is a combination of lens and bridge's width measurements.</div> 3699 <img class="image" src="/cart/images/shared/flypagegl/measurements_example.png" /> 3700 <div class="table"> 3701 <table> 3702 <tr> 3703 <th></th> 3704 <th>Lens Width</th> 3705 <th>Bridge Width</th> 3706 <th>Temple Length</th> 3707 </tr> 3708 <tr> 3709 <td>XS</td> 3710 <td>< 42 mm</td> 3711 <td>< 16 mm </td> 3712 <td><=128 mm</td> 3713 </tr> 3714 <tr> 3715 <td>S</td> 3716 <td>42 mm - 48 mm</td> 3717 <td>16 mm - 17 mm</td> 3718 <td>128 mm - 134 mm</td> 3719 </tr> 3720 <tr> 3721 <td>M</td> 3722 <td>49 mm - 52 mm</td> 3723 <td>18 mm - 19 mm</td> 3724 <td>135 mm - 141 mm</td> 3725 </tr> 3726 <tr> 3727 <td>L</td> 3728 <td>>52 mm</td> 3729 <td>>19 mm</td> 3730 <td>>= 141 mm</td> 3731 </tr> 3732 </table> 3733 </div> 3734</div>
vendor: 113 bytes, lines 3734-3738
3734 3735 3736 3737 3738<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
3738<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
3738 3739
3740<script defer id="veero-location" src="https://app.veero.ai/js/veero.main.js?b=lsyqIMAGN"></script>
vendor: 1 bytes, line 3740
3740
3741<script type="text/javascript" src="/js/jquery.enhanced.cookie.js"></script>
vendor: 1 bytes, line 3741
3741
3742<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
vendor: 1 bytes, line 3742
3742
3743<script src="https://code.jquery.com/ui/1.14.1/jquery-ui.min.js"></script>
vendor: 1 bytes, line 3743
3743
3744<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
3744 3745
3746<script> 3747 let norders = getCookie("norders"); 3748 let norders_contacts = getCookie("norders_contacts"); 3749 let norders_contacts_nonpla = getCookie("norders_contacts_nonpla"); 3750 let norders_contacts_pla = getCookie("norders_contacts_pla"); 3751 let norders_1r = getCookie("norders_1r"); 3752 let norders_glasses = getCookie("norders_glasses"); 3753 let autoship_status = getCookie("autoship_status"); 3754 3755 let isCexpress = 1; 3756 3757 3758 let preventStickyHeader; 3759 let favoriteItems = JSON.parse(localStorage.getItem("favItemsNew")) ? JSON.parse(localStorage.getItem("favItemsNew")) : ""; 3760 let isLoggedIn = false; 3761 let areaHref = "https://www.contactsexpress.ca/"; 3762 let enrolledPill = `<span class="header-dropdown__pill"><span class="header-dropdown__pill--gradient">Enrolled</span></span>`; 3763 let lastPurchasedPill = `<span class="header-dropdown__pill"><span class="header-dropdown__pill--gradient">Last purchased</span></span>`; 3764 let generalOffer, specialOffer; 3765 let environmentContacts = ""; 3766 let environmentGlasses = ""; 3767 let searchReadersType = ""; 3768 let trendingReadersLabel = ""; 3769 let stripesSwiper; 3770 try { 3771 stripesSwiper = new Swiper("#stripes-swiper", { 3772 slidesPerView: 1, 3773 slidesPerGroup: 1, 3774 loop: true, 3775 autoplay: { 3776 delay: 8000, 3777 }, 3778 on: { 3779 init: () => { 3780 const countdown = function() { 3781 let endDate = new Date(new Date().toLocaleString("en-US", { 3782 timeZone: "America/New_York", 3783 year: 'numeric', 3784 month: 'numeric', 3785 day: 'numeric', 3786 hour: 'numeric', 3787 minute: 'numeric', 3788 second: 'numeric', 3789 })); 3790 const datetime = ""; 3791 const [date, time] = datetime.split(" "); 3792 const [year, month, day] = date.split("-"); 3793 const [hour, minute, second] = time.split(":"); 3794 endDate.setYear(year); 3795 endDate.setMonth(month); 3796 endDate.setDate(day); 3797 endDate.setHours(hour); 3798 endDate.setMinutes(minute); 3799 endDate.setSeconds(second); 3800 let timeNow = new Date().toLocaleString("en-US", { timeZone: "America/New_York" }); 3801 timeNow = new Date(timeNow).getTime(); 3802 let timeRemaining = endDate.getTime() - timeNow; 3803 let days = Math.floor(timeRemaining / (1000 * 60 * 60 * 24)); 3804 let hours = Math.floor((timeRemaining % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 3805 let minutes = Math.floor((timeRemaining % (1000 * 60 * 60)) / (1000 * 60)); 3806 let seconds = Math.floor((timeRemaining % (1000 * 60)) / 1000); 3807 if (timeRemaining >= 0) { 3808 $("#stripe-days").html(String(days).padStart(2, '0') + `<div class="stripe__time-type">Days</div>`); 3809 $("#stripe-hours").html(String(hours).padStart(2, '0') + `<div class="stripe__time-type">Hrs</div>`); 3810 $("#stripe-minutes").html(String(minutes).padStart(2, '0') + `<div class="stripe__time-type">Mins</div>`); 3811 $("#stripe-seconds").html(String(seconds).padStart(2, '0') + `<div class="stripe__time-type">Secs</div>`); 3812 } else { 3813 removeCountdown(); 3814 } 3815 }; 3816 3817 let countdownIntervalID = null; 3818 const setCountdownInterval = function() { 3819 $(".stripe__countdown").css("display", "flex"); 3820 countdownIntervalID = setInterval(() => { 3821 countdown(); 3822 }, 1000); 3823 }; 3824 3825 const removeCountdown = function() { 3826 $(".stripe__countdown").remove(); 3827 if (countdownIntervalID) { 3828 clearInterval(countdownIntervalID); 3829 countdownIntervalID = null; 3830 } 3831 }; 3832 3833 // setCountdownInterval(); 3834 }, 3835 }, 3836 }); 3837 } catch (error) { 3838 console.log(error); 3839 }; 3840 const siteStripesArray = []; 3841 3842 const debounceV2 = (fn, delay = 1000) => { 3843 let timer; 3844 return function (...args) { 3845 clearTimeout(timer); 3846 timer = setTimeout(() => fn.apply(this, args), delay); 3847 }; 3848 }; 3849 3850 const $initialOpticianSuggestionPills = $("[data-search-optician] .search-dropdown__pills-wrapper").html(); 3851const $opticianPillsContainer = $("[data-search-optician] .search-dropdown__pills-wrapper"); 3852const $opticianProductsContainer = $("[data-search-optician] .optician-products-container"); 3853const $opticianProductsWrapper = $("[data-search-optician] .optician-products-wrapper"); 3854const $opticianProductsCountContainer = $("[data-search-optician] .optician-products-count"); 3855const $opticianThoughtsContainer = $(".optician-thoughts-container"); 3856const $opticianThoughtsText = $(".optician-thoughts"); 3857const $opticianLoadingDots = $(".loading-dots-optician"); 3858const remainingOpticianSearchFrames = []; 3859let lastUsedOpticianQuery = ""; 3860 3861let suggestionsAbortController = null; 3862let abortController = null; 3863 3864function abortOpticianSearch() { 3865 if (abortController) { 3866 abortController.abort(); 3867 abortController = null; 3868 }; 3869 if (suggestionsAbortController) { 3870 suggestionsAbortController.abort(); 3871 suggestionsAbortController = null; 3872 }; 3873}; 3874 3875const opticianThinkingWords = [ 3876 'thinking', 3877 'considering', 3878 'analyzing', 3879 'processing', 3880 'reflecting', 3881 'reasoning', 3882 'evaluating', 3883 'pondering', 3884 'calculating', 3885]; 3886let opticianThinkingInterval = null; 3887 3888async function getOpticianSuggestions(query) { 3889 if (suggestionsAbortController) { 3890 suggestionsAbortController.abort(); 3891 suggestionsAbortController = null; 3892 }; 3893 const url = "/service-api/optician-ai/get-search-suggestions"; 3894 let data = {"search_query": query,}; 3895 suggestionsAbortController = new AbortController(); 3896 const signal = suggestionsAbortController.signal; 3897 try { 3898 const response = await fetch(url, { 3899 method: "POST", 3900 body: JSON.stringify(data), 3901 credentials: "include", 3902 headers: { 3903 "Content-Type": "application/json", 3904 "Accept": "application/json", 3905 }, 3906 signal: signal, 3907 }); 3908 const result = await response.json(); 3909 if(result.functionArgs) { 3910 const functionArgs = JSON.parse(result.functionArgs); 3911 $opticianPillsContainer.html("");
3912 functionArgs.filters.forEach((elem) => { 3913 $opticianPillsContainer.append(` 3914 <div class="search-dropdown__pill">${elem}</div> 3915 `) 3916 }); 3917 functionArgs.continuations.forEach((elem) => { 3918 $opticianPillsContainer.append(` 3919 <div class="search-dropdown__pill">${elem}</div> 3920 `) 3921 }); 3922 } 3923 } catch (error) { 3924 console.error(error); 3925 } 3926} 3927 3928async function getOpticianProducts(query) { 3929 if (abortController) { 3930 abortController.abort(); 3931 abortController = null; 3932 }; 3933 const url = "/service-api/optician-ai/search"; 3934 let data = {"search_query": query,}; 3935 abortController = new AbortController(); 3936 const signal = abortController.signal; 3937 try { 3938 const response = await fetch(url, { 3939 method: "POST", 3940 body: JSON.stringify(data), 3941 credentials: "include", 3942 headers: { 3943 "Content-Type": "application/json", 3944 "Accept": "application/json", 3945 }, 3946 signal: signal, 3947 }); 3948 const result = await response.json(); 3949 if(result.length) { 3950 $("#optician-count").html(result.length) 3951 $opticianProductsWrapper.html(""); 3952 $opticianProductsCountContainer.show(); 3953 result.forEach((elem, index) => { 3954 if (index < 8) { 3955 let divImageMain = `<img src="/cart/images/${elem.image_url}" class="search-dropdown__product-image--main pb-4">`; 3956 let productPriceFull = Number(elem.price)?.toFixed(2); 3957 let productPriceDiscounted = Number(elem.promo_price)?.toFixed(2); 3958 let divPrice = productPriceDiscounted > 0 ? `<div class="search-dropdown__product-price pt-3"><span class="search-dropdown__product-price--strikethrough">$${productPriceDiscounted}</span> <span class="search-dropdown__product-price--discounted">$${productPriceFull}</span></div>` : `<div class="search-dropdown__product-price pt-3">$${productPriceFull}</div>`; 3959 let readersLabel = ""; 3960 let isReaders = (elem?.accepts_lenses && elem?.product_group === "Glasses") ? true : false; 3961 if (searchReadersType === "progressive-readers" && isReaders && elem?.b_size >= 28) { 3962 readersLabel = "Progressive Readers"; 3963 } else if (searchReadersType === "readers" && isReaders) { 3964 readersLabel = "Readers"; 3965 } else { 3966 readersLabel = ""; 3967 } 3968 $opticianProductsWrapper.append(` 3969 <div class="col-6 col-sm-4 col-lg-3 h-fit-content"> 3970 <a href="${areaHref}glasses${searchReadersType && readersLabel ? "/" + searchReadersType : ""}/${elem.products_sku}/${slugify(elem.name.replace(elem.brand_name, "").trim(), elem.brand_name)}?config=${elem.configuration_id}" class="search-dropdown__product-wrapper"> 3971 ${divImageMain.replace("/cart/images/", "")} 3972 <div class="d-flex flex-column" > 3973 <div class="d-flex flex-wrap gap-1"> 3974 <span class="search-dropdown__product-brand">${elem.brand_name}</span> 3975 <span class="search-dropdown__product-name">${elem.name.replace(elem.brand_name, "").trim()}</span> 3976 </div> 3977 <div class="search-dropdown__product-name">${readersLabel}</div> 3978 ${divPrice} 3979 </div> 3980 </a> 3981 </div> 3982 `); 3983 } else { 3984 remainingOpticianSearchFrames.push(elem); 3985 } 3986 }) 3987 $opticianProductsWrapper.append(` 3988 <div class="d-flex justify-content-center w-100"> 3989 <div class="optician-show-all" id="optician-show-all">See all</div> 3990 </div> 3991 `) 3992 $("#optician-show-all").on("click", addRemainingOpticianSearchFrames); 3993 } 3994 clearInterval(opticianThinkingInterval); 3995 $opticianLoadingDots.hide(); 3996 $("#search-clear").show(); 3997 $opticianThoughtsContainer.find(".optician-icon").show(); 3998 $opticianThoughtsText.html("Here are the best matches. Use the smart filter to refine further"); 3999 try { 4000 dataLayer.push({ 4001 event: "predictive_search", 4002 searchTerm: query, 4003 search_source: "Optician AI" 4004 }); 4005 } catch (error) { 4006 console.log(error, { 4007 event: "predictive_search", 4008 searchTerm: query, 4009 search_source: "Optician AI" 4010 }); 4011 } 4012 } catch (error) { 4013 console.error(error); 4014 } 4015} 4016 4017async function startOpticianSearch(query) { 4018 abortOpticianSearch(); 4019 lastUsedOpticianQuery = query; 4020 if (opticianThinkingInterval) { 4021 clearInterval(opticianThinkingInterval); 4022 } 4023 $opticianLoadingDots.show(); 4024 $("#search-clear").hide(); 4025 $opticianThoughtsContainer.find(".optician-icon").hide(); 4026 $opticianThoughtsText.html("Optician AI is " + opticianThinkingWords[0]); 4027 opticianThinkingInterval = setInterval(() => { 4028 const randomIndex = Math.floor(Math.random() * opticianThinkingWords.length); 4029 $opticianThoughtsText.html("Optician AI is " + opticianThinkingWords[randomIndex]); 4030 }, 3000); 4031 remainingOpticianSearchFrames.length = 0; 4032 opticianLoadingPillsAndProducts(); 4033 await getOpticianSuggestions(query); 4034 opticianPillSearchClickFunctionality(); 4035 await getOpticianProducts(query); 4036} 4037 4038const debouncedStartOpticianSearch = debounceV2((query) => startOpticianSearch(query)); 4039 4040function startOpticianSearchFromPills(query) { 4041 const currentSearch = $("#search-input-1").val().trim(); 4042 if (currentSearch.length) { 4043 $("#search-input-1").val(`${currentSearch} ${query}`); 4044 startOpticianSearch(`${currentSearch} ${query}`); 4045 } else { 4046 $("#search-input-1").val(query); 4047 startOpticianSearch(query); 4048 } 4049} 4050 4051function opticianLoadingPillsAndProducts() { 4052 $opticianPillsContainer.html(""); 4053 let loop = 0; 4054 while (loop++ < 5) { 4055 $opticianPillsContainer.append(` 4056 <div class="search-dropdown__pill search-dropdown__pill--loading"></div> 4057 `); 4058 }; 4059 loop = 0;
4060 $opticianProductsWrapper.html(""); 4061 $opticianProductsContainer.show(); 4062 $opticianProductsCountContainer.hide(); 4063 while (loop++ < 8) { 4064 $opticianProductsWrapper.append(` 4065 <div class="col-6 col-sm-4 col-lg-3 h-fit-content"> 4066 <div class="search-dropdown__product-wrapper loading"> 4067 <div class="search-dropdown__product-loading"></div> 4068 <div class="search-dropdown__product-loading"></div> 4069 <div class="search-dropdown__product-loading"></div> 4070 </div> 4071 </div> 4072 `); 4073 } 4074 loop = 0; 4075} 4076 4077function opticianPillSearchClickFunctionality() { 4078 $("[data-search-optician] .search-dropdown__pill").on("click", function() { 4079 opticianLoadingPillsAndProducts(); 4080 startOpticianSearchFromPills($(this).html()); 4081 }) 4082} 4083opticianPillSearchClickFunctionality(); 4084 4085function clearOpticianSearchInput() { 4086 $("[data-search-optician] .search-dropdown__pills-wrapper").html($initialOpticianSuggestionPills); 4087 $("#search-input-1").val(""); 4088 $("#search-clear").hide(); 4089 searchReadersType = "", trendingReadersLabel = ""; 4090 $opticianProductsContainer.hide(); 4091 $opticianPillsContainer.html($initialOpticianSuggestionPills); 4092 $opticianThoughtsText.html("Describe what you're looking for"); 4093 opticianPillSearchClickFunctionality(); 4094} 4095 4096function addRemainingOpticianSearchFrames() { 4097 remainingOpticianSearchFrames.forEach((elem) => { 4098 let divImageMain = `<img src="/cart/images/${elem.image_url}" class="search-dropdown__product-image--main pb-4">`; 4099 let productPriceFull = Number(elem.price)?.toFixed(2); 4100 let productPriceDiscounted = Number(elem.promo_price)?.toFixed(2); 4101 let divPrice = productPriceDiscounted > 0 ? `<div class="search-dropdown__product-price pt-3"><span class="search-dropdown__product-price--strikethrough">$${productPriceDiscounted}</span> <span class="search-dropdown__product-price--discounted">$${productPriceFull}</span></div>` : `<div class="search-dropdown__product-price pt-3">$${productPriceFull}</div>`; 4102 let readersLabel = ""; 4103 let isReaders = (elem?.accepts_lenses && elem?.product_group === "Glasses") ? true : false; 4104 if (searchReadersType === "progressive-readers" && isReaders && elem?.b_size >= 28) { 4105 readersLabel = "Progressive Readers"; 4106 } else if (searchReadersType === "readers" && isReaders) { 4107 readersLabel = "Readers"; 4108 } else { 4109 readersLabel = ""; 4110 } 4111 $opticianProductsWrapper.append(` 4112 <div class="col-6 col-sm-4 col-lg-3 h-fit-content"> 4113 <a href="${areaHref}glasses${searchReadersType && readersLabel ? "/" + searchReadersType : ""}/${elem.products_sku}/${slugify(elem.name, elem.brand_name)}?config=${elem.configuration_id}" class="search-dropdown__product-wrapper"> 4114 ${divImageMain.replace("/cart/images/", "")} 4115 <div class="d-flex flex-column" > 4116 <div class="d-flex flex-wrap gap-1"> 4117 <span class="search-dropdown__product-brand">${elem.brand_name}</span> 4118 <span class="search-dropdown__product-name">${elem.name}</span> 4119 </div> 4120 <div class="search-dropdown__product-name">${readersLabel}</div> 4121 ${divPrice} 4122 </div> 4123 </a> 4124 </div> 4125 `); 4126 }) 4127 $("#optician-show-all").hide(); 4128} 4129 4130 function sidecartApplyCoupon(coupon) { 4131 $.ajax({ 4132 url: `/api/side-cart/add_coupon?code=${coupon}`, 4133 method: "GET", 4134 success: function(response) { 4135 let couponApplied = response.success; 4136 let cartData = response.metadata.side_cart; 4137 let couponMessage = couponApplied ? response.data.coupon.coupon_msg : response.error; 4138 let subtotalFull = (cartData.totals.subtotal).toFixed(2); 4139 let subtotalDiscounted = (cartData.totals.subtotal - cartData.totals.discount).toFixed(2); 4140 let cartItems = cartData.items; 4141 4142 if (!couponApplied) { 4143 $(".header-dropdown__coupon-message").html(` 4144 <div class="header-dropdown__coupon-message--invalid"> 4145 <img src="/cart/images/shared/icons/exclamation-mark-circled-red.svg">${couponMessage} 4146 </div> 4147 `); 4148 $("#subtotal-discounted").hide(); 4149 $("#subtotal-full").attr("data-subtotal-full", "true"); 4150 } else { 4151 $(".header-dropdown__coupon-message").html(`
4152 <div class="header-dropdown__coupon-message--valid"> 4153 <img src="/cart/images/shared/icons/checkmark-green.svg">${couponMessage} 4154 </div> 4155 `); 4156 $("#subtotal-discounted").show(); 4157 $("#subtotal-full").attr("data-subtotal-full", "false"); 4158 } 4159 4160 $("#subtotal-full").html(`$${subtotalFull}`); 4161 $("#subtotal-discounted").html(`$${subtotalDiscounted}`); 4162 getCustomerInfo(); 4163 }, 4164 error: function(xhr, status, error) { 4165 // Handle the error 4166 }, 4167 beforeSend: function() { 4168 $(".header-dropdown__coupon-message").html(`<div class="loading-dots" style="height: 20px; "> 4169 <span></span> 4170 <span></span> 4171 <span></span> 4172 <span></span> 4173 </div>`); 4174 }, 4175 }) 4176 } 4177 4178 function getLocalFavorites() { 4179 favoriteItems = JSON.parse(localStorage.getItem("favItemsNew")) ? JSON.parse(localStorage.getItem("favItemsNew")) : ""; 4180 } 4181 4182 const slugify = (str, brand = '') => { 4183 const clean = (s) => 4184 s 4185 ?.toString() 4186 .normalize('NFKD') 4187 .replace(/[\u0300-\u036f]/g, '') 4188 .toLowerCase() 4189 .trim() 4190 .replace(/\blift-off\S*\b/gi, "lift-off") 4191 .replace(/\bkar\S*n\b/gi, (match) => match !== 'karlsson' ? 'karun' : match) 4192 .replace(/\/|\\|\s+|-+/g, '-') 4193 .replace(/[^a-z0-9\s-]/g, '') 4194 .replace(/^-|-$/g, '') 4195 .replace(/\bpumalan\b/ig, "pumalin") 4196 .replace(/aa14/ig, "u"); 4197 4198 const stripKits = (slug) => { 4199 if (slug !== 'kits-x-vasuma' && slug !== 'kits-x-vasuma-karlsson') { 4200 return (slug || '') 4201 .split('-') 4202 .filter((seg) => seg !== 'kits') 4203 .join('-'); 4204 } 4205 } 4206 4207 const nameSlug = stripKits(clean(str)); 4208 const brandSlug = stripKits(clean(brand)); 4209 4210 if (!brandSlug) return nameSlug;
4211 if (!nameSlug) return brandSlug; 4212 4213 const hasBrand = new RegExp(`(^|-)${brandSlug}(-|$)`).test(nameSlug); 4214 4215 return hasBrand ? nameSlug : `${brandSlug}-${nameSlug}`; 4216 }; 4217 4218 function getFavorites() { 4219 getLocalFavorites(); 4220 $("#dropdown-favorites-count, #header-favorites-count").html(favoriteItems.length); 4221 $("#favorites-list").html(""); 4222 if (favoriteItems.length > 0) { 4223 favoriteItems.forEach((elem) => { 4224 $(`[data-dropdown-type="favorites"]`).css({"max-width": "480px"}); 4225 let divItemImage = `<img src="/cart/images/${elem.product_image_url}">`; 4226 let divItemPrice = ""; 4227 let readersType = elem.readersType === "readers" ? " Readers" : elem.readersType === "progressive-readers" ? " Progressive Readers" : ""; 4228 if (elem.product_promo_price) { 4229 divItemPrice = `<div class="header-dropdown__product-price">$${((elem.product_price * elem.quantity) + elem.lens_price) - elem.discount_price}</div>`; 4230 } else { 4231 divItemPrice = `<div class="header-dropdown__product-price">$${elem.product_price}</div>`; 4232 } 4233 $("#favorites-list").append(`<div class="px-0 py-2 col-12 header-dropdown__product-wrapper"> 4234 <a href="${areaHref}glasses${elem.readersType ? "/" + elem.readersType : ""}/${elem.product_sku}/${slugify(elem.product_name.replaceAll(elem.brand_name, ""), elem.brand_name)}?config=${elem.product_config_id}" class="px-0 col-11 d-flex align-items-center"> 4235 <div class="px-0 col-5 col-sm-4"> 4236 ${divItemImage.replace("/cart/images/", "")} 4237 </div> 4238 <div class="col-7 col-sm-8"> 4239 <div class="header-dropdown__product-brand">${elem.brand_name}</div> 4240 <div class="header-dropdown__product-name">${elem.product_name}</div> 4241 <div class="header-dropdown__product-name">${readersType}</div> 4242 <div class="header-dropdown__product-price">$${elem.product_price}</div> 4243 </div> 4244 </a> 4245 <div class="px-0 col-1 pt-2 align-self-start"> 4246 <div class="header-dropdown__clear-item text-right" data-config-id="${elem.product_config_id}"><img src="/cart/images/shared/icons/trashcan-grey.svg" height="24"></div> 4247 </div> 4248 </div>`) 4249 }) 4250 $("#favorites-list .header-dropdown__clear-item").on("click", function() { 4251 removeFavoriteItems($(this).attr("data-config-id").toString()); 4252 }) 4253 $("#header-favorites-count").css("display", "flex"); 4254 4255 $("#favorites-list").append(`<div class="col-12 px-0 py-3"><a href="${areaHref}favorites" class="header-dropdown__button header-dropdown__button--black">View my favourites</a></div>`); 4256 4257 } else { 4258 $(`[data-dropdown-type="favorites"]`).css({"max-width": "320px"}); 4259 if (isLoggedIn) { 4260 $("#favorites-list").html(` 4261 4262 <div class="header-dropdown__favorites-empty">Your favourites list is empty. 4263 4264 <div class="col-12 px-0 py-3"> 4265 <a href="${areaHref}glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="header-dropdown__button header-dropdown__button--black">Shop bestsellers</a> 4266 </div> 4267 </div> 4268 `); 4269 } else { 4270 $("#favorites-list").html(` 4271 4272 <div class="header-dropdown__favorites-empty">Start adding items to your Favourites list and keep them all in one place. 4273 4274 <div class="col-12 px-0 py-3"> 4275 <a href="${areaHref}login" class="mb-3 header-dropdown__button header-dropdown__button--black">Sign in</a> 4276 <a href="${areaHref}new_account" class="mb-3 header-dropdown__button header-dropdown__button--w
4276hite">Register</a> 4277 </div> 4278 <div class="col-12 px-0 mb-1 header-dropdown__account-category">Trending products</div> 4279 <a href="${areaHref}autoship" class="col-12 px-0 mb-1 header-dropdown__cta" header-autoship>Subscribe & Save</a> 4280 4281 </div> 4282 `); 4283 } 4284 } 4285 } 4286 4287 function removeFavoriteItems(thisConfig) { 4288 const removedFavoriteItem = favoriteItems.filter(item => item.product_config_id === thisConfig)[0]; 4289 favoriteItems = favoriteItems.filter(item => item.product_config_id != thisConfig); 4290 try { 4291 dataLayer.push({ 4292 event: "remove_fav", 4293 data: removedFavoriteItem, 4294 }); 4295 } catch (error) { 4296 console.log(error, { 4297 event: "remove_fav", 4298 data: removedFavoriteItem, 4299 }); 4300 } 4301 localStorage.setItem("favItemsNew", JSON.stringify(favoriteItems)); 4302 window.dispatchEvent(new CustomEvent('favorites:updated', { detail: favoriteItems })); 4303 getFavorites(); 4304 } 4305 4306 window.addEventListener("favorites:updated", (event) => { 4307 setTimeout(() => { 4308 const favorites = event.detail; 4309 $("#dropdown-favorites-count, #header-favorites-count").html(favorites.length); 4310 if (favorites.length >= 1) { 4311 $("#header-favorites-count").css("display", "flex"); 4312 } else { 4313 $("#header-favorites-count").hide(); 4314 } 4315 }, 200); 4316 }); 4317 4318 function removeCartItems(thisIndex) { 4319 $.ajax({ 4320 url: `/api/side-cart/delete?index=${thisIndex}`, 4321 method: "GET", 4322 success: function(response) { 4323 let customerData = response.metadata; 4324 let freeShipMessage = customerData.shipping_status; 4325 let couponAdded = customerData.side_cart.discounts.coupon.added; 4326 let cartItems = customerData.side_cart.items; 4327 let subtotalFull = (customerData.side_cart.totals.subtotal).toFixed(2); 4328 let subtotalDiscounted = (customerData.side_cart.totals.subtotal - customerData.side_cart.totals.discount).toFixed(2); 4329 let monetateProductsArray = []; 4330 4331 $("#cart-items").html(""); 4332 $("#header-free-ship-message").html(`${freeShipMessage}`); 4333 if (cartItems.length > 0) { 4334 $(`[data-dropdown-type="cart"]`).css({"max-width": "480px"}); 4335 $(".header-dropdown__free-shipping-stripe").css({display: "flex"}); 4336 cartItems.forEach((elem) => { 4337 let itemFullPrice = elem.product_price.toFixed(2); 4338 let itemDiscountedPrice = elem.discount_price <= 0.01 ? '0.00' : elem.discount_price.toFixed(2); 4339 let itemQuantity = elem.quantity; 4340 let itemFullPriceWithQuantity = (elem.product_price * elem.quantity).toFixed(2); 4341 let itemDiscountedPriceWithQuantity = (elem.discount_price * elem.quantity).toFixed(2); 4342 let itemGlassesType = elem.glasses_type === "readers" ? " Readers" : elem.glasses_type === "progressive-readers" ? " Progressive Readers" : ""; 4343 let divItemImage = `<img src="/cart/images/${elem.image}">`; 4344 let divItemPrice = ""; 4345 let divItemGlassesType = itemGlassesType ? `<div class="header-dropdown__product-name">${itemGlassesType}</div>` : ""; 4346 let itemName = elem.name.replace(elem.brand, ""); 4347 if (elem.discount_price) { 4348 divItemPrice = `<div class="header-dropdown__product-price"><span class="header-dropdown__product-price--strikethrough">$${itemFullPrice} x ${itemQuantity}</span> <span class="header-dropdown__product-price--discounted">$${itemDiscountedPrice} x ${itemQuantity}</span></div>`; 4349 } else { 4350 divItemPrice = `<div class="header-dropdown__product-price">$${itemFullPrice} x ${itemQuantity}</div>`; 4351 } 4352 $("#cart-items").append(`<div class="px-0 py-2 col-12 header-dropdown__product-wrapper"> 4353 <div class="px-0 col-11 d-flex align-items-center"> 4354 <a href="${elem.glasses_type ? elem.link.replace("glasses", "glasses/" + elem.glasses_type) : elem.link}" class="px-0 col-5 col-sm-4"> 4355 ${divItemImage.replace("/cart/images/", "")} 4356 </a> 4357 <div class="col-7 col-sm-8"> 4358 <div class="header-dropdown__product-brand">${elem.brand}</div> 4359 <div class="header-dropdown__product-name">${itemName}</div> 4360 ${divItemGlassesType} 4361 ${divItemPrice} 4362 </div> 4363 </div> 4364 <div class="px-0 col-1 pt-2 align-self-start"> 4365 <div class="header-dropdown__clear-item text-right" data-index="${elem.mv_ip}">
4365<img src="/cart/images/shared/icons/trashcan-grey.svg" height="24"></div> 4366 </div> 4367 </div>`); 4368 4369 monetateProductsArray.push({ 4370 productId: elem.code.toString(), 4371 quantity: elem.quantity.toString(), 4372 unitPrice: elem.product_price.toString(), 4373 sku: elem.code.toString(), 4374 currency: "CAD", 4375 }) 4376 }) 4377 4378 try { 4379 window.monetateQ = window.monetateQ || []; 4380 window.monetateQ.push(['addCartRows', monetateProductsArray]); 4381 window.monetateQ.push(['trackData']); 4382 console.log('Monetate sent', ['addCartRows', monetateProductsArray]); 4383 } catch (error) { 4384 console.log('An error occurred when sending Monetate event'); 4385 } 4386 4387 $("#cart-items .header-dropdown__clear-item").on("click", function() { 4388 removeCartItems($(this).attr("data-index")); 4389 }) 4390 $("#header-cart-count").css("display", "flex"); 4391 $(".header-dropdown__cart-options").show(); 4392 } else { 4393 $(`.header__dropdown[data-dropdown-type="cart"]`).css("height", ""); 4394 $(`[data-dropdown-type="cart"]`).css({"max-width": "320px"}); 4395 $(".header-dropdown__free-shipping-stripe").hide(); 4396 if (isLoggedIn) { 4397 $("#cart-items").append(`<div class="header-dropdown__cart-empty">Your bag is empty. 4398 <div class="col-12 px-0 my-3"> 4399 <a href="${areaHref}glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="header-dropdown__button header-dropdown__button--black">Shop bestsellers</a> 4400 </div> 4401 </div>`) 4402 } else { 4403 $("#cart-items").append(`<div class="header-dropdown__cart-empty">Sign in to see items you may have previously added. 4404 <div class="col-12 px-0 py-3"> 4405 <a href="${areaHref}login" class="mb-3 header-dropdown__button header-dropdown__button--black">Sign in</a> 4406 <a href="${areaHref}new_account" class="mb-3 header-dropdown__button header-dropdown__button--w
4406hite">Register</a> 4407 </div> 4408 <div class="col-12 px-0 mb-1 header-dropdown__account-category">Trending products</div> 4409 <a href="${areaHref}autoship" class="col-12 px-0 mb-1 header-dropdown__cta" header-autoship>Subscribe & Save</a> 4410 4411 </div>`) 4412 } 4413 $(".header-dropdown__cart-options").hide(); 4414 } 4415 4416 if (couponAdded) { 4417 $("#subtotal-discounted").show(); 4418 $("#subtotal-full").attr("data-subtotal-full", "false"); 4419 } else { 4420 $("#subtotal-discounted").hide(); 4421 $("#subtotal-full").attr("data-subtotal-full", "true"); 4422 } 4423 $("#subtotal-full").html(`$${subtotalFull}`); 4424 $("#subtotal-discounted").html(`$${subtotalDiscounted}`); 4425 $("#header-cart-count, #dropdown-cart-count").html(cartItems.length); 4426 }, 4427 error: function(xhr, status, error) { 4428 /// Handle the error 4429 }, 4430 }) 4431 } 4432 4433 function getContactsDiscounts(environment) { 4434 $.ajax({ 4435 4436 url: "/api/products/listing_discounts?website=contactsexpress.ca", 4437 4438 4439 type: "GET", 4440 success: function(response) { 4441 generalOffer = response.contacts_discounts.environment[environment].general; 4442 specialOffer = response.contacts_discounts.environment[environment].special; 4443 }, 4444 beforeSend: function() { 4445 // Loading... 4446 }, 4447 error: function(xhr, status, error) { 4448 // Handle the Error 4449 } 4450 }) 4451 } 4452 4453 function getCustomerInfo() { 4454 return $.ajax({ 4455 url: "/api/generic/metadata", 4456 method: "GET", 4457 }).then((response) => { 4458 isLoggedIn = response.data.is_logged_in; 4459 let customerData = response.data; 4460 let freeShipThreshold = customerData.free_shipping_threshold; 4461 let hasAutoship = customerData.autoship_status; 4462 let hasKitsPlus = customerData.kits_membership.has_membership; 4463 let lastPurchased = customerData.user.last_purchase; 4464 let cartItems = customerData.side_cart.items; 4465 let couponAdded = customerData.side_cart.discounts.coupon.added; 4466 let couponCode = customerData.side_cart.discounts.coupon.coupon_code; 4467 let couponMessage = couponAdded ? customerData.side_cart.discounts.coupon.coupon_msg : undefined; 4468 let subtotalFull = (customerData.side_cart.totals.subtotal).toFixed(2); 4469 let subtotalDiscounted = (customerData.side_cart.totals.subtotal - customerData.side_cart.totals.discount).toFixed(2); 4470 4471 if (isLoggedIn) { 4472 $(".logged_in").show(); 4473 $(".logged_out").hide(); 4474 } else { 4475 $(".logged_in").hide(); 4476 $(".logged_out").show(); 4477 } 4478 $(".account-name").html(customerData.user.fname); 4479 if (hasAutoship) { 4480 $("[header-autoship]").append(enrolledPill); 4481 } 4482 if (hasKitsPlus) { 4483 $("[header-kits-plus]").append(enrolledPill); 4484 } 4485 if (lastPurchased) { 4486 $(`[data-tshirt-size="${lastPurchased}"]`).append(lastPurchasedPill); 4487 } 4488 if (couponAdded) { 4489 if (couponCode?.toLowerCase().includes('autoship')) { 4490 $("#header-coupon-input").val(''); 4491 } else { 4492 $("#header-coupon-input").val(couponCode); 4493 } 4494 $(".header-dropdown__coupon-message").show().html(` 4495 <div class="header-dropdown__coupon-message--valid"> 4496 <img src="/cart/images/shared/icons/checkmark-green.svg">${couponMessage} 4497 </div> 4498 `); 4499 } 4500 $("#cart-items").html(""); 4501 if (cartItems.length > 0) { 4502 $(`[data-dropdown-type="cart"]`).css({"max-width": "480px"}); 4503 $(".header-dropdown__free-shipping-stripe").css({display: "flex"}); 4504 cartItems.forEach((elem) => { 4505 let itemFullPrice = elem.product_price.toFixed(2); 4506 let itemDiscountedPrice = elem.discount_price <= 0.01 ? '0.00' : elem.discount_price.toFixed(2); 4507 let itemQuantity = elem.quantity; 4508 let itemFullPriceWithQuantity = (elem.product_price * elem.quantity).toFixed(2); 4509 let itemDiscountedPriceWithQuantity = (elem.discount_price * elem.quantity).toFixed(2); 4510 let itemGlassesType = elem.glasses_type === "readers" ? " Readers" : elem.glasses_type === "progressive-readers" ? " Progressive Readers" : ""; 4511 let divItemImage = `<img src="/cart/images/${elem.image}">`; 4512 let divItemPrice = ""; 4513 let divItemGlassesType = itemGlassesType ? `<div class="header-dropdown__product-name">${itemGlassesType}</div>` : ""; 4514 let itemName = elem.name.replace(elem.brand, ""); 4515 if (elem.discount_price) { 4516 divItemPrice = `<div class="header-dropdown__product-price"><span class="header-dropdown__product-price--strikethrough">$${itemFullPrice} x ${itemQuantity}</span> <span class="header-dropdown__product-price--discounted">$${itemDiscountedPrice} x ${itemQuantity}</span></div>`; 4517 } else { 4518 divItemPrice = `<div class="header-dropdown__product-price">$${itemFullPrice} x ${itemQuantity}</div>`; 4519 }
4520 $("#cart-items").append(`<div class="px-0 py-2 col-12 header-dropdown__product-wrapper"> 4521 <div class="px-0 col-11 d-flex align-items-center"> 4522 <a href="${elem.glasses_type ? elem.link.replace("glasses", "glasses/" + elem.glasses_type) : elem.link}" class="px-0 col-5 col-sm-4"> 4523 ${divItemImage.replace("/cart/images/", "")} 4524 </a> 4525 <div class="col-7 col-sm-8"> 4526 <div class="header-dropdown__product-brand">${elem.brand}</div> 4527 <div class="header-dropdown__product-name">${itemName}</div> 4528 ${divItemGlassesType} 4529 ${divItemPrice} 4530 </div> 4531 </div> 4532 <div class="px-0 col-1 pt-2 align-self-start"> 4533 <div class="header-dropdown__clear-item text-right" data-index="${elem.mv_ip}"><img src="/cart/images/shared/icons/trashcan-grey.svg" height="24"></div> 4534 </div> 4535 </div>`); 4536 }) 4537 $(".header-dropdown__clear-item").on("click", function() { 4538 removeCartItems($(this).attr("data-index")); 4539 }) 4540 $("#header-cart-count").css("display", "flex"); 4541 $(".header-dropdown__cart-options").show(); 4542 $(`.header__dropdown[data-dropdown-type="cart"]`).css("height", "100vh"); 4543 } else { 4544 $(`[data-dropdown-type="cart"]`).css({"max-width": "320px"}); 4545 $(".header-dropdown__free-shipping-stripe").hide(); 4546 if (isLoggedIn) { 4547 $("#cart-items").append(`<div class="header-dropdown__cart-empty">Your bag is empty. 4548 <div class="col-12 px-0 my-3"> 4549 <a href="${areaHref}glasses?filters=%26filter=collections_name_uFilter:+Popular&product_type=Glasses" class="header-dropdown__button header-dropdown__button--black">Shop bestsellers</a> 4550 </div> 4551 </div>`) 4552 } else { 4553 $("#cart-items").append(`<div class="header-dropdown__cart-empty">Sign in to see items you may have previously added. 4554 <div class="col-12 px-0 py-3"> 4555 <a href="${areaHref}login" class="mb-3 header-dropdown__button header-dropdown__button--black">Sign in</a> 4556 <a href="${areaHref}new_account" class="mb-3 header-dropdown__button header-dropdown__button--w
4556hite">Register</a> 4557 </div> 4558 <div class="col-12 px-0 mb-1 header-dropdown__account-category">Trending products</div> 4559 <a href="${areaHref}autoship" class="col-12 px-0 mb-1 header-dropdown__cta" header-autoship>Subscribe & Save</a> 4560 4561 </div>`) 4562 } 4563 } 4564 if (couponAdded) { 4565 $("#subtotal-discounted").show(); 4566 $("#subtotal-full").attr("data-subtotal-full", "false"); 4567 } else { 4568 $("#subtotal-discounted").hide(); 4569 $("#subtotal-full").attr("data-subtotal-full", "true"); 4570 } 4571 $("#subtotal-full").html(`$${subtotalFull}`); 4572 $("#subtotal-discounted").html(`$${subtotalDiscounted}`); 4573 $("#header-cart-count, #dropdown-cart-count").html(cartItems.length); 4574 $("#header-free-ship-message").html(response.data.shipping_status); 4575 4576 return true; 4577 }) 4578 } 4579 4580 async function getDesignerBrands() { 4581 const url = "/api/products/glasses/brands"; 4582 try { 4583 $(".header-mobile__designer-brands--options").html(""); 4584 $(".header-mobile__designer-brands--initials").html(`<div class="loading-dots"> 4585 <span></span> 4586 <span></span> 4587 <span></span> 4588 <span></span> 4589 </div>`); 4590 const response = await fetch(url); 4591 const result = await response.json(); 4592 if(result.data) { 4593 $(".header-mobile__designer-brands--count").html(`(${result.data.brands.length})`); 4594 $(".header-mobile__designer-brands--initials").html(""); 4595 const sortedBrands = result.data.brands.sort(); 4596 const brandsInitials = sortedBrands.map(elem => elem[0]).filter((elem, i, array) => elem !== undefined ? array.indexOf(elem) === i : ""); 4597 brandsInitials.forEach((initial) => { 4598 $(".header-mobile__designer-brands--initials").append(`<a href="#${initial}-brands">${initial}</a>`); 4599 }); 4600 $(".header-mobile__designer-brands--initials a").on("click", (event) => { 4601 event.preventDefault(); 4602 let $targetID = $(event.target).attr("href"); 4603 const $container = $(".header__dropdown[dropdown][data-dropdown-type='hamburger']")[0]; 4604 $container.scrollTo({ 4605 top: $($targetID)[0].offsetTop, 4606 behavior: "smooth", 4607 }); 4608 }); 4609 brandsInitials.forEach((initial) => { 4610 $(".header-mobile__designer-brands--options").append(`<a id="${initial}-brands" class="brand-initial__heading">${initial}</a>`); 4611 sortedBrands.forEach((brand) => { 4612 if (brand[0] === initial) { 4613 let brandName = brand 4614 .replace(/^(Kar).*n$/i, "Kar%25C3%25BCn") 4615 .replace(/priv.*rev.*/i, "Priv%25C3%25A9%2520Revaux") 4616 .replace(/\s+/ig, "+"); 4617 $(".header-mobile__designer-brands--options").append(`<a href="${areaHref}glasses?filters=%26filter=brand_name_uFilter:+${brandName}&product_type=Glasses,Sunglasses" class="header-dropdown__item">${brand}</a>`); 4618 } 4619 }) 4620 }) 4621 } 4622 } catch (error) { 4623 console.log(error.message); 4624 } 4625 } 4626 4627 function getTrendingProducts(readersType, readersLabel) { 4628 let localCheck = window.location.href; 4629 if (!localCheck.includes('.camp.')) { 4630 kitsUSAPI = 'https://search.unbxd.io/fa194145848a3180eb26f41f4a855e05/ss-unbxd-gcp-kits-com-prod16621689373955/'; 4631 kitsCAAPI = 'https://search.unbxd.io/7615ffb6e3e55bd1e0878257222a6eba/ss-unbxd-gcp-kits-ca-prod16621689373059/'; 4632 contactsexpressAPI = 'https://search.unbxd.io/e268fcf0345cfee4ff9e9d09c1b78a8e/ss-unbxd-gcp-contactsexpress-ca-prod16621689373366/'; 4633 opticontactsAPI = 'https://search.unbxd.io/e011aa641d247fc0da0dfe7e243c931a/ss-unbxd-gcp-opticontacts-prod16621689373264/'; 4634 postalcontactsAPI = 'https://search.unbxd.io/f9ee220008a18dcf64b29195adeae481/ss-unbxd-gcp-postalcontacts-prod16621689373314/'; 4635 } else { 4636 kitsUSAPI = 'https://search.unbxd.io/864d1797bfd230ef72d5cfdde5868364/ss-unbxd-gcp-kits-com-stage16621684171061/'; 4637 kitsCAAPI = 'https://search.unbxd.io/0f58cac691ea94fdd83d50440eb950c6/ss-unbxd-gcp-kits-ca-stage16621696961026/'; 4638 contactsexpressAPI = 'https://search.unbxd.io/c7c85f54618539555be1ca0f5402aad9/ss-unbxd-gcp-contactsexpress-ca-stage16621696961318/'; 4639 opticontactsAPI = 'https://search.unbxd.io/29e04e532beaf1fe1047d95a8deb51cd/ss-unbxd-gcp-opticontacts-stage16621696961246/'; 4640 postalcontactsAPI = 'https://search.unbxd.io/caa77561c61341ce1a520350046a16fe/ss-unbxd-gcp-postalcontacts-stage16621696963125/'; 4641 } 4642 let data = { 4643 version: 'V2', 4644 'popularProducts.count': '500', 4645 'variants.relevant': true, 4646 'keywordSuggestions.count': '10', 4647 'topQueries.count': '10', 4648 }; 4649 $.ajax({ 4650 4651 data: data, 4652 url: `${contactsexpressAPI}category?p=product_group:%22Contact%20Lenses%22&pagetype=boolean&rows=300&fields=products_sku,product_group,price,brand_name,name,relevantDocument,collections_name,imageUrl,sort_order,price_1r&facet.multiselect:true&version=V2`, 4653 4654 4655 method: "GET", 4656 success: function(response) { 4657 4658 let searchItems = response.response.products; 4659 $("[data-search-trending] .search-dropdown__products-list, [data-search-no-results] .search-dropdown__products-list").html("");
4660 searchItems.forEach((elem, index) => { 4661 if (index < 8) { 4662 let productPriceFull = elem.price.toFixed(2); 4663 let productPriceDiscounted; 4664 let oneRPrice = Number(elem?.price_1r).toFixed(2); 4665 specialOffer.forEach((coupon) => { 4666 if (coupon.active && coupon.group.split(", ").filter(el => {return el === elem.products_sku || el === elem.brand_name}).join()) { 4667 productPriceDiscounted = (elem.price * ((100 - coupon.discount_percentage) / 100)).toFixed(2); 4668 } 4669 }) 4670 if (!productPriceDiscounted) { 4671 productPriceDiscounted = (elem.price * ((100 - generalOffer.discount_percentage) / 100)).toFixed(2); 4672 } 4673 4674 4675 if(norders_1r >= 1){ 4676 if(productPriceFull == oneRPrice){ 4677 productPriceDiscounted = null; 4678 } 4679 else{ 4680 productPriceDiscounted = oneRPrice 4681 } 4682 } 4683 4684 let divImageMain = `<img src="/cart/images/${elem.imageUrl}" class="search-dropdown__product-image--main pb-4">`; 4685 let divPrice = productPriceDiscounted ? `<div class="search-dropdown__product-price pt-3"><span class="search-dropdown__product-price--strikethrough">$${productPriceFull}</span> <span class="search-dropdown__product-price--discounted">$${productPriceDiscounted}</span></div>` : `<div class="search-dropdown__product-price pt-3">$${productPriceFull}</div>`; 4686 $("[data-search-trending] .search-dropdown__products-list, [data-search-no-results] .search-dropdown__products-list").append(`<div class="col-6 col-sm-4 col-lg-3 pb-3 h-fit-content"> 4687 <a href="${areaHref}contact_lenses/${elem.products_sku}/${slugify(elem.name)}" class="search-dropdown__product-wrapper"> 4688 ${divImageMain.replace("/cart/images/", "")} 4689 <div class="d-flex flex-wrap gap-1"> 4690 <div class="search-dropdown__product-brand">${elem.brand_name}</div> 4691 <div class="search-dropdown__product-name">${elem.name}</div> 4692 </div> 4693 ${divPrice} 4694 </a> 4695 </div>`); 4696 } 4697 }) 4698 4699 }, 4700 beforeSend: function() { 4701 $(".search-dropdown__products-container:not([data-search-no-results])").show(); 4702 $("[data-search-trending] .search-dropdown__products-list").html(`<div class="loading-dots"> 4703 <span></span> 4704 <span></span> 4705 <span></span> 4706 <span></span> 4707 </div>`); 4708 }, 4709 error: function(xhr, status, error) { 4710 // Handle the error. 4711 } 4712 }) 4713 } 4714 4715 async function getSiteStripes() { 4716 const url = "/api/offers/site-stripe"; 4717 try { 4718 const response = await fetch(url); 4719 const result = await response.json(); 4720 if(result.data){ 4721 result.data.forEach( 4722 elem => { 4723 if ( 4724 Number(elem.enabled) && ( 4725 (elem.offer_type === 'contacts' && elem.environment === environmentContacts) || 4726 (elem.offer_type === 'glasses' && elem.environment === environmentGlasses) 4727 ) 4728 ) { 4729 siteStripesArray.push(elem); 4730 } 4731 } 4732 ) 4733 populateSiteStripes(siteStripesArray, stripesSwiper); 4734 SEMICOLON.initialize.lightbox(); 4735 } 4736 } catch (error) { 4737 console.log(error.message); 4738 } 4739 } 4740 4741 function populateSiteStripes(array, swiper) { 4742 array.forEach((elem, index) => { 4743 swiper.addSlide(index, ` 4744 <div class="swiper-slide"> 4745 <div class="stripe__promo d-flex"> 4746 ${ 4747 elem.content_href 4748 ? ` 4749 <a href="${areaHref + elem.content_href}" class="d-flex align-items-center justify-content-center flex-wrap"> 4750 <span> 4751 ${elem.content} 4752 </span> 4753 ${ 4754 elem.shop_cta 4755 ? `<span class="stripe__shop-now d-none d-lg-block">${elem.shop_cta}</span>` 4756 : '' 4757 } 4758 ${ 4759 elem.terms_cta 4760 ? ( 4761 elem.terms_target 4762 ? `<a class="stripe__conditions" href="#${elem.terms_target}" data-lightbox="inline">${elem.terms_cta}</a>` 4763 : elem.terms_href 4764 ? `<a class="stripe__conditions" href="${areaHref + elem.terms_href}">${elem.terms_cta}</a>` 4765 : '' 4766 ) 4767 : '' 4768 } 4769 </a> 4770 ` 4771 : ` 4772 <div class="d-flex align-items-center justify-content-center flex-wrap"> 4773 <span> 4774 ${elem.content} 4775 </span> 4776 ${ 4777 elem.shop_cta && elem.shop_href 4778 ? `<a href="${areaHref + elem.shop_href}" class="stripe__shop-now d-none d-lg-block">${elem.shop_cta}</a>` 4779 : elem.shop_cta 4780 ? `<span class="stripe__shop-now d-none d-lg-block">${elem.shop_cta}</span>` 4781 : '' 4782 } 4783 ${ 4784 elem.terms_cta 4785 ? ( 4786 elem.terms_target 4787 ? `<a class="stripe__conditions" href="#${elem.terms_target}" data-lightbox="inline">${elem.terms_cta}</a>` 4788 : elem.terms_href 4789 ? `<a class="stripe__conditions" href="${areaHref + elem.terms_href}">${elem.terms_cta}</a>` 4790 : '' 4791 ) 4792 : '' 4793 } 4794 </div> 4795 ` 4796 } 4797 </div>
4798 </div> 4799 `); 4800 }); 4801 swiper.update() 4802 swiper.slideTo(0, 0); 4803 } 4804 4805 //check which env. 4806 if (norders_contacts === "1" && norders_contacts_pla === "0") { 4807 environmentContacts = "first_contacts_reorder"; 4808 } 4809 else if (norders_1r >= 1) { 4810 environmentContacts = "first_pla_reorder"; 4811 } 4812 else if (norders_contacts >= 1) { 4813 environmentContacts = "repeat"; 4814 } 4815 else { 4816 environmentContacts = "new"; 4817 } 4818 4819 if (norders_glasses >= 1) { 4820 environmentGlasses = "repeat"; 4821 } 4822 else { 4823 environmentGlasses = "new"; 4824 } 4825$(document).ready(function() { 4826 4827 if (norders < 1 || norders === undefined) { 4828 $(".new_contacts_glasses").show(); 4829 } 4830 4831 // Contacts 4832 if (norders_contacts === "1" && norders_contacts_pla === "0") { 4833 $(".new_contacts, .repeat_contacts, .first_pla_reorder").hide(); 4834 $(".first_contacts_reorder").show(); 4835 try { 4836 dataLayer.push({ 4837 event: 'returning_contacts_session', 4838 }); 4839 } catch (error) { 4840 console.log(error); 4841 } 4842 } else if (norders_1r >= 1) { 4843 $(".new_contacts, .repeat_contacts, .first_contacts_reorder").hide(); 4844 $(".first_pla_reorder").show(); 4845 try { 4846 dataLayer.push({ 4847 event: 'returning_contacts_session', 4848 }); 4849 } catch (error) { 4850 console.log(error); 4851 } 4852 } else if (norders_contacts >= 1) { 4853 $(".new_contacts, .first_contacts_reorder, .first_pla_reorder").hide(); 4854 $(".repeat_contacts").show(); 4855 try { 4856 dataLayer.push({ 4857 event: 'returning_contacts_session', 4858 }); 4859 } catch (error) { 4860 console.log(error); 4861 } 4862 } else { 4863 $(".first_contacts_reorder, .first_pla_reorder, .repeat_contacts").hide(); 4864 $(".new_contacts").show(); 4865 } 4866 // Glasses 4867 if (norders_glasses >= 1) { 4868 $(".new_glasses").hide(); 4869 $(".repeat_glasses").show(); 4870 try { 4871 dataLayer.push({ 4872 event: 'returning_glasses_session', 4873 }); 4874 } catch (error) { 4875 console.log(error); 4876 } 4877 } else { 4878 $(".repeat_glasses").hide(); 4879 $(".new_glasses").show(); 4880 } 4881 4882 4883 4884 if (window.location.href.indexOf("/checkout2") === -1 && window.location.href.indexOf("/process") === -1) { 4885 getCustomerInfo().then((response) => { 4886 // console.log(response); 4887 getFavorites(); 4888 }); 4889 } else { 4890 $(`.header__utility[data-dropdown-type="cart"], .header__utility[data-dropdown-type="account"]`).hide(); 4891 } 4892 4893 // siteStripes.setStripesInterval(); 4894 4895 $("#header-cart-count, #dropdown-cart-count").html(nitems ? nitems : 0); 4896 4897 $('.button-veero-eyefit').click(function() { 4898 EyeSize.launch(eyeSizeConfig) 4899 }); 4900 4901 // siteStripes.showStripe(); 4902 // $(".stripe__control").on("click", function() { 4903 // if ($(this).hasClass("stripe__control--prev")) { 4904 // siteStripes.prevStripe(); 4905 // } 4906 // if ($(this).hasClass("stripe__control--next")) { 4907 // siteStripes.nextStripe(); 4908 // } 4909 // }) 4910 4911 function isWithinETTimeRange() { 4912 const options = { 4913 timeZone: 'America/New_York', 4914 hour: '2-digit', 4915 minute: '2-digit', 4916 weekday: 'short', 4917 hour12: false 4918 }; 4919 const date = new Date(); 4920 const formatter = new Intl.DateTimeFormat('en-US', options); 4921 const timeString = formatter.format(date); 4922 4923 // Extract the weekday and time from the formatted string 4924 const [weekday, time] = timeString.split(' '); 4925 const [hour, minute] = time.split(':').map(num => parseInt(num, 10)); 4926 4927 const isWeekday = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'].includes(weekday); 4928 4929 if (isWeekday) { 4930 // Monday to Friday: 10 AM - 8:45 PM 4931 return (hour > 10 || (hour === 10 && minute >= 0)) && (hour < 20 || (hour === 20 && minute <= 45)); 4932 } else if (weekday === 'Sat') { 4933 // Saturday: 10 AM - 5:45 PM 4934 return (hour > 10 || (hour === 10 && minute >= 0)) && (hour < 17 || (hour === 17 && minute <= 45)); 4935 } else { 4936 // Sunday: Closed 4937 return false; 4938 } 4939 } 4940 4941 function toggleDiv() { 4942 if (isWithinETTimeRange()) { 4943 $('.live-chat').show(); 4944 } else { 4945 $('.live-chat').hide(); 4946 } 4947 } 4948 toggleDiv(); 4949 4950 //get the locale 4951 var page = window.location.pathname; 4952 var frLocale = 'fr_CA'; 4953 4954 if (page.indexOf(frLocale) != -1) { 4955 $('.language__selector--FR').addClass('language__selector--active'); 4956 $('.language__selector--EN').removeClass('language__selector--active'); 4957 4958 } else { 4959 $('.language__selector--EN').addClass('language__selector--active'); 4960 $('.language__selector--FR').removeClass('language__selector--active'); 4961 } 4962 $(".language__selector--EN").click(function() { 4963 if ($('.language__selector--EN').hasClass('language__selector--active') && window.location.href.indexOf("/fr_CA") === -1) { 4964 return; 4965 } else { 4966 var redirectedLocation = window.location.href.replace('/fr_CA', ''); 4967 window.location = redirectedLocation; 4968 } 4969 4970 4971 }); 4972 $(".language__selector--FR").click(function() { 4973 if ($('.language__selector--FR').hasClass('language__selector--active') && (window.location.href).indexOf('/fr_CA/')) { 4974 return; 4975 } else { 4976 var redirectedLocation = window.location.origin + '/fr_CA' + window.location.pathname; 4977 window.location = redirectedLocation; 4978 } 4979 }); 4980 4981 const greenShieldCookie = getCookie('is_greenshield');
4982 const insuranceDependantNameCookie = decodeURIComponent(getCookie('insurance_dependant_name')); 4983 const insurancePrommisedAmountGlasses = getCookie('insurance_prommised_amount_glasses'); 4984 const insurancePrommisedAmountContacts = getCookie('insurance_prommised_amount_contacts'); 4985 // console.log(insurancePrommisedAmountGlasses); 4986 if (greenShieldCookie == '1') { 4987 $('#gsc-site-stripe').show(); 4988 if (insuranceDependantNameCookie != '') { 4989 $('#gsc-insurance-dependant-name').html(`Active dependant: ${insuranceDependantNameCookie} | `); 4990 } 4991 if (insurancePrommisedAmountGlasses != '' && insurancePrommisedAmountContacts != '') { 4992 $('#gsc-insurance-dependant-balance').html(`Available balance up to: $${insurancePrommisedAmountGlasses} for glasses and/or $${insurancePrommisedAmountContacts} for contacts | `) 4993 } 4994 } 4995 const rbciCookie = getCookie('is_rbci'); 4996 if (rbciCookie == '1') { 4997 $('#rbci-site-stripe').show(); 4998 } 4999 5000 Cookies.set("disable_anagram", "true", { secure: true }); 5001 5002 getContactsDiscounts(environmentContacts); 5003 5004}); 5005 5006 var pformvals = getCookie("pform_values"); 5007 if(pformvals){ 5008 pformvals = $.parseJSON(unescape(pformvals)); 5009 pformvals_name = pformvals.fname + " " + pformvals.lname; 5010 if(pformvals.email) { 5011 $('.browseAccount-hello').html('Hello '+pformvals_name+'!'); 5012 $('.browseAccount-login').hide(); 5013 $('.browseAccount-createnew').hide(); 5014 $('.browseAccount-logout').show(); 5015 } 5016 } 5017 5018 $(".category").on("click", function() { 5019 if ($(this).attr("aria-expanded") === "true") { 5020 $(this).find(".collapse-icon").css("transform", "rotate(0deg)") 5021 } else { 5022 $(this).find(".collapse-icon").css("transform", "rotate(180deg)") 5023 } 5024 }) 5025 5026 // if(norders > 0 && isChatInit !== 'true') { 5027 // setCookie('kustomer_assistant_id', '64ba3cfdb768d372b6cb60c0', 1); 5028 // $.ajax({ 5029 // type: "GET", 5030 // url: "https://www.contactsexpress.ca/api/kustomer/last_order", 5031 // async: true, 5032 // success: function( response ) { 5033 // let customerPhone = []; 5034 // let customerEmail = []; 5035 // customerPhone.push({ phone: response.phone_day }); 5036 // customerEmail.push({ email: response.email }) 5037 // Kustomer.start({brandId:'621f5fc5a4a965a523604821',assistantId:'64ba3cfdb768d37ea1cb60be'}, function(){ 5038 // Kustomer.describeCustomer({ 5039 // attributes: { 5040 // emails: [response.email], 5041 // phones: [response.phone_day], 5042 // }, 5043 // customAttributes: { 5044 // lastOrderNumberStr: response.code, 5045 // lastOrderDateAt: response.order_date 5046 // } 5047 // }, function (callbackResponse, error) { 5048 // if (!error) { 5049 // console.log('Updated information about the customer'); 5050 // } 5051 // }); 5052 // }); 5053 // setCookie('chatInit', 'true', 1); 5054 // } 5055 // }); 5056 // } 5057 // else{ 5058 // if(assistantId == ''){ 5059 // Kustomer.start({brandId:'621f5fc5a4a965a523604821'}); 5060 // } 5061 // else{ 5062 // Kustomer.start({brandId:'621f5fc5a4a965a523604821',assistantId:'64ba3cfdb768d37ea1cb60be'}); 5063 // } 5064 5065 // } 5066 5067 function decodeURL(urlString){ 5068 return decodeURIComponent(encodedUrl) 5069 } 5070 5071 const eyeSizeConfig = { 5072 eyeSizeCallback: (results) => { 5073 let binocular_pd = results["mono_pd"]*1000; 5074 let face_width = results["face_width"]*1000; 5075 let bridge_width = results["bridge_width"]*1000; 5076 let eye_width = results["eye_width"]*1000; 5077 let temple_length = results["temple_length"]*1000; 5078 }, 5079 eyeSizeExitCallback: () => { 5080 //window.location.replace("glasses"); 5081 }, 5082 vendorID: "NKzVP6wZO", 5083 initialMeasurementIdx: false, 5084 customLoadingImageURL: "/cart/images/shared/icons/loading-rotating-blue.svg", 5085 ctaIndex: 0, 5086 } 5087 5088 // New sticky header with stripe function. 5089 function newStickyHeaderWithStripe() { 5090 if (typeof(isCheckout) === "undefined") { 5091 if ($(window).width() > 991) { 5092 $("#header").addClass("header--sticky").css("top", $("#site-stripe").height()); 5093 $("#site-stripe").addClass("stripe--sticky"); 5094 $("body").css("margin-top", ($("#header").height() + $("#site-stripe").height())); 5095 } else if ($(window).width() > 568 && $(window).width() <= 991) { 5096 $("#header").addClass("header--sticky").css({"top": $("#site-stripe").height(), "position": "absolute", }); 5097 $("#site-stripe").addClass("stripe--sticky").css("position", "absolute"); 5098 $("body").css("padding-top", ($("#header").height() + $("#site-stripe").height() + ($(window).width() <= 768 ? $(".legacy-search")[0].offsetHeight : 0))); 5099 } 5100 } 5101 }; 5102 5103 function googleTranslateElementInit() { 5104 var duplicate_google_translate_counter = 0; 5105 if (duplicate_google_translate_counter == 0) { 5106 new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'en,fr', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, autoDisplay: false}, 'google_translate_element_mobile'); 5107 } 5108 duplicate_google_translate_counter++; 5109 } 5110 5111 5112 5113 5114 function toggleHeaderDropdown(clickedElement, stripeOrHeader) { 5115 let dropdownType = clickedElement.attr("data-dropdown-type"); 5116 let backdropClass = stripeOrHeader === "stripe" ? "stripe-dropdown-opened" : stripeOrHeader === "header" ? "header-dropdown-opened" : undefined; 5117
5118 if (clickedElement.attr("data-dropdown-opened") === "false") { 5119 $(".stripe-dropdown-opened, .header-dropdown-opened").remove(); 5120 $("[dropdown]").hide(); 5121 $("body").addClass("no-scroll"); 5122 $("[dropdown-toggle]").attr("data-dropdown-opened", "false"); 5123 $("body").append(`<div class="${backdropClass}"></div>`); 5124 $(`.${backdropClass}, .header-search-bar__close, .header-mobile__close`).on("click", () => { 5125 $(`.${backdropClass}`).remove(); 5126 $(`[dropdown][data-dropdown-type='${dropdownType}'], [dropdown]`).hide(); 5127 $("[dropdown-toggle], [category-dropdown-toggle]").attr("data-dropdown-opened", "false"); 5128 if (window.innerWidth > 991) { 5129 $(".header__categories, .header__utilities, .legacy-search").show(); 5130 } else { 5131 $(".header__logo, .header__utilities, .legacy-search").show(); 5132 } 5133 // $("body").css("overflow", "auto"); 5134 $("body").removeClass("no-scroll"); 5135 }) 5136 $(`[dropdown][data-dropdown-type='${dropdownType}']`).show(); 5137 clickedElement.attr("data-dropdown-opened", "true"); 5138 if (clickedElement.attr("data-dropdown-type") === "search") { 5139 getTrendingProducts("", ""); 5140 $("#search-input, #search-input-1, #search-input-2").focus(); 5141 if (window.innerWidth > 991) { 5142 $(".header__categories, .header__utilities, .legacy-search").hide(); 5143 } else { 5144 $(".header__logo, .header__utilities, .legacy-search").hide(); 5145 } 5146 } 5147 if (clickedElement.attr("id") === "hamburger") { 5148 if (window.innerWidth >= 767 && window.innerWidth <= 991) { 5149 $(`.header__dropdown[data-dropdown-type="hamburger"]`).css("top", $("#header").height() + $("#site-stripe").height()); 5150 } 5151 $(`[main-hamburger] [data-dropdown-type="search"]`).show(); 5152 } 5153 if (clickedElement.attr("id") === "favorites") { 5154 getFavorites(); 5155 } 5156 if (window.innerWidth <= 991) { 5157 $(window).scrollTop(0); 5158 } 5159 } else { 5160 $(`.${backdropClass}`).remove(); 5161 $(`[dropdown][data-dropdown-type='${dropdownType}'], [dropdown]`).hide(); 5162 $("[dropdown-toggle], [category-dropdown-toggle]").attr("data-dropdown-opened", "false"); 5163 $("body").removeClass("no-scroll"); 5164 if (window.innerWidth > 991) { 5165 $(".header__categories, .header__utilities, .legacy-search").show(); 5166 } else { 5167 $(".header__logo, .header__utilities, .legacy-search").show(); 5168 // $("body").css("overflow", "auto"); 5169 } 5170 } 5171 } 5172 5173 $("#site-stripe [dropdown-toggle]").on("click", function () { 5174 toggleHeaderDropdown($(this), "stripe"); 5175 }) 5176 $("#header [dropdown-toggle]").on("click", function (e) { 5177 if ($(this).attr("data-dropdown-type") === "cart" && window.innerWidth <= 991) { 5178 return; 5179 } 5180 e.preventDefault(); 5181 toggleHeaderDropdown($(this), "header"); 5182 $("[main-hamburger]").show(); 5183 $("[mini-hamburger]").hide(); 5184 $("[brands-hamburger]").hide(); 5185 }) 5186 5187 $("[slide-to-mini-hamburger]").on("click", function() { 5188 $("[main-hamburger]").hide(); 5189 $(`[mini-hamburger][data-dropdown-type="${$(this).attr("data-dropdown-type")}"]`).show(); 5190 }) 5191 $("[back-to-main-hamburger]").on("click", function() { 5192 $("[mini-hamburger]").hide(); 5193 $("[main-hamburger]").show(); 5194 }) 5195 $("[to-brands-hamburger]").on("click", function() { 5196 $("[mini-hamburger]").hide(); 5197 $(`[brands-hamburger][data-dropdown-type="${$(this).attr("data-dropdown-type")}"]`).show(); 5198 if ($(this).attr("data-dropdown-type") === "mobile-designer") { 5199 getDesignerBrands(); 5200 } 5201 }) 5202 $("[back-to-mini-hamburger]").on("click", function() { 5203 $("[brands-hamburger]").hide(); 5204 $(`[mini-hamburger][data-dropdown-type="${$(this).attr("data-dropdown-type")}"]`).show(); 5205 }) 5206 5207 let hoverDropdownType = ""; 5208 $("[category-dropdown], [category-dropdown-toggle]").hover((e) => { 5209 hoverDropdownType = $(e.target).attr("data-dropdown-type"); 5210 $(".header-dropdown-opened").remove(); 5211 $("body").append("<div class='header-dropdown-opened'></div>"); 5212 $(`[category-dropdown][data-dropdown-type="${hoverDropdownType}"]`).css({"display": "flex", }); 5213 $(`[category-dropdown-toggle][data-dropdown-type="${hoverDropdownType}"]`).attr("data-dropdown-opened", "true"); 5214 }, () => { 5215 $(`[category-dropdown][data-dropdown-type="${hoverDropdownType}"], [dropdown]`).hide(); 5216 $("[dropdown-toggle], [category-dropdown-toggle]").attr("data-dropdown-opened", "false"); 5217 $(".header-dropdown-opened").remove(); 5218 $("body").removeClass("no-scroll"); 5219 hoverDropdownType = ""; 5220 }) 5221 5222 $("[search-type-trigger]").on("click", function(e) { 5223 const searchType = e.currentTarget.getAttribute("search-type-trigger"); 5224 $(".optician-search-type-wrapper").attr("data-active-search", searchType); 5225 if ($(".header__dropdown[dropdown][data-dropdown-type='search']").css("display") === "none") { 5226 toggleHeaderDropdown($(`[dropdown-toggle][data-dropdown-opened="false"][data-dropdown-type="search"]`).first(), "header"); 5227 } 5228 $(".header-search-bar__wrapper").removeClass("optician-search"); 5229 if (searchType === "optician") { 5230 if ($("#search-input, #search-input-1, #search-input-2").val().length > 0 && lastUsedOpticianQuery !== $("#search-input, #search-input-1, #search-input-2").val()) { 5231 startOpticianSearch($("#search-input, #search-input-1, #search-input-2").val()); 5232 } 5233 $("[data-search-optician]").css({"display": "flex", }); 5234 $("[data-search-trending]").hide(); 5235 $("[data-search-results]").hide(); 5236 $(".header-search-bar__wrapper").addClass("optician-search"); 5237 } else { 5238 $("[data-search-optician]").hide(); 5239 if ($("#search-input, #search-input-1, #search-input-2").val() && !searchReadersType) { 5240 $("#search-input, #search-input-1, #search-input-2").trigger("input"); 5241 $("[data-search-results]").css({"display": "flex", }); 5242 $("[data-search-trending]").hide(); 5243 } else { 5244 $("[data-search-trending]").css({"display": "flex", }); 5245 $("[data-search-results]").hide(); 5246 } 5247 } 5248 }); 5249 5250 $("#search-clear, .header-search-bar__clear").on("click", () => { 5251 clearOpticianSearchInput(); 5252 if ($(".optician-search-type-wrapper").attr("data-active-search") !== "optician") { 5253 $("#search-input, #search-input-1, #search-input-2").val("").trigger("input"); 5254 $(".header-dropdown__container[data-search-trending]").show(); 5255 } 5256 $(`.header__dropdown[dropdown][data-dropdown-type="search"]`).scrollTop(0); 5257 }) 5258 5259 $(".header-search-bar__close").on("click", () => { 5260 $("#search-input, #search-input-1, #search-input-2").val("").trigger("input"); 5261 $(".header-dropdown__container[data-search-trending]").show(); 5262 $(".header-dropdown__container[data-search-results]").hide(); 5263 $(".header-dropdown__container[data-search-optician]").hide(); 5264 clearOpticianSearchInput(); 5265 $(".optician-search-type-wrapper").attr("data-active-search", "search"); 5266 $(".header-search-bar__wrapper").removeClass("optician-search"); 5267 $(`.header__dropdown[dropdown][data-dropdown-type="search"]`).scrollTop(0); 5268 }) 5269 5270 $(".header-search-bar__input").on("focus", function() { 5271 if ($(`[dropdown][data-dropdown-type="hamburger"]`).css("display") !== "none") { 5272 $(`[dropdown-toggle][data-dropdown-opened="false"][data-dropdown-type="search"]`).first().click(); 5273 } 5274 }) 5275 5276 $("#search-input, #search-input-1, #search-input-2").on("keydown", async function(e) { 5277 if (e.key === "Escape") { 5278 $(".header-search-bar__close").click(); 5279 } 5280 if (e.key === "Enter") { 5281 if ($(".optician-search-type-wrapper").attr("data-active-search") === "optician") { 5282 if (lastUsedOpticianQuery !== $(this).val()) { 5283 startOpticianSearch($(this).val()); 5284 } 5285 } else { 5286 window.location.href = `/glasses?q=${$(this).val().replaceAll("&", "%26")}` 5287 } 5288 } 5289 }) 5290 5291 $("#header-coupon-input").on("keydown", function(e) { 5292 let couponCode = $(this).val(); 5293 if (couponCode !== "" && e.key === "Enter") { 5294 $("#header-coupon-apply").click(); 5295 } 5296 }) 5297 5298 $("#header-coupon-apply").on("click", () => { 5299 sidecartApplyCoupon($("#header-coupon-input").val()) 5300 }) 5301 5302 $(`.header__dropdown[data-dropdown-type="search"], .header__dropdown[data-dropdown-type="cart"]`).css("max-height", window.innerHeight - $("#header").height() - $("#site-stripe").height()); 5303 5304 const debouncedRegularSearchGA4 = debounceV2((query) => { 5305 if (query) { 5306 try { 5307 dataLayer.push({ 5308 event: "predictive_search", 5309 searchTerm: query, 5310 search_source: "Regular" 5311 }); 5312 } catch (error) { 5313 console.log(error, { 5314 event: "predictive_search", 5315 searchTerm: query, 5316 search_source: "Regular" 5317 }); 5318 } 5319 } 5320 }, 2000); 5321 5322 $("#optician-trigger").on("click", () => { 5323 try { 5324 dataLayer.push({ 5325 event: 'Optician_AI_Clicked', 5326 }); 5327 } catch (error) { 5328 console.log("Datalayer not found Optician_AI_Clicked"); 5329 } 5330 }) 5331 5332 $(".nav_insurance").on("click", () => { 5333 try { 5334 dataLayer.push({ event: 'navbar_insurance_click' }); 5335 } catch (error) { 5336 console.log('Datalayer not found navbar_insurance_click'); 5337 } 5338 }) 5339 5340 $("#search-input, #search-input-1, #search-input-2").on("input", function() { 5341 // let searchQuery = encodeURIComponent(this.value); 5342 let searchQuery = this.value; 5343 let unbxdApiUrl = 'https://search.unbxd.io/e268fcf0345cfee4ff9e9d09c1b78a8e/ss-unbxd-gcp-contactsexpress-ca-prod16621689373366'; 5344 let url = ""; 5345 let localCheck = window.location.href; 5346 searchReadersType = 5347 searchQuery.toLowerCase().includes("rea") && searchQuery.toLowerCase().includes("prog") ? "progressive-readers" : 5348 searchQuery.toLowerCase().includes("rea") ? "readers" : 5349 ""; 5350 trendingReadersLabel = 5351 searchReadersType === "progressive-readers" ? "Progressive Readers" : 5352 searchReadersType === "readers" ? "Readers" : 5353 "";
5354 let searchQueryNew = searchQuery.replace(/(rea\w*\s*)/ig, "").replace(/(prog\w*\s*)/ig, ""); 5355 kitsUSAPI = 'https://search.unbxd.io/fa194145848a3180eb26f41f4a855e05/ss-unbxd-gcp-kits-com-prod16621689373955/'; 5356 kitsCAAPI = 'https://search.unbxd.io/7615ffb6e3e55bd1e0878257222a6eba/ss-unbxd-gcp-kits-ca-prod16621689373059/'; 5357 contactsexpressAPI = 'https://search.unbxd.io/e268fcf0345cfee4ff9e9d09c1b78a8e/ss-unbxd-gcp-contactsexpress-ca-prod16621689373366/'; 5358 opticontactsAPI = 'https://search.unbxd.io/e011aa641d247fc0da0dfe7e243c931a/ss-unbxd-gcp-opticontacts-prod16621689373264/'; 5359 postalcontactsAPI = 'https://search.unbxd.io/f9ee220008a18dcf64b29195adeae481/ss-unbxd-gcp-postalcontacts-prod16621689373314/'; 5360 // if (!localCheck.includes('.camp.')) { 5361 // } else { 5362 // kitsUSAPI = 'https://search.unbxd.io/864d1797bfd230ef72d5cfdde5868364/ss-unbxd-gcp-kits-com-stage16621684171061/'; 5363 // kitsCAAPI = 'https://search.unbxd.io/0f58cac691ea94fdd83d50440eb950c6/ss-unbxd-gcp-kits-ca-stage16621696961026/'; 5364 // contactsexpressAPI = 'https://search.unbxd.io/c7c85f54618539555be1ca0f5402aad9/ss-unbxd-gcp-contactsexpress-ca-stage16621696961318/'; 5365 // opticontactsAPI = 'https://search.unbxd.io/29e04e532beaf1fe1047d95a8deb51cd/ss-unbxd-gcp-opticontacts-stage16621696961246/'; 5366 // postalcontactsAPI = 'https://search.unbxd.io/caa77561c61341ce1a520350046a16fe/ss-unbxd-gcp-postalcontacts-stage16621696963125/'; 5367 // } 5368 5369 let data = { 5370 q: decodeURIComponent(searchQueryNew), 5371 version: 'V2', 5372 'popularProducts.count': '500', 5373 'variants.relevant': true, 5374 'keywordSuggestions.count': '4', 5375 'topQueries.count': '4', 5376 }; 5377 5378 if ($(".optician-search-type-wrapper").attr("data-active-search") === "optician") { 5379 if (searchQuery === "") { 5380 clearOpticianSearchInput(); 5381 } else if (searchQuery.length > 0) { 5382 debouncedStartOpticianSearch(searchQuery); 5383 } 5384 } else { 5385 debouncedRegularSearchGA4(searchQuery); 5386 if (searchQueryNew === "") { 5387 getTrendingProducts(searchReadersType, trendingReadersLabel); 5388 $(".header-dropdown__container[data-search-trending]").show(); 5389 $("[data-search-trending] .search-dropdown__products-container").css({display: "flex"}); 5390 $(".header-dropdown__container[data-search-results]").hide(); 5391 if (!searchReadersType) { 5392 $("#search-clear, .header-search-bar__clear").hide(); 5393 } 5394 } else if (searchQueryNew.length > 0) { 5395 $(".header-dropdown__container[data-search-trending]").hide(); 5396 $(".header-dropdown__container[data-search-results], #search-clear, .header-search-bar__clear").show(); 5397 $.ajax({ 5398 5399 url: `${contactsexpressAPI}autosuggest?popularProducts.filter=v_soldout_uFilter:%20"0"&popularProducts.filter=v_enabled_uFilter:%20"1"`, 5400 5401 5402 method: "GET", 5403 data: data, 5404 success: function(response) { 5405 let searchItems = response.response.products; 5406 let glassesCount = 0; 5407 let contactsCount = 0; 5408 let totalCount = searchItems.filter((item) => item.products_sku).length; 5409 totalCount += totalCount >= 100 ? "+" : ""; 5410 let keywords = ""; 5411 let suggestions = searchItems.filter((item) => item.doctype === "KEYWORD_SUGGESTION" || item.doctype === "TOP_SEARCH_QUERIES"); 5412 $("[data-search-results] .search-dropdown__products-container:not([data-search-no-results]) .search-dropdown__products-list").html(""); 5413 if (searchItems.length > 0) { 5414 $("[data-search-no-results]").hide(); 5415 $(".search-dropdown__products-container:not([data-search-no-results])").show(); 5416 // searchItems.sort((a, b) => (b?.syn_unx_auto?.[0] === "readers") - (a?.syn_unx_auto?.[0] === "readers")); 5417 searchItems.forEach((elem, index) => { 5418 if (index < 8) { 5419 let productGroup = elem.product_group; 5420 let readersLabel = ""; 5421 let progReadersPrice = 0; 5422 let isReaders = (elem?.accepts_lenses && elem?.category[0] === "Eyeglasses") ? true : false; 5423 if (searchReadersType === "progressive-readers" && isReaders && elem?.features.some(item => item.includes("Progressive"))) { 5424 readersLabel = "Progressive Readers"; 5425 progReadersPrice = 50; 5426 } else if (searchReadersType === "readers" && isReaders) { 5427 readersLabel = "Readers"; 5428 } else { 5429 readersLabel = ""; 5430 } 5431 if (productGroup === "Glasses") { 5432 let productPriceFull = (Number(elem.price) + progReadersPrice).toFixed(2); 5433 let productPriceDiscounted = (Number(elem.promo_price) + progReadersPrice).toFixed(2); 5434 let divPrice = productPriceDiscounted > 0 ? `<div class="search-dropdown__product-price pt-3"><span class="search-dropdown__product-price--strikethrough">$${productPriceDiscounted}</span> <span class="search-dropdown__product-price--discounted">$${productPriceFull}</span></div>` : `<div class="search-dropdown__product-price pt-3">$${productPriceFull}</div>`; 5435 let divImageMain = `<img src="/cart/images/${elem.image_tag}" class="search-dropdown__product-image--main pb-4">`; 5436 let divImageAlt = `<img src="/cart/images/${elem.angle_image}" class="search-dropdown__product-image--alt pb-4">`; 5437 let itemName = elem.name.replace(elem.brand_name, "").replace(/\bkar.*n \b/i, "").replace(/\blift-off[^\w\s]*/i, "Lift-Off™"); 5438 $("[data-search-results] .search-dropdown__products-container:not([data-search-no-results]) .search-dropdown__products-list").append(`<div class="col-6 col-sm-4 col-lg-3 pb-3 h-fit-content"> 5439 <a href="${areaHref}glasses${searchReadersType && readersLabel ? "/" + searchReadersType : ""}/${elem.products_sku}/${slugify(elem.name, elem.brand_name)}?config=${elem.configuration_id}" class="search-dropdown__product-wrapper" data-product-type="${productGroup.toLowerCase()}"> 5440 ${divImageMain.replace("/cart/images/", "")} 5441 ${divImageAlt.replace("/cart/images/", "")} 5442 <div class="d-flex flex-wrap gap-1"> 5443 <div class="search-dropdown__product-brand">${elem.brand_name}</div> 5444 <div class="search-dropdown__product-name">${itemName}</div> 5445 </div> 5446 <div class="search-dropdown__product-name">${readersLabel}</div> 5447 ${divPrice} 5448 </a> 5449 </div>`); 5450 glassesCount++; 5451 } 5452 if (productGroup === "Contact Lenses") { 5453 let productPriceFull = elem.price.toFixed(2); 5454 let productPriceDiscounted; 5455 let oneRPrice = Number(elem?.price_1r).toFixed(2); 5456 specialOffer.forEach((coupon) => { 5457 if (coupon.active && coupon.group.split(", ").filter(el => {return el === elem.products_sku || el === elem.brand_name}).join()) { 5458 productPriceDiscounted = (elem.price * ((100 - coupon.discount_percentage) / 100)).toFixed(2); 5459 } 5460 }) 5461 5462 if (!productPriceDiscounted) { 5463 productPriceDiscounted = (elem.price * ((100 - generalOffer.discount_percentage) / 100)).toFixed(2); 5464 } 5465 5466 if(norders_1r >= 1){ 5467 if(productPriceFull == oneRPrice){ 5468 productPriceDiscounted = null; 5469 } 5470 else{ 5471 productPriceDiscounted = oneRPrice 5472 } 5473 } 5474 let divImageMain = `<img src="/cart/images/${elem.image}" class="search-dropdown__product-image--main pb-4">`; 5475 let divPrice = productPriceDiscounted ? `<div class="search-dropdown__product-price pt-3"><span class="search-dropdown__product-price--strikethrough">$${productPriceFull}</span> <span class="search-dropdown__product-price--discounted">$${productPriceDiscounted}</span></div>` : `<div class="search-dropdown__product-price pt-3">$${productPriceFull}</div>`; 5476 $("[data-search-results] .search-dropdown__products-container:not([data-search-no-results]) .search-dropdown__products-list").append(`<div class="col-6 col-sm-4 col-lg-3 pb-3 h-fit-content"> 5477 <a href="${areaHref}contact_lenses/${elem.products_sku}/${slugify(elem.name)}" class="search-dropdown__product-wrapper"> 5478 ${divImageMain.replace("/cart/images/", "")} 5479 <div class="search-dropdown__product-name">${elem.name}</div> 5480 ${divPrice} 5481 </a> 5482 </div>`); 5483 contactsCount++; 5484 } 5485 if (productGroup === "Accessories") { 5486 let divImageMain = `<img src="/cart/images/${elem.image}" class="search-dropdown__product-image--main pb-4">`; 5487 let itemName = elem.name.replace(/kitsbitz.* - /i, "KITSbitz™ - "); 5488 $("[data-search-results] .search-dropdown__products-container:not([data-search-no-results]) .search-dropdown__products-list").append(`<div class="col-6 col-sm-4 col-lg-3 pb-3 h-fit-content"> 5489 <a href="${areaHref}accessories/${elem.products_sku}" class="search-dropdown__product-wrapper"> 5490 ${divImageMain.replace("/cart/images/", "")} 5491 <div class="search-dropdown__product-name">${itemName}</div> 5492 <div class="search-dropdown__product-price pt-3">$${elem.price}</div> 5493 </a> 5494 </div>`); 5495 } 5496 } 5497 }) 5498 $("#search-count").html(totalCount); 5499 $(".search-dropdown__suggestions-wrapper").html(""); 5500 if (suggestions.length) { 5501 const firstSuggestion = suggestions[0].autosuggest; 5502 suggestions.forEach((elem) => { 5503 $(".search-dropdown__suggestions-wrapper").append(`<a href="${areaHref}glasses?q=${elem.autosuggest.replaceAll("&", "%26")}" class="search-dropdown__suggestion">${elem.autosuggest}</a>`); 5504 }) 5505 if (searchReadersType === "progressive-readers") { 5506 $(".search-dropdown__suggestions-wrapper").append(`<a href="${areaHref}
5506glasses/${searchReadersType}?q=${firstSuggestion}" class="search-dropdown__suggestion">${firstSuggestion} Progressive Readers</a>`); 5507 $(".search-dropdown__suggestions-wrapper").append(`<a href="${areaHref}glasses/${searchReadersType}?q=${firstSuggestion}" class="search-dropdown__suggestion">${firstSuggestion} Readers</a>`); 5508 } else if (searchReadersType === "readers") { 5509 $(".search-dropdown__suggestions-wrapper").append(`<a href="${areaHref}glasses/${searchReadersType}?q=${firstSuggestion}" class="search-dropdown__suggestion">${firstSuggestion} Readers</a>`); 5510 } 5511 } else { 5512 $(".search-dropdown__suggestions-wrapper").html(`<div class="search-dropdown__suggestion search-dropdown__suggestion--no-match">Sorry, we couldn't find any matching results for this search.<br>These trending products might interest you.</div>`); 5513 } 5514 } else { 5515 $(".search-dropdown__products-container:not([data-search-no-results])").hide(); 5516 $(".search-dropdown__suggestions-wrapper").html(`<div class="search-dropdown__suggestion search-dropdown__suggestion--no-match">Sorry, we couldn't find any matching results for this search.<br>These trending products might interest you.</div>`); 5517 $("[data-search-no-results]").css("display", "flex"); 5518 } 5519 }, 5520 error: function(xhr, status, error) { 5521 // Handle the error. 5522 } 5523 }) 5524 } 5525 } 5526 5527 }) 5528 getSiteStripes(); 5529 newStickyHeaderWithStripe(); 5530 5531 $(document).ready(function () { 5532 function openScanner() { 5533 if ($('#barcode-scanner-frame').length === 0) { 5534 $('body').append(` 5535 <iframe 5536 id="barcode-scanner-frame" 5537 src="/plugins/barcode-scanner" 5538 allow="camera" 5539 style="width:0;height:0;border:none;position:absolute;" 5540 ></iframe> 5541 `); 5542 } 5543 } 5544 5545 function closeScanner() { 5546 $('#barcode-scanner-frame').remove(); 5547 } 5548 5549 function handleBarcodeScanMessage(event) { 5550 const data = event.originalEvent.data; 5551 5552 if (data?.type === 'close-scanner') { 5553 closeScanner(); 5554 return; 5555 } 5556 5557 if (data?.type !== 'barcode-scan-result') return; 5558 5559 closeScanner(); 5560 5561 if (data.response?.data) { 5562 const sku = data.response.data.sku; 5563 const slugifiedName = slugify(data.response.data.name); 5564 window.location.href = `${areaHref}contact_lenses/${sku}/${slugifiedName}`; 5565 } 5566 } 5567 5568 $('.barcode-scanner').on('click', function (e) { 5569 e.stopPropagation(); 5570 openScanner(); 5571 }); 5572 $(window).on('message', handleBarcodeScanMessage); 5573 }); 5574 5575</script>
5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586<!-- BEGIN CONTENT --> 5587 5588 5589<section id="content"> 5590 <div class="content"> 5591 5592 5593 5594 5595 <div class="content-wrap"> 5596 <div class="container clearfix"> 5597 <div class="row"> 5598 <div class="col_full"> 5599 <div class="heading-block fancy-title nobottomborder title-bottom-border"> 5600 <h1>CONTACT LENS PRODUCT LIST</h1> 5601 </div> 5602 </div> 5603 5604 <div class="col_one_third" style='padding:3% 3%; background-color:#005b7f'> 5605 <h4 style="color:#fff;">Find your lenses using the search or from list below. </h4> 5606 <br/> 5607 <img src="/cart/images/step_01.png"/> 5608 </div> 5609 <div class="col_one_third" style='padding:3% 3%; background-color:#0072bc'> 5610 <h4 style="color:#fff;">Provide your prescription and shipping information.</h4> 5611 <br/> 5612 <img src="/cart/images/step_02.png"/> 5613 </div> 5614 <div class="col_one_third col_last" style='padding:3% 3%; background-color:#6dcff6'> 5615 <h4 style="color:#fff;">Review the information then place the order. </h4> 5616 <br/> 5617 <img src="/cart/images/step_03.png"/> 5618 </div> 5619 5620 <div class="col_full"> 5621 <div class="col_full" style="text-align:center"> 5622 <form action="https://www.contactsexpress.ca/search" method="post" accept-charset="Windows-1252"> 5623 <input type=hidden name=mv_session_id value="nsession"> 5624 <input type="hidden" name="mv_coordinate" value="yes" /> 5625 <input type="hidden" name="mv_searchtype" value="db" /> 5626 <input type="hidden" name="mv_matchlimit" value="20" /> 5627 <input type="hidden" name="mv_sort_field" value="category,description" /> 5628 <!-- Search Master field to make sure it is 1 --> 5629 <input type="hidden" name="mv_search_field" value="master" /> 5630 <input type="hidden" name="mv_searchspec" value="1" /> 5631 <input type="hidden" name="mv_column_op" value="eq" /> 5632 <input type="hidden" name="mv_substring_match" value="Yes" /> 5633 <!-- Search Active field to make sure it is 1 --> 5634 <input type="hidden" name="mv_search_field" value="active" /> 5635 <input type="hidden" name="mv_searchspec" value="1" /> 5636 <input type="hidden" name="mv_column_op" value="eq" /> 5637 <input type="hidden" name="mv_substring_match" value="Yes" /> 5638 <!-- Search SKU field to make sure it starts with CL --> 5639 <input type="hidden" name="mv_search_field" value="sku" /> 5640 <input type="hidden" name="mv_searchspec" value="CL" /> 5641 <input type="hidden" name="mv_column_op" value="rm" /> 5642 <input type="hidden" name="mv_begin_string" value="1" /> 5643 <input type="hidden" name="mv_substring_match" value="Yes" /> 5644 <!-- Search Description for user text --> 5645 <input type="hidden" name="mv_search_field" value=":description:keywords" /> 5646 <input type="hidden" name="mv_column_op" value="aq" /> 5647 <input type="hidden" name="mv_substring_match" value="Yes" /> 5648 5649 <span class="search-field" > 5650 <input id="inner_search" type="text" name="mv_searchspec" placeholder="SEARCH FOR YOUR CONTACT LENSES" class="blink" style="height:50px; color:#b6b4af; font-size:20px; height: 50px;width: 100%; margin-bottom: 20px; padding: 20px;" /> 5651 </span> 5652 <div id="inner_autocomplete"></div> 5653 <!--<input type="submit" value="" class="search-button" />--> 5654 <p class="magni-button"><input type="submit" value="SEARCH" style="width:100%; background-color:#0072bc; color:#fff; font-size:18px; border:0px; padding:10px" /></p> 5655 </form> 5656 </div> 5657 </div> 5658 5659 <div class="row"> 5660 5661 5662 5663 5664 <div class="col-lg-4 bottommargin-sm"> 5665 <h2>1</h2> 5666 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVD30JJ/1-day-acuvue-define-30-pack">1-Day Acuvue Define 30 pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVMJJ/1-day-acuvue-moist-30-pack">1-Day Acuvue Moist 30 pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVM90JJ/1-day-acuvue-moist-90-pack">1-Day Acuvue Moist 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVMT90JJ/1-day-acuvue-moist-for-astigmatism-90-pack">1-Day Acuvue Moist for Astigmatism 90 pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVMMFJJ/1-day-acuvue-moist-multifocal-30-pack">1-Day Acuvue Moist Multifocal 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVMMF90JJ/1-day-acuvue-moist-multifocal-90-pack">1-Day Acuvue Moist Multifocal 90 Pack</a></div> 5667 </div> 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 <div class="col-lg-4 bottommargin-sm"> 5716 <h2>A</h2> 5717 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVMTJJ/acuvue-1-day-moist-for-astigmatism-30pk">Acuvue 1-Day Moist for Astigmatism 30pk</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAV2JJ/acuvue-2">Acuvue 2</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVO30JJ/acuvue-oasys-1-day-30-pack-with-hydraluxe">Acuvue Oasys 1-Day 30 Pack with HydraLuxe</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVO90JJ/acuvue-oasys-1-day-90-pack-with-hydraluxe">Acuvue Oasys 1-Day 90 Pack with HydraLuxe</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOT30JJ/acuvue-oasys-1-day-for-astigmatism-30-pack-with-hydraluxe">Acuvue Oasys 1-Day for Astigmatism 30 pack with HydraLuxe</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOT90JJ/acuvue-oasys-1-day-for-astigmatism-90-pack-with-hydraluxe">Acuvue Oasys 1-Day for Astigmatism 90 pack with HydraLuxe</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAVO12JJ/acuvue-oasys-12-pack">Acuvue Oasys 12 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAVO24JJ/acuvue-oasys-24-pack">Acuvue Oasys 24 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAOAJJ/acuvue-oasys-for-astigmatism">Acuvue Oasys for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAOPJJ/acuvue-oasys-for-presbyopia">Acuvue Oasys for Presbyopia</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMX30JJ/acuvue-oasys-max-1-day-30-pack">Acuvue Oasys MAX 1-Day 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMX90JJ/acuvue-oasys-max-1-day-90-pack">Acuvue Oasys MAX 1-Day 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMXAS30JJ/acuvue-oasys-max-1-day-for-astigmatism-30-pack">Acuvue Oasys MAX 1-Day for Astigmatism 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMXMF30JJ/acuvue-oasys-max-1-day-multifocal-30-pack">Acuvue Oasys MAX 1-Day Multifocal 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMXMF90JJ/acuvue-oasys-max-1-day-multifocal-90-pack">Acuvue Oasys MAX 1-Day Multifocal 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CL1DAVOMXMFAS30JJ/acuvue-oasys-max-1-day-multifocal-for-astigmatism-30-pack">Acuvue Oasys MAX 1-Day Multifocal for Astigmatism 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAVOMFJJ/acuvue-oasys-multifocal">Acuvue Oasys Multifocal</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAVVJJ/acuvue-vita">Acuvue Vita</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAVVTJJ/acuvue-vita-for-astigmatism">Acuvue Vita for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAOCAL/air-optix-colors">Air Optix Colors</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAOC2AL/air-optix-colors-2-pack">Air Optix Colors 2 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAONDACV/air-optix-night-and-day-aqua">Air Optix Night and Day Aqua</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLO2AHGCV/air-optix-plus-hydraglyde">
5717Air Optix plus HydraGlyde</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLO2AHGTCV/air-optix-plus-hydraglyde-for-astigmatism">Air Optix plus HydraGlyde for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLO2AHGMCV/air-optix-plus-hydraglyde-multifocal">Air Optix plus HydraGlyde Multifocal</a></div> 5718 </div> 5719 5720 5721 5722 5723 5724 5725 <div class="col-lg-4 bottommargin-sm"> 5726 <h2>B</h2> 5727 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLULTRABL/bausch-lomb-ultra">Bausch + Lomb ULTRA</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLULTRATBL/bausch-lomb-ultra-for-astigmatism">Bausch + Lomb ULTRA for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLULTRAMFBL/bausch-lomb-ultra-for-presbyopia">Bausch + Lomb ULTRA for Presbyopia</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLULTRAMFTBL/bausch-lomb-ultra-multifocal-for-astigmatism">Bausch + Lomb ULTRA Multifocal for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBICV/biofinity">Biofinity</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBIAFCV/biofinity-same-as-aquaclear">Biofinity (Same as AquaClear)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLHYCV/biofinity-same-as-harmony">Biofinity (Same as Harmony)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBIECV/biofinity-energys">Biofinity Energys</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBIMCV/biofinity-multifocal">Biofinity Multifocal</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBITCV/biofinity-toric">Biofinity Toric</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBFTAQTCV/biofinity-same-as-aquaclear-toric">Biofinity Toric (Same as AquaClear Toric)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLHYTCV/biofinity-same-as-harmony-toric">Biofinity Toric (Same as Harmony Toric)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBITMCV/biofinity-toric-multifocal">Biofinity Toric Multifocal</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBIXRCV/biofinity-xr">Biofinity XR</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBITXRCV/biofinity-xr-toric">Biofinity XR Toric</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRU30BL/biotrue-oneday-30-pack">Biotrue ONEday 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRU90BL/biotrue-oneday-90-pack">Biotrue ONEday 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRUT30BL/biotrue-oneday-for-astigmatism-30-pack">Biotrue ONEday for Astigmatism (30 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRUT90BL/biotrue-oneday-for-astigmatism-90-pack">Biotrue ONEday for Astigmatism (90 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRUP30BL/biotrue-oneday-for-presbyopia-30-pack">Biotrue ONEday for Presbyopia (30 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBTRUP90BL/biotrue-oneday-for-presbyopia-90-pack">Biotrue ONEday for Presbyopia (90 pack)</a></div> 5728 </div> 5729 5730 5731 5732 5733 5734 5735 <div class="col-lg-4 bottommargin-sm"> 5736 <h2>C</h2> 5737 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1D30SL/clariti-1-day-30-pack">Clariti 1 Day 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1D90SL/clariti-1-day-90-pack">Clariti 1 Day 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1DM3A30CV/clariti-1-day-multifocal-3-add-30-pack">Clariti 1 Day Multifocal 3 Add 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1DM3A90CV/clariti-1-day-multifocal-3-add-90-pack">Clariti 1 Day Multifocal 3 Add 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1DT30SL/clariti-1-day-toric-30-pack">Clariti 1 Day Toric 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLC1DT90SL/clariti-1-day-toric-90-pack">Clariti 1 Day Toric 90 Pack</a></div> 5738 </div> 5739 5740 5741 5742 5743 5744 5745 <div class="col-lg-4 bottommargin-sm"> 5746 <h2>D</h2> 5747 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDAC30CV/dailies-aquacomfort-plus-30-pack">Dailies AquaComfort Plus 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDAC90CV/dailies-aquacomfort-plus-90-pack">Dailies AquaComfort Plus 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDACM30AL/dailies-aquacomfort-plus-multifocal-30-pack">Dailies AquaComfort Plus Multifocal 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDACM90AL/dailies-aquacomfort-plus-multifocal-90-pack">Dailies AquaComfort Plus Multifocal 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDACT30AL/dailies-aquacomfort-plus-toric-30-pack">Dailies AquaComfort Plus Toric 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDACT90AL/dailies-aquacomfort-plus-toric-90-pack">Dailies AquaComfort Plus Toric 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDAC30AL/dailies-colors-30-pack">Dailies COLORS 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT130CACV/dailies-total-1-30-pack">Dailies Total 1 (30 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT190CACV/dailies-total-1-90-pack">Dailies Total 1 (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT190CACV_1/dailies-total-1-90-pack">Dailies Total 1 (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT1T30CV/dailies-total-1-for-astigmatism-30-pack">Dailies Total 1 for Astigmatism (30 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT1T90CV/dailies-total-1-for-astigmatism-90-pack">Dailies Total 1 for Astigmatism (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT1M30AL/dailies-total-1-multifocal-30-pack">Dailies Total 1 Multifocal (30 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLDT1M90AL/dailies-total-1-multifocal-90-pack">Dailies Total 1 Multifocal (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDCLGR/kits-daily-color-10-pack-lush-green">Daily Color 10 Pack - Lush Green</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDCOBL/kits-daily-color-10-pack-ocean-blue">Daily Color 10 Pack - Ocean Blue</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDCSBR/kits-daily-color-10-pack-smokey-brown">Daily Color 10 Pack - Smokey Brown</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDCSGY/kits-daily-color-10-pack-stormy-gray">Daily Color 10 Pack - Stormy Gray</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDCTPR/kits-daily-color-10-pack-twilight-purple">Daily Color 10 Pack - Twilight Purple</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDA/kits-daily-silicone-hydrogel-15-pack">Daily Silicone Hydrogel 15 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDA30/kits-daily-silicone-hydrogel-30-pack">Daily Silicone Hydrogel 30 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKITSDA90/kits-daily-silicone-hydrogel-90-pack">Daily Silicone Hydrogel 90 Pack</a></div> 5748 </div> 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 <div class="col-lg-4 bottommargin-sm"> 5762 <h2>F</h2> 5763 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLFNDCV/focus-night-and-day">Focus Night and Day</a></div> 5764 </div> 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 <div class="col-lg-4 bottommargin-sm"> 5802 <h2>M</h2> 5803 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLAFCV/mediflex-aquafinity">Mediflex Aquafinity</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLBIMFAQ116TCV/mediflex-aquafinity-116-toric">Mediflex Aquafinity 116 Toric</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLKSP19CV/myday-same-as-kirkland-signature-premium-daily-disposable">MyDay (Same as Kirkland Signature Premium Daily Disposable)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLLC1DP9CV/myday-same-as-lenscrafters-1-day-premium">MyDay (Same as LensCrafters 1-Day Premium)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLMD1D180CV/myday-daily-disposable-180-pack">MyDay Daily Disposable 180 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLMD1D9CV/myday-daily-disposable-90-pack">MyDay Daily Disposable 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLMD1MF90CV/myday-daily-disposable-multifocal-90-pack">MyDay Daily Disposable Multifocal 90 pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLMDEN90CV/myday-energys-daily-disposable-90-pack">MyDay Energys Daily Disposable 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLMD1DT9CV/myday-toric-90-pack">MyDay Toric 90 pack</a></div> 5804 </div> 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 <div class="col-lg-4 bottommargin-sm"> 5823 <h2>P</h2> 5824 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP130AL/precision-1-30-pack">Precision 1 (30 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP190AL/precision-1-90-pack">Precision 1 (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP1AS30AL/precision-1-for-astigmatism-30-pack">Precision 1 for Astigmatism (30 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP1AS90AL/precision-1-for-astigmatism-90-pack">Precision 1 for Astigmatism (90 Pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP712AL/precision7-12-pack">Precision7 (12 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP727AL/precision7-27-pack">Precision7 (27 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP7AS12AL/precision7-for-astigmatism-12-pack">Precision7 for Astigmatism (12 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLP7AS27AL/precision7-for-astigmatism-27-pack">Precision7 for Astigmatism (27 pack)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPC1DCV/proclear-1-day-90-pack">Proclear 1-Day 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPDM90CPV/proclear-1-day-multifocal-90-pack">Proclear 1-Day Multifocal 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPVBL/purevision">Purevision</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPV2TBL/purevision-2-for-astigmatism-hd">Purevision 2 For Astigmatism HD</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPV2BL/purevision-2-hd">Purevision 2 HD</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPV2MFBL/purevision-2-multi-focal-for-presbyopia">Purevision 2 Multi-focal (For Presbyopia)</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLPVMFBL/purevision-multi-focal">Purevision Multi-focal</a></div> 5825 </div> 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 <div class="col-lg-4 bottommargin-sm"> 5843 <h2>S</h2> 5844 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLSPAVCV/serenity">Serenity</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLSPTAVTCV/serenity-toric">Serenity Toric</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLSL38BL/soflens-38">SofLens 38</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLSLDD90BL/soflens-daily-disposable-90-pack">SofLens Daily Disposable 90 Pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLSLMFBL/soflens-multi-focal">SofLens Multi-focal</a></div> 5845 </div> 5846 5847 5848 5849 5850 5851 5852 <div class="col-lg-4 bottommargin-sm"> 5853 <h2>T</h2> 5854 <div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLTOTAL30AL/total30-6-pack">Total30 6 pack</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLTOTAL30TAL/total30-for-astigmatism">Total30 for Astigmatism</a></div><div class=''><a href="https://www.contactsexpress.ca/contact_lenses/CLTOTAL30MF/total30-multifocal">Total30 Multifocal</a></div> 5855 </div> 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 </div> 5890 5891 </div> 5892 </div> 5893 </div> 5894 </div> 5895</section> 5896 5897<!-- END CONTENT --> 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909<!-- External JavaScripts 5910 ============================================= --> 5911 5912
5912<script src="/js/shared/plugins.js?v=1"></script>
5912 5913 5914
5915<script type="text/javascript" src="/js/config.js"></script>
vendor: 1 bytes, line 5915
5915
5916<script type="text/javascript" src="/js/png-fix.js"></script>
vendor: 1 bytes, line 5916
5916
5917<script type="text/javascript" src="/js/jquery-func.js"></script>
vendor: 1 bytes, line 5917
5917
5918<script type='text/javascript' src='/js/jquery.pstrength-min.1.2.js'></script>
vendor: 1 bytes, line 5918
5918
5919<script type="text/javascript" src="/js/global.js?v=4"></script>
5919 5920
5921<script> 5922$(document).ready(function(){ 5923 5924 5925 5926 if ($(window).height() < 750) { 5927 //Close all accordian on load for small device height (mobile menu) 5928 $('.accordion .accordion-item-active').removeClass('accordion-item-active'); 5929 $('.accordion .accordion-header-active').removeClass('accordion-header-active'); 5930 $('.accordion .accordion-header-icon-active').removeClass('accordion-header-icon-active'); 5931 $('.accordion .drawer .accordion-content').css('display','none'); 5932 } 5933 5934 $('#browseMobileMenu-mobile').css('max-height',$(window).height()); 5935 5936 5937 $('html').click(function(e) { 5938 $('.slideDownNav').slideUp('fast'); 5939 $('.mainNavDD').removeClass('active'); 5940 5941 if ($(document).scrollTop() == 0) { 5942 $(".fixed-to-grid").css('background-color','rgba(255, 255, 255, 0.5)'); 5943 $(".fixed-to-grid").css('border-bottom','0px'); 5944 } 5945 $('.language-dropdown').hide(); 5946 $('.js-arrow-up').hide(); 5947 }); 5948 5949 5950 $('.keepOpen, .fixed-to-grid').click(function(e){ 5951 /* STOP BUBBLING */ 5952 if (e.stopPropagation) { // W3C standard variant 5953 e.stopPropagation(); 5954 } else { // IE variant 5955 e.cancelBubble = true; 5956 } 5957 }); 5958 5959 $('.brands_headings').mouseover(function(){ 5960 $(this).find('.arrow-right-black').css('display', 'inline-block'); 5961 }); 5962 5963 $('.brands_headings').mouseout(function(){ 5964 $(this).find('.arrow-right-black').css('display', 'none'); 5965 }); 5966 5967 $('.glasses_menu').mouseover(function(){ 5968 $(this).css('opacity', '1.0'); 5969 }); 5970 5971 $('.glasses_menu').mouseout(function(){ 5972 $(this).css('opacity', '0.5'); 5973 }); 5974 5975 $('.brands_ul li,.brands_headings').click(function(){ 5976 $('.brands_ul li').removeClass('active'); 5977 $('.brands_headings').removeClass('active'); 5978 $(this).addClass('active'); 5979 }); 5980 5981 $('#glassesContacts').click(function(event){ 5982 event.stopPropagation(); 5983 }); 5984 5985 isMobile = 0; 5986 if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { 5987 isMobile = 1; 5988 } 5989 5990 jQuery.Animation.prefilter(function(element, properties, options) { 5991 if (options.overrideOverflow) { 5992 jQuery(element).css("overflow", options.overrideOverflow); 5993 } 5994 }); 5995 5996 (function () { 5997 var previousScroll = 0; 5998 5999 $(window).scroll(function(){ 6000 var currentScroll = $(this).scrollTop(); 6001 6002 //Change header css when scroll down 6003 if (currentScroll > previousScroll && !isMobile){ 6004 $(".header, .header-div").animate({'height':'48px'},{queue: false, duration:300,overrideOverflow: "visible"}); 6005 $(".basket-first-row ").animate({'height':'48px'},{queue: false, duration:300}); 6006 6007 $(".logo-img").animate({'width': '140px'},{queue: false, duration:300}); 6008 $(".header-nav").css('margin-top','8px'); 6009 $(".fixed-to-grid.large").css('background-color','rgba(255, 255, 255, 1)'); 6010 6011 $('.basket-text img.basket-svg').animate({'margin-top':'7px'},{queue: false, duration:400}).animate({'width':'19%'},{queue: false, duration:400}); 6012 $('.basket-text h3').animate({'margin-top':'3px'},{queue: false, duration:400}); 6013 6014 //$('.slideDownNav').not('#browseContacts,#browseGlasses, #browseSunglasses,#browseMobileMenu-mobile,#browseSearch-mobile,#browseAccount-mobile').animate({'margin-top':'-53px'},{queue: false, duration:300}); 6015 6016 $('#browseContacts,#browseGlasses, #browseSunglasses').addClass('scrolled').animate({'margin-top':'0px'},{queue: false, duration:300}); 6017 6018 $(".header-menu-items").animate({'margin-top':'10px'},{queue: false, duration:400}); 6019 $(".nav-search").animate({'margin-top':'8px'},{queue: false, duration:400}); 6020 $(".language").animate({'margin-top':'10px'},{queue: false, duration:400}); 6021 6022 $(".logo-img").animate({'margin-top':'8px'},{queue: false, duration:400}); 6023 $(".fixed-to-grid.large").css('border-bottom','1px solid black'); 6024 6025 if($(".searchbar").css('margin-top') != '8px'){ 6026 //$("div.bonus-text span, .searchbar").hide(); 6027 //$(".searchbar").css('margin-top','8px').fadeIn(900); 6028 } 6029 6030 $('.js-arrow-up').css('visibility','hidden'); 6031 } 6032 previousScroll = currentScroll; 6033 6034 //Reset default header css when scrolled up to very top. 6035 if ($(document).scrollTop() == 0 && !isMobile) { 6036 //$("nav div.basket").animate({'height':'100px'},{queue: false, duration:1}); 6037 //$("div.bonus-text span").fadeIn(300); 6038 $(".logo-img").animate({'width': '240px'},{queue: false, duration:300}); 6039 6040 $(".header, .header-div").animate({'height':'100px'},{queue: false, duration:300,overrideOverflow: "visible"}); 6041 $(".basket-first-row ").animate({'height':'100px'},{queue: false, duration:300}); 6042 6043 $('.basket-text img.basket-svg').animate({'margin-top':'25px'},{queue: false, duration:400}).animate({'width':'38px'},{queue: false, duration:400}); 6044 $('.basket-text h3').animate({'margin-top':'10px'},{queue: false, duration:400}); 6045 6046 //$('.slideDownNav').not('#browseContacts,#browseGlasses, #browseSunglasses,#browseMobileMenu-mobile,#browseSearch-mobile,#browseA
6046ccount-mobile').animate({'margin-top':'0px'},{queue: false, duration:300}); 6047 6048 $(".fixed-to-grid.large").css('border-bottom','1px solid black'); 6049 $(".header-menu-items").animate({'margin-top':'37px'},{queue: false, duration:400}); 6050 $(".nav-search").animate({'margin-top':'34px'},{queue: false, duration:400}); 6051 $(".language").animate({'margin-top':'38px'},{queue: false, duration:400}); 6052 6053 $(".logo-img").animate({'margin-top':'26px'},{queue: false, duration:300}); 6054 6055 //$(".searchbar").animate({'margin-top':'0px'},{queue: false, duration:300}); 6056 6057 $(".fixed-to-grid.large").css('background-color','rgba(255, 255, 255, 0.5)'); 6058 $(".fixed-to-grid.large, nav div.basket-large").css('border-bottom','0px'); 6059 6060 $('.js-arrow-up').css('visibility','visible'); 6061 } 6062 }); 6063 6064 6065}()); //run this anonymous function immediately 6066 6067 6068 6069 //On page load regulate header opacity 6070 if ($(document).scrollTop() > 0) { 6071 $(".fixed-to-grid").css('background-color','rgba(255, 255, 255, 1)'); 6072 } 6073 6074 6075 6076 6077}); 6078 6079</script>
6079 6080 6081 6082 6083
6084<script type="text/javascript" src="/js/jquery-plugins.js"></script>
vendor: 1 bytes, line 6084
6084
6085<script type="text/javascript" src="/js/pform.js"></script>
vendor: 1 bytes, line 6085
6085
6086<script type="text/javascript" src="/js/affiliate_track.js"></script>
vendor: 1 bytes, line 6086
6086
6087<script>/* 6088function getBasketCookieJSON(){ 6089 var name = 'basket_cookie'; 6090 var basket_cookie = {}; 6091 var chunks = $.cookie(name + '_chunks'); 6092 if (typeof chunks == "undefined" || chunks == null || (chunks != null && !chunks.match(/^\d+$/)) ){ 6093 chunks = 0; 6094 } else { 6095 chunks = parseInt(chunks); 6096 } 6097 6098 if (chunks) { 6099 //alert('in chunked code path'); 6100 for (var i = 1; i <= chunks; i++) { 6101 //alert ('processing chunk ' + i); 6102 var chunk_part = $.cookie(name + '_chunk_' + i); 6103 //alert ('chunk part: ' + chunk_part); 6104 basket_cookie = basket_cookie + chunk_part; 6105 } 6106 } 6107 else { 6108 basket_cookie = $.cookie(name); 6109 } 6110 6111 if (basket_cookie) { 6112 basket_cookie = $.parseJSON(unescape(basket_cookie)); 6113 } 6114 6115 return basket_cookie; 6116} 6117 6118 6119 var numorders = getCookie("norders"); 6120 6121 var userSessionDetails = getBasketCookieJSON(); 6122 6123 if(userSessionDetails){ 6124 userSessionDetails.norders = numorders; 6125 } 6126 6127 var userEmail = sessionStorage.getItem('email') || ''; 6128 var userFname = sessionStorage.getItem('fname') || ''; 6129 var userLname = sessionStorage.getItem('lname') || ''; 6130 var userName = sessionStorage.getItem('username') || ''; 6131 var quoteNumber = sessionStorage.getItem('quotenumber') || ''; 6132 var orderNumber = sessionStorage.getItem('ordernumber') || ''; 6133 var phoneNumber = sessionStorage.getItem('phone_day') || ''; 6134 6135function initFreshChat() { 6136 window?.fcWidget?.init({ 6137 token: "00e03208-4d29-49b5-ab4e-c6638bfbc6ed", 6138 host: "https://wchat.freshchat.com", 6139 siteId: "ContactsExpress.ca", 6140 externalId: userName, 6141 firstName: userFname, 6142 lastName: userLname, 6143 email: userEmail, 6144 6145 config: { 6146 disableEvents: true, 6147 cssNames: { 6148 widget: 'fc_frame', 6149 open: 'fc_open', 6150 expanded: 'fc_expanded' 6151 }, 6152 showFAQOnOpen: true, 6153 hideFAQ: true, 6154 agent: { 6155 hideName: false, 6156 hidePic: false, 6157 hideBio: false, 6158 hideEmail: true, 6159 }, 6160 headerProperty: { 6161 //If you have multiple sites you can use the appName and appLogo to overwrite the values. 6162 appName: 'ContactsExpress.ca', 6163 //appLogo: 'https://www.kits.ca/cart/images/store_logo.png', 6164 backgroundColor: '#FFFFFF', 6165 foregroundColor: '#333333', 6166 //backgroundImage: 'https://wchat.freshchat.com/assets/images/texture_background_1-bdc7191884a15871ed640bcb0635e7e7.png' 6167 }, 6168 content: { 6169 placeholders: { 6170 search_field: 'Search', 6171 reply_field: 'Reply', 6172 csat_reply: 'Add your comments here' 6173 }, 6174 actions: { 6175 csat_yes: 'Yes', 6176 csat_no: 'No', 6177 push_notify_yes: 'Yes', 6178 push_notify_no: 'No', 6179 tab_faq: 'Solutions', 6180 tab_chat: 'Chat', 6181 csat_submit: 'Submit' 6182 }, 6183 headers: { 6184 chat: 'Chat with Us', 6185 chat_help: 'Reach out to us if you have any questions', 6186 faq: 'Solution Articles', 6187 faq_help: 'Browse our articles', 6188 faq_not_available: 'No Articles Found', 6189 faq_search_not_available: 'No articles were found for {{query}}', 6190 faq_useful: 'Was this article helpful?', 6191 faq_thankyou: 'Thank you for your feedback', 6192 faq_message_us: 'Message Us', 6193 push_notification: 'Don\'t miss out on any replies! Allow push notifications?', 6194 csat_question: 'Did we address your concerns??', 6195 csat_yes_question: 'How would you rate this interaction?', 6196 csat_no_question: 'How could we have helped better?', 6197 csat_thankyou: 'Thanks for the response', 6198 csat_rate_here: 'Submit your rating here', 6199 channel_response: { 6200 offline: 'No agents online. Send us an email or try again later.', 6201 online: { 6202 minutes: { 6203 one: "Currently replying in {!time!} minutes ", 6204 more: "Typically replies in {!time!} minutes" 6205 }, 6206 hours: { 6207 one: "Currently replying in under an hour", 6208 more: "Typically replies in {!time!} hours", 6209 } 6210 } 6211 } 6212 } 6213 } 6214 } 6215 6216 }); 6217
6218 if(userSessionDetails){ 6219 window?.fcWidget?.user.setProperties(userSessionDetails); 6220 } 6221 6222 window?.fcWidget?.user.setProperties({ 6223 "phone": phoneNumber, 6224 "quotenumber": quoteNumber, 6225 "ordernumber": orderNumber 6226 }); 6227 6228 } 6229 6230$(document).ready(function(){ 6231function initialize(i,t){var e;i.getElementById(t)?initFreshChat():((e=i.createElement("script")).id=t,e.async=!0,e.src="https://wchat.freshchat.com/js/widget.js",e.onload=initFreshChat,i.head.appendChild(e))}function initiateCall(){initialize(document,"freshchat-js-sdk")}window.addEventListener?window.addEventListener("load",initiateCall,!1):window.attachEvent("load",initiateCall,!1); 6232}); 6233*/</script>
6233 6234 6235 6236 6237 6238
6239<script type="text/javascript" src="/js/jquery.autocomplete.js"></script>
6239
6240<script> 6241function logsearchspecs(typed,selected){ 6242 var searchData = jQuery("<form></form>").serialize(); 6243 searchData += 'logsearch=1&typed='+typed+'&selected='+selected; 6244 $.ajax({ 6245 type: "POST", 6246 url: '/ajax_autocomplete.html', 6247 data: searchData 6248 }) 6249} 6250$(document).ready(function(){ 6251 6252 6253 6254 if($('input.password')){ 6255 $('input.password').pstrength(); 6256 } 6257 if($('dl#specialsFilter')){ 6258 $('dl#specialsFilter a').click(function() { 6259 var target = $(this).data('target'); 6260 if(target == 'all') { 6261 $('.sections').fadeIn(); 6262 } else { 6263 $('.sections').fadeOut(); 6264 $(target).fadeIn(); 6265 } 6266 $('dl#specialsFilter dd').removeClass('active'); 6267 $(this).parent().addClass('active') 6268 6269 }); 6270 } 6271 6272 6273 6274}); 6275 6276 6277</script>
6277 6278 6279 6280 6281<style> 6282.autocomplete-suggestions { border: 1px solid #999; background: #FFF; overflow: auto; } 6283.autocomplete-suggestion { padding: 10px 20px !important; white-space: nowrap; overflow: hidden ; } 6284.autocomplete-selected { background: #F0F0F0 !important; } 6285.autocomplete-suggestions strong { color: #3399FF !important; } 6286.autocomplete-group { padding: 2px 5px !important; } 6287.autocomplete-group strong { display: block !important; border-bottom: 1px solid #000 !important; } 6288 6289.autocomplete-suggestion li { display: inline-block; text-decoration: none; padding-left: 25px !important; font-family: 'Open Sans', sans-serif; font-size: 16px !important; } 6290.autocomplete-suggestion img { max-width: 300px !important; } 6291.autocomplete-suggestion .suggestion-imgdiv { display: inline-block; min-width: 250px !important; } 6292 6293</style> 6294 6295<!--[if lte IE 8]> 6296
6296<script type="text/javascript" src="/js/svgeezy.js"></script>
6296 6297
6297<script type="text/javascript"> 6298 svgeezy.init('whatever', 'png'); 6299 </script>
6299 6300 6301<![endif]--> 6302 6303 6304 6305 6306 6307 6308 <!-- BEGIN: Google Trusted Stores --> 6309 6310 6311 6312
6312<script>(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"5037735"};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");</script>
6312<noscript><img src="//bat.bing.com/action/0?ti=5037735&Ver=2" height="0" width="0" style="display:none; visibility: hidden;" /></noscript> 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325<!-- Footer 6326============================================= --> 6327<style> 6328 #footer{ 6329 border: none !important; 6330 } 6331 6332 .footer__news{ 6333 padding-top: 20px; 6334 padding-bottom: 20px; 6335 background: #0071BC; 6336 } 6337 6338 .footer__news-text{ 6339 font-size: 20px; 6340 color: #FFF; 6341 line-height: 58px; 6342 padding-left: 50px; 6343 padding-right: 50px; 6344 } 6345 6346 .footer__news-input{ 6347 padding: 10px 9px 8px 9px; 6348 border: none; 6349 border-radius: 5px; 6350 width: 300px; 6351 } 6352 6353 .footer__news-input::placeholder{ 6354 color: #909090; 6355 } 6356 6357 .footer__news-submit{ 6358 color: #2e2e2e; 6359 border: 1px solid #FFF; 6360 border-radius: 5px; 6361 text-shadow: none; 6362 background-color: #FFF; 6363 text-transform: capitalize; 6364 } 6365 6366 .footer__news-submit:hover{ 6367 color: #FFF; 6368 background-color: #0071BC; 6369 text-shadow: none; 6370 } 6371 6372 @media only screen and (max-width: 1199.98px){ 6373 .footer__heading{ 6374 font-size: 24px; 6375 line-height: 28px; 6376 } 6377 6378 .footer__tag{ 6379 font-size: 12px; 6380 } 6381 6382 .footer__news-text{ 6383 font-size: 36px; 6384 line-height: 38px; 6385 } 6386 } 6387 6388 @media only screen and (max-width: 767.98px){ 6389 .footer__news-text{ 6390 font-size: 24px; 6391 line-height: 28px; 6392 color: #FFF; 6393 padding-left: 0; 6394 padding-right: 0; 6395 } 6396 } 6397 6398 @media only screen and (max-width: 475px){ 6399 .footer__news-input{ 6400 width: 60%; 6401 } 6402 } 6403 6404 @media only screen and (max-width: 385px){ 6405 .footer__news-input{ 6406 width: 100%; 6407 } 6408 } 6409.collapse-icon { 6410 position: absolute; 6411 top: 0; 6412 right: 0; 6413 height: 20px; 6414 width: 20px; 6415 margin-right: 15px; 6416 transition: 0.35s; 6417 } 6418</style> 6419 6420<footer id="footer"> 6421 6422 6423<!-- <div class="center email-signup" style="padding-top:15px; padding-bottom:15px; width:100%; background-color:#eff2f6"> 6424 <div class="container center"> 6425 6426 <form name="iterable_optin" action="//links.iterable.com/lists/publicAddSubscriberForm?publicIdString=8bb875c0-8350-4f8f-aca9-708820703470" target="_blank" method="POST" class="email" style="margin-bottom:0px"> 6427 6428 <h4 style="margin-bottom:10px; font-size: 15px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; display:inline-block; padding-right:10px">THE BEST DEALS ARE ON EMAIL.</h4> 6429<input type="text" name="email" size="22" onfocus="if(this.value===this.defaultValue){this.value='';}" onblur="if(this.value===''){this.value=this.defaultValue;}" value="Enter your email" style="margin-right:5px !important; margin-bottom:5px !important; padding:9px" > 6430<input type="hidden" name="storeId" size="22" value="ContactsExpress.ca" > 6431<input type="submit" value="Submit" class="orange button button-border button-rounded center selectRX" style="margin:0px !important;"> 6432</form> 6433</div> 6434</div> --> 6435 6436<section class="footer__news"> 6437 <div class="container-fluid" style="max-width: 1440px;"> 6438 <div class="row"> 6439 <div class="col-12" style="text-align: center;"> 6440 <p class="footer__news-text mb-2">Subscribe to our mailing list for insider news, product launches, and more!</p> 6441 <form name="iterable_optin" action="//links.iterable.com/lists/publicAddSubscriberForm?publicIdString=8bb875c0-8350-4f8f-aca9-708820703470" target="_blank" method="POST" class="email" style="margin-bottom:0px"> 6442 <input aria-label="Enter Email" class="footer__news-input" type="text" name="email" size="22" onfocus="if(this.value===this.defaultValue){this.value='';}" onblur="if(this.value===''){this.value=this.defaultValue;}" placeholder="Enter email address" style="margin-right:5px !important; margin-bottom:5px !important;" > 6443 <input type="hidden" name="storeId" size="22" value="ContactsExpress.ca" > 6444 <input type="submit" value="Subscribe" class="footer__news-submit button selectRX" style="margin:0px !important;"> 6445 </form> 6446 </div> 6447 </div> 6448 </div> 6449</section> 6450 6451 <div class="container"> 6452 <!-- Footer Widgets 6453 ============================================= --> 6454 <div class="footer-widgets-wrap clearfix"> 6455 <div class="col_two_third"> 6456 <div class="col_one_third"> 6457 <div class="widget clearfix">
6458 <img src="/cart/images/shared/nav/contacts-express-logo-dark.svg" alt="Contacts Express Logo" style="width: 220px; margin-top: 0px; overflow: hidden;"> 6459 6460 <!--<p>We believe in <strong>Simple</strong>, <strong>Efficient</strong> & <strong>Affordable</strong>.</p>--> 6461 <div style="" class="topmargin-sm"> 6462 <a href="https://www.contactsexpress.ca/contactus" style="color:#444"> 6463 <address> 6464 510 Seymour St<br> 6465 Vancouver, BC V6B 3J5 6466 </address> 6467 </a> 6468 <a href="https://www.contactsexpress.ca/contactus" style="color:#444"><i class="icon-phone"></i> 1-833-487-5487</a><br> 6469 <a href="https://www.contactsexpress.ca/contactus" style="color:#444"><i class="icon-envelope"></i> <span class="__cf_email__" data-cfemail="215244535748424461424e4f5540425552445951534452520f4240">[email protected]</span></a> 6470 </div> 6471 </div> 6472 </div> 6473 <div class="col_one_third nav-links"> 6474 <div class="widget widget_links clearfix"> 6475 <h4>Customer Care</h4> 6476 <ul class="nomargin nopadding"> 6477 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/privacypolicy '>Privacy Policy</a></li> 6478 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/accessibility '>Accessibility</a></li> 6479 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/securitypolicy '>Security Policy</a></li> 6480 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/eye-care '>Care for your eyes</a></li> 6481 <li style="padding-left:0px; margin-left:0px"><a target=_blank href='https://www.contactsexpress.ca/contactus'>Feedback</a></li> 6482 6483 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/shipping' target='_blank'>Shipping</a></li> 6484 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/returnpolicy '>Return Policy</a></li> 6485 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/TAC '>Terms and Conditions</a></li> 6486 <li style="padding-left:0px; margin-left:0px"><a href="https://www.contactsexpress.ca/order-status">Order Status</a></li> 6487 </ul> 6488 </div> 6489 </div> 6490 <div class="col_one_third col_last nav-links"> 6491 <div class="widget widget_links clearfix"> 6492 <h4>Quick Links</h4> 6493 <ul class="nomargin nopadding"> 6494 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/how_to_buy_glasses_online'>How to Buy Glasses Online</a></li> 6495 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/face_shape_guide'>Face Shape Guide</a></li> 6496 <li style="padding-left:0px; margin-left:0px"><a href="https://www.contactsexpress.ca/glasses">Eyeglasses</a></li> 6497 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/sunglasses'>Sunglasses</a></li> 6498 <li style="padding-left:0px; margin-left:0px"><a href="https://www.contactsexpress.ca/glasses/readers">Readers</a></li> 6499 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/includes-polarized-lenses '>Polarized Lenses</a></li> 6500 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/product_listing '>Contact Lenses</a></li> 6501 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/saved_carts '>Place a Reorder</a></li> 6502 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/aboutus '>About Us</a></li> 6503 <li style="padding-left:0px; margin-left:0px"><a target=_blank href='https://www.contactsexpress.ca/contactus'>Contact Us</a></li> 6504 <li style="padding-left:0px; margin-left:0px"><a href='https://www.contactsexpress.ca/faq '>FAQ</a></li> 6505 6506 </ul> 6507<div id="google_translate_element" style=" padding-top: 10px;"></div>
vendor: 108 bytes, line 6507
6507<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
6507<script type="text/javascript"> 6508function googleTranslateElementInit() { 6509 new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'en,fr', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, autoDisplay: false}, 'google_translate_element'); 6510} 6511</script>
6511<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
6511 6512 </div> 6513 </div> 6514 </div> 6515 6516 6517 6518 6519 6520 <div class="col_one_third col_last"> 6521 6522<div class="widget subscribe-widget clearfix"> 6523<h4>Shop with confidence</h4> 6524<p>ContactsExpress.ca guarantees the lowest possible price on your contact lenses. On top of low prices, you will receive world class customer service and super fast shipping.</p> 6525</div> 6526<p><img src="/cart/images/flag_CAD.png" style="margin-right: 15px;" alt="flag" width="27px"> All prices are in CAD </p> 6527<div class="widget clearfix" style="margin-bottom: -40px;"> 6528<div class="row"> 6529<div class="col-6 clearfix bottommargin-sm"> 6530<a target="_blank" href="https://www.resellerratings.com/store/Contactsexpress_ca"> <img 6531 6532 style='border:none;' 6533 6534 src='//seals.resellerratings.com/seal.php?seller=28192' 6535 6536 oncontextmenu="alert('Copying Prohibited by Law'); return false;" 6537 6538 /></a> 6539<img src="/cart/images/secure_check.jpg" alt="Secure Check Logo" style="padding-top:20px"> 6540</div> 6541 6542<div class="col-6 clearfix"> 6543<img src="/cart/images/credit_cards_logo.png" alt="Credit Cards Logo" width="160px" style="padding-top:10px;"> 6544 6545</div> 6546<div class="col-6 clearfix"> 6547 6548</div> 6549 6550</div> 6551</div> 6552 6553</div> 6554 </div><!-- .footer-widgets-wrap end --> 6555 </div> 6556 6557 <!-- Copyrights 6558 ============================================= --> 6559 <div id="copyrights" style="background-color:#eeeeee"> 6560 <div class="container clearfix"> 6561 <div class="col_full nobottommargin"> 6562 Copyright © 2026 All Rights Reserved<br> 6563 <div class="copyright-links"><a href='https://www.contactsexpress.ca/TAC' class="nomargin">Terms of Use</a> <span class="middot">·</span> <a href='https://www.contactsexpress.ca/accessibility'>Accessibility</a> <span class="middot">·</span> <a href='https://www.contactsexpress.ca/privacypolicy'>Privacy Policy</a> <span class="middot">·</span> <a href='http://ir.kits.com' target="_blank">Investor Relations</a></div> 6564 <br/> 6565 <!--<p>The material provided on this site is for informational purposes only. Have your eyes examined regularly and always follow your eye care professional's instructions for the proper use and care of your contacts. If you experience any unexplained symptoms such as redness, watering, discharge, blurriness, pain or discomfort, discontinue use of contact lenses immediately and consult your eye care professional.</p> --> 6566 6567 </div> 6568 6569 </div> 6570 </div><!-- #copyrights end --> 6571 6572 6573 6574 6575 6576</footer><!-- #footer end --> 6577</div><!-- #wrapper end -->
6578<script src="https://www.resellerratings.com/productreviews/widget/javascript/Kits.js?sku="></script>
6578 6579<!-- UNBXD Analytics -->
6580<script type="text/javascript" src=" https://libraries.unbxdapi.com/sdk-clients/ss-unbxd-gcp-contactsexpress-ca-prod16621689373366/ua/ua.js"></script>
6580 6581 6582 6583
6584<script> 6585 $(".category").on("click", function() { 6586 if ($(this).attr("aria-expanded") === "true") { 6587 $(this).find(".collapse-icon").css("transform", "rotate(0deg)") 6588 } else { 6589 $(this).find(".collapse-icon").css("transform", "rotate(180deg)") 6590 } 6591 }) 6592</script>
6592 6593 6594 6595 6596 <!-- Go To Top 6597 ============================================= --> 6598 <!-- <div id="gotoTop" class="icon-angle-up"></div> --> 6599 6600 6601 <!-- Footer Scriptssss 6602 ============================================= --> 6603 6604
6604<script src="/js/kits/bootstrap-canvas-functions_unbxd.js"></script>
6604 6605 6606 6607
6607<script> 6608 $(document).ready(function(){ 6609 $.post("/ajax_adminupdates.html", {get_admin_promobanner: 1}, function(result){ 6610 //$("#adminmsg").html(result); 6611 $("body").prepend(result); 6612 }); 6613 }); 6614 </script>
vendor: 1 bytes, line 6614
6614
6615<script> 6616 window.intercomSettings = { 6617 api_base: "https://api-iam.intercom.io", 6618 app_id: "r60ufm3m", 6619 }; 6620</script>
6620 6621 6622
6623<script> 6624 // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/r60ufm3m' 6625 (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/r60ufm3m';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})(); 6626</script>
vendor: 1 bytes, line 6626
6626
6627<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e2b5a17465644f52950871ee3d695750","spa":2}' crossorigin="anonymous"></script>
6627 6628</body> 6629</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.